算法 - 从观察中找到 HMM 的顺序
Algorithm - finding the order of HMM from observations
我得到的数据由 N
个可变长度的隐藏变量序列及其相应的观察变量组成(即,我有每个序列的隐藏变量和观察变量)。
有没有办法找到此数据的 "best" HMM 模型的 K
阶数,而无需穷举搜索? (合理的启发式也是合法的)。
我觉得大家可能对"order"这个词有误解:
一阶 HMM 是一种转移矩阵只依赖于先前状态的 HMM。二阶 HMM 是一种 HMM,其转换矩阵仅取决于前两个状态,依此类推。随着阶数的增加,该理论得到 "thicker"(即方程式),并且在主流库中很少实现这种复杂模型。
使用关键字 "second-order HMM" 在您最喜欢的浏览器上进行搜索,您将找到有关这些模型的有意义的读物。
如果按顺序你指的是状态的数量,并且假设你使用分配给每个状态的单一分布(即,你不使用混合分布的 HMM)那么,实际上你需要的唯一超参数tune 是状态数。
您可以使用 Bayesian Information Criterion, the Akaike Information Criterion, or the Minimum Message Length Criterion 等基于模型似然计算的标准来估计最佳状态数。通常,使用这些标准需要训练多个模型,以便能够计算一些有意义的似然结果以进行比较。
如果您只是想对一个可能不是最优的 K
值有一个模糊的概念,k 均值聚类与解释的方差百分比相结合可以解决问题:如果 X 个聚类解释如果超过,比方说,训练集中观察值的 90% 方差,那么使用 X 状态 HMM 是一个好的开始。前 3 个标准很有趣,因为它们包含一个与模型参数数量相关的惩罚项,因此可以防止过度拟合。
当使用基于混合的 HMM 时,也可以应用这些标准,在这种情况下,有更多的超参数需要调整(即状态数和混合模型的分量数)。
我得到的数据由 N
个可变长度的隐藏变量序列及其相应的观察变量组成(即,我有每个序列的隐藏变量和观察变量)。
有没有办法找到此数据的 "best" HMM 模型的 K
阶数,而无需穷举搜索? (合理的启发式也是合法的)。
我觉得大家可能对"order"这个词有误解: 一阶 HMM 是一种转移矩阵只依赖于先前状态的 HMM。二阶 HMM 是一种 HMM,其转换矩阵仅取决于前两个状态,依此类推。随着阶数的增加,该理论得到 "thicker"(即方程式),并且在主流库中很少实现这种复杂模型。 使用关键字 "second-order HMM" 在您最喜欢的浏览器上进行搜索,您将找到有关这些模型的有意义的读物。
如果按顺序你指的是状态的数量,并且假设你使用分配给每个状态的单一分布(即,你不使用混合分布的 HMM)那么,实际上你需要的唯一超参数tune 是状态数。
您可以使用 Bayesian Information Criterion, the Akaike Information Criterion, or the Minimum Message Length Criterion 等基于模型似然计算的标准来估计最佳状态数。通常,使用这些标准需要训练多个模型,以便能够计算一些有意义的似然结果以进行比较。
如果您只是想对一个可能不是最优的 K
值有一个模糊的概念,k 均值聚类与解释的方差百分比相结合可以解决问题:如果 X 个聚类解释如果超过,比方说,训练集中观察值的 90% 方差,那么使用 X 状态 HMM 是一个好的开始。前 3 个标准很有趣,因为它们包含一个与模型参数数量相关的惩罚项,因此可以防止过度拟合。
当使用基于混合的 HMM 时,也可以应用这些标准,在这种情况下,有更多的超参数需要调整(即状态数和混合模型的分量数)。