如何处理概率图模型中的高维特征向量?

机器算法验证 机器学习 特征选择 隐马尔可夫模型 大数据 特征工程
2022-04-15 12:07:17

我正在做一些与 NLP 相关的工作,包括训练一个隐藏的马尔可夫模型,并使用该模型来分割句子。对于每个句子,我将标记转换为特征向量。特征是我手动挑的,暂时只能想到20个特征。所有功能都是二进制的。所以在我的例子中,一个示例特征向量就像:

[0, 0, 1, 1, 0…] 

在训练 HMM(具有最大似然估计的监督学习)时,我将二进制特征向量转换为整数,并将整数用作 HMM 中的观察值。我的问题是,如果我有更多维度的特征,比如 100 个特征,那么在训练 HMM 时将特征向量映射到整数可能是不可能或有效的。如果特征不是二进制的怎么办。这些问题有哪些常见的解决方案/最佳实践?

PS 我做了一些研究,发现一种解决方案是使用 K-Means 来查找特征向量的集群,并将每个集群视为 HMM 中的单个观察值(也称为向量量化)。但我认为这不是最好的解决方案。

4个回答

隐马尔可夫模型由两种不同的概率分布定义,即

p(stst1),the transition probabilities, andp(xtst),the emission probabilities.
在 HMM 的典型表示中,发射概率被认为是分类的,因为如果序列中的每个观察都是一个词,这是自然选择。

您可以轻松修改排放分布以处理其他类型的观测。例如,如果您的观察是一个连续向量,那么假设是具有状态相关均值向量和协方差矩阵的多元正态分布可能是有意义的,即xtp(xt|st)

xtstN(μst,Σst).

另一方面,如果是二元向量,您可能想要做出条件独立假设(就像您对朴素贝叶斯所做的那样)并假设xt

p(xtst)=i=1np(xtist)=i=1n(θstiI{xti=1}+(1θsti)I{xti=0}).

这些只是您会看到人们使用的一些常见发行版。只要您可以计算所需的值并学习参数,您就可以真正使用任何您想要的东西。

如果您认为观察结果与观察结果相互作用,伯克利提出了一个非常优雅的带有特征模型的 HMM,它可能对您有用。

ee幻灯片

我和我的合作者最近实现了这个算法尽管目前它主要是为教育应用程序编写的,但它足以让您入门。

您应该查看Microsoft Research 的 Ralf Herbrich 和 Thore Graepel 提出的TrueSkill模型。(该页末尾列出了一些相关论文,其中给出了一些实现细节。)简单地说,TrueSkill 使用图形模型进行非常大规模的学习。它能够处理具有数百万特征的非常大的数据集,包括名义特征和数值特征。