【机器学习】【最大熵模型】统计学原理

每条数据包含有若干个特征xi,模型需要计算数据属于y个类别的概率,然后取最大概率对应类别y作为该数据的归属类别。

假设,全体数据中包含有N个特征可用于分类,每个特征对于决定将数据分为哪类的贡献不同。举例来说,在分词场景中,"中华民族伟大复兴"中的“华”字具有3个特征“中华”、“华”、“华民”,其中:
(1)特征“中华”对于将“华”分属于各类的概率有:S=0.001, B=0.001, E=0.13, M=0.85
(2)特征“华”对于将“华”分属于各类的概率有:S=0.001, B=0.13, E=0.25, M=0.65
(3)特征“华民”对于将“华”分属于各类的概率有:S=0.000, B=0.00, E=0.005, M=0.995
而“华”字所不具有的其余N-3个特征不会对将“华”字分为哪类产生影响。

最大熵模型主要是对P(Y|X)建模,因为X=(x1,x2,...,xn),Y=(y1,y2,...,ym),给定任意的X,可以根据其包含的特征对(xi,yj)计算出X归属于各个类别Y的概率,其本质是一个概率模型,遵从朴素贝叶斯公式:

给定一个特征x,它从属与y类的条件概率:P(y|x) = (P(x|y) * P(y)) / P(x),所以,给定一个组特征X={x1,x2,...,xn},它从属于y类的条件概率:
P(y|X) = P(y|x1,x2,...,xn) = (P(X|y) * P(y)) / P(X) = (P(x1,x2,...,xn|y) * P(y)) / P(x1,x2,...,xn),
又因为特征的独立分布假设,有:
P(x1,x2,...,xn|y) = P(x1|y)P(x2|y)...* P(xn|y),
P(x1,x2,...,xn) = P(x1)P(x2)...P(xn),
因此:
P(y|X) = (P(x1|y)
P(x2|y)... P(xn|y) * P(y)) / (P(x1)P(x2)...*P(xn)),
所以,未知全部转化为已知,可以求解。

值得注意的是,在P(y|X)公式中,P(xi|y)最为关键,它的值为样本空间中(xi,y)的数目除以y的特征总数目。

在最大熵模型中,使用特征函数fi()唯一标识一个特征对(xi,y),通过给特征函数赋予不同的权值wi,决定了特征对(xi,y)对将数据分类为y的贡献大小。

对于本例,计算“华”字的分类,即为计算在三个特征下的条件概率:p(y|X) = p(y|X={华”、“华”、“华民”}),而各个特征间是相互独立的,

最大熵模型中的f(x,y)中的x是单独的一个特征,不是一个n维特征向量。训练过程中,认为训练样本中出现过的特征对(x,y)其f(x,y)=1,未出现的特征对(x,y)其f(x,y)=0。

可以看出,f(x,y)实际上表达了一种先验知识,标识着训练样本中某特征是否存在,不存在的特征因为其f(x,y)为0,这些特征在后续的概率分布期望计算过程中被忽略,不参与模型的训练,以满足模型的熵最大。

计算模型期望需要首先求p(y|X),这个条件概率可以通过简单地将所有(x,y)符合的fi(x,y)和对应的参数lambda_i乘起来后相加。

归一化因子是各个输出标签y的p(y|x)的总和。在求得p(y|X)后,要求E_q(f_i),只需要枚举所有符合f_i的(x,y)对应的p(y|x),乘以x出现的次数再除以N就可以。

你可能感兴趣的:(【机器学习】【最大熵模型】统计学原理)