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

机器算法验证 机器学习 模型比较 比克 隐马尔可夫模型
2022-03-24 08:08:58

我想使用 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 列对应于变量 (Ndimensions)。

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 视为1 维数据,则我们拥有num_of_data = (n*d),因此对于我们拥有的2 维数据num_of_data = n

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

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

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

2个回答

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

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