马尔可夫模型中的参数数量


12

我想将BIC用于HMM模型选择:

BIC = -2*logLike + num_of_params * log(num_of_data)

因此,如何计算HMM模型中的参数数量。考虑一个简单的2状态HMM,其中具有以下数据:

data = [1 2 1 1 2 2 2 1 2 3 3 2 3 2 1 2 2 3 4 5 5 3 3 2 6 6 5 6 4 3 4 4 4 4 4 4 3 3 2 2];
model = hmmFit(data, 2, 'discrete');
model.pi = 0.6661    0.3339;
model.A = 
    0.8849    0.1151
    0.1201    0.8799
model.emission.T = 
    0.2355    0.5232    0.2259    0.0052    0.0049    0.0053
    0.0053    0.0449    0.2204    0.4135    0.1582    0.1578
logLike = hmmLogprob(model,data);
logLike =  -55.8382

所以我认为:

Nparams = size(model.A,2)*(size(model.A,2)-1) + 
          size(model.pi,2)-1) + 
          size(model.emission.T,1)*(size(model.emission.T,2)-1)
Nparams = 13

因此,最后我们有:

BIC = -2*logLike + num_of_params*log(length(x))
BIC = 159.6319

我找到了一种解决方案,其中的公式num_of_params(用于简单的马尔可夫模型)如下所示:

Nparams = Num_of_states*(Num_of_States-1) - Nbzeros_in_transition_matrix

那么正确的解决方案是什么?我是否必须考虑过渡矩阵或发射矩阵的零概率?

====自2011年7月15日起更新====

我认为我可以澄清数据维度的影响(使用“高斯混合分布”示例)

X是一个n×d矩阵,其中(n行对应于观测; d列对应于变量(N维)。

X=[3,17 3,43
   1,69 2,94
   3,92 5,04
   1,65 1,79
   1,59 3,92
   2,53 3,73
   2,26 3,60
   3,87 5,01
   3,71 4,83
   1,89 3,30 ];
[n d] = size(X); 
n = 10; d =2;

该模型将具有以下用于GMM的参数:

nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * Ndimensions  %for daigonal covariance matrices
nParam = (k_mixtures – 1) + (k_mixtures * NDimensions ) + k_mixtures * NDimensions * (NDimensions+1)/2; %for full covariance matrices

如果将X视为一维数据,则比我们拥有的多num_of_data = (n*d),因此对于二维数据,我们有num_of_data = n

二维数据:nParam = 11; logLike = -11.8197; BIC = 1.689

一维数据:nParam = 5; logLike = -24.8753; BIC = -34.7720

我对HMM的练习很少。具有(5000、6000和更多参数)的HMM是否正常?


您有使用BIC的理由吗?如果没有适当的假设,它可能会给出可怕的错误结果。
suncoolsu 2011年

@suncoolsu,您指的是什么意思?我发现了一些基于BIC评分的K集群(GMM模型)选择的示例。可能我在比较两个具有不同输入数据(尺寸)的模型时提供了错误的示例。
谢尔盖(Sergey)

1
我的意思是仅在假设真实模型位于模型空间中的情况下才使用BIC 。可能在您的情况下是合理的。我同意您的看法,人们像AIC一样使用BIC,但两者是完全不同的!
suncoolsu 2011年

嗨,这是最新的评论,希望您仍然活跃,但是获取模型中参数数量的最佳方法是什么?
masfenix 2014年

Answers:


7

问题是过渡矩阵和/或发射矩阵中的某些参数是否一开始就固定。您的(参数数量)计算看起来正确。如果出于某种原因要使用3状态模型而不是2状态模型并预先决定不允许从状态1到3以及从3到1的转换(概率为0),则在计算时必须考虑到这一点参数的数量。


我是否必须考虑数据维度?如果size(data)是2x100,怎么办
Sergey

@Sergey,我只看了答案中参数数量的计算。为了完整性,我也应该考虑如何计算数据集的“大小”,因为您对BIC感兴趣。老实说,我只看到了独立数据的BIC派生,但我的猜测是,数据的正确“大小”是数据序列的长度。我不确定大小为2x100的意思。如果要对此发表评论,则必须对如何将数据编码为2 x 100矩阵进行更精确的描述。
NRH

感谢您的回答,我想我明白在BIC的数据维度的影响,请看看我的更新
谢尔盖

是否需要减少带有三角过渡矩阵的左右(Bakis)HMM模型中的参数数量?使用(5000、6000和更多参数)的HMM是否正常?
谢尔盖(Sergey)

4

当我们在模型选择BIC中计算自由参数的数量时,这意味着它只是转换和发射矩阵中零的数量。例如,当过渡矩阵中的值为零时-这意味着某个状态不会移至下一状态(由过渡矩阵定义)的可能性。这就是BIC为HMM选择最佳状态的方式。但是,仅使用初始矩阵,过渡矩阵和发射矩阵的大小来获取自由参数的数量是令人困惑的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.