用于分类问题
最大熵模型用于分类问题,其基本假设是:在满足约束条件的情况下,条件熵最大的模型就是最好的模型。正如一个著名的投资理念“鸡蛋不要放在一个篮子里”。
目标函数是条件熵,我们希望它最大,即条件概率的期望最大。
已知信息成为目标函数的约束,是客观存在的,必须得到满足。其它不作任何假设,越随机越合理。有多少个特征函数,就有多少个约束,再加上条件概率之和为 1 1 1。
认识条件熵
条件熵是熵的期望,它度量了我们的 Y Y Y 在知道了 X X X 以后的不确定性,条件熵定义的最原始形式是:
H ( Y ∣ X ) = ∑ x ∈ X p ( x ) H ( Y ∣ X = x ) H(Y|X)=\sum_{x\in X} p(x)H(Y|X=x) H(Y∣X)=x∈X∑p(x)H(Y∣X=x)
或者写成:
H ( Y ∣ X ) = ∑ i = 1 n p ( x i ) H ( Y ∣ X = x i ) H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)
条件熵表示在已知随机变量 X X X 的条件下, Y Y Y 的条件概率分布的熵对随机变量 X X X 的数学期望。熵是数学期望(信息量的数学期望),条件熵也是数学期望,是数学期望的数学期望,有点拗口,不妨把定义多看几遍,就清楚了。
这里又假设随机变量
Y
Y
Y 有
m
m
m 个取值,将
H
(
Y
∣
X
=
x
i
)
H(Y|X=x_i)
H(Y∣X=xi) 用定义式
H
(
Y
∣
X
=
x
i
)
=
−
∑
j
=
1
m
p
(
y
j
∣
X
=
x
i
)
log
p
(
y
j
∣
X
=
x
i
)
H(Y|X=x_i) = - \sum_{j=1}^{m} p(y_j|X=x_i)\log p(y_j|X=x_i)
H(Y∣X=xi)=−j=1∑mp(yj∣X=xi)logp(yj∣X=xi)
代入上式,得
KaTeX parse error: No such environment: eqnarray at position 8: \begin{̲e̲q̲n̲a̲r̲r̲a̲y̲}̲ H(Y|X) &=& \su…
即
H
(
Y
∣
X
)
=
∑
i
=
1
n
p
(
x
i
)
H
(
Y
∣
X
=
x
i
)
=
−
∑
i
=
1
n
p
(
x
i
)
∑
j
=
1
m
p
(
y
j
∣
x
i
)
log
p
(
y
j
∣
x
i
)
H(Y|X)=\sum_{i=1}^{n} p(x_i)H(Y|X=x_i) =-\sum_{i=1}^{n}p(x_i) \sum_{j=1}^{m} p(y_j|x_i) \log p(y_j|x_i)
H(Y∣X)=i=1∑np(xi)H(Y∣X=xi)=−i=1∑np(xi)j=1∑mp(yj∣xi)logp(yj∣xi)
条件熵即按一个新的变量的每个值对原变量进行分类,比如《统计学习方法》中将是否同意贷款按照申请人是否有自己的房子分为两类。然后在每一个小类里面,都计算熵,然后每一个熵乘以各个类别的概率,然后求和(加权求和)。我们用另一个变量对原变量分类后,原变量的不确定性就会减小了,因为新增了 Y Y Y 的信息,不确定程度减少了多少就是信息的增益。
经验条件熵如何计算: H ( D ∣ A ) H(D|A) H(D∣A)。
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲\begin{split} H…
决策树中条件熵和最大熵原理中的条件熵
决策树中特征选择,希望条件熵越小越好,这样信息增益就大,此时我们是在选最佳特征,是在已知特征中找最能把类标分清楚的特征。
在最大熵原理中,我们希望选择的模型“越平均越好”,选择的是概率模型,即在未知的概率模型中,选择一个除了满足已知信息以外,不做任何其它假设的概率模型,我们希望条件熵最大。
理解特征函数
输入 x x x 和输出 y y y 之间的关系,使用特征函数 f ( x , y ) f(x, y) f(x,y) 来表示,可以想象 x x x 取某个值的时候, y y y 就有一个值与之对应,它描述的是输入变量和输出变量的关系,用特征函数来刻画:
f ( x , y ) = { 1 , x 与 y 满 足 某 一 事 实 0 , 否 则 f(x,y)=\begin{cases} 1, & x 与 y 满足某一事实 \\ 0, & 否则 \\ \end{cases} f(x,y)={1,0,x与y满足某一事实否则
特征函数是把自变量和因变量的关系都考虑进去的函数。可以在皮果提的文章:最大熵学习笔记(三)最大熵模型 中找到具体的例子,理解特征函数的定义。
还可以参考这篇知乎问答:如何理解最大熵模型里面的特征?。
公式推导
1、计算两个经验分布,所谓经验分布,就是从训练数据集中统计出来的频率值。只要是经验分布,我们在表示概率的时候,都在上面加上“一弯”进行区别。从训练数据集可以得到:
(1)联合分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X) 的经验分布:
P
~
(
X
=
x
,
Y
=
y
)
=
v
(
X
=
x
,
Y
=
y
)
N
\widetilde P(X=x,Y=y) = \frac{v(X=x,Y=y)}{N}
P
(X=x,Y=y)=Nv(X=x,Y=y)
(2)边缘分布
P
(
X
)
P(X)
P(X) 的经验分布:
P
~
(
X
=
x
)
=
v
(
X
=
x
)
N
\widetilde P(X=x) = \frac{v(X=x)}{N}
P
(X=x)=Nv(X=x)
其中 $v(X=x,Y=y) $ 表示训练样本中 ( x , y ) (x,y) (x,y) 出现的频数; v ( X = x ) v(X=x) v(X=x) 表示训练数据集中输入 x x x 出现的频数, N N N 表示训练样本容量。
2、通过这两个经验分布,建立与特征函数和目标函数的等式,形成约束条件。因为 P ( x , y ) P(x,y) P(x,y) 未知,但是可以用 P ~ ( x , y ) \widetilde P(x,y) P (x,y) 代替,而 P ( y ∣ x ) P(y|x) P(y∣x) 为所求,又有 P ( x , y ) = P ( x ) P ( y ∣ x ) P(x,y)=P(x)P(y|x) P(x,y)=P(x)P(y∣x), P ( x ) P(x) P(x) 也未知,但是可以用 P ~ ( x ) \widetilde P(x) P (x) 代替,于是就有:
(1)特征函数
f
(
x
,
y
)
f(x,y)
f(x,y) 关于经验分布(训练数据集的分布)$\widetilde P(X,Y) $ 的期望值:
E
P
~
(
f
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
E_{\widetilde P}(f) = \sum_{x,y}\widetilde P(x,y)f(x,y)
EP
(f)=x,y∑P
(x,y)f(x,y)
(2)特征函数 f ( x , y ) f(x,y) f(x,y) 关于模型 P ( Y ∣ X ) P(Y|X) P(Y∣X) 与经验分布 $\widetilde P(X) $ 的期望值:
E P ( f ) = ∑ x , y P ~ ( x ) P ( y ∣ x ) f ( x , y ) E_{P}(f) =\sum_{x,y} \widetilde P(x)P(y|x)f(x,y) EP(f)=x,y∑P (x)P(y∣x)f(x,y)
如果模型能够获取从训练数据集中的信息,那么就可以假设这两个期望值相等。
E P ( f ) = E P ~ ( f ) E_{P}(f) = E_{\widetilde P}(f) EP(f)=EP (f)
即:
∑
x
,
y
P
~
(
x
)
P
(
y
∣
x
)
f
(
x
,
y
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
\sum_{x,y} \widetilde P(x)P(y|x)f(x,y) = \sum_{x,y}\widetilde P(x,y)f(x,y)
x,y∑P
(x)P(y∣x)f(x,y)=x,y∑P
(x,y)f(x,y)
上面的两个等式作为条件概率的最大熵的约束条件。如果有 n n n 个特征函数,那么就有 n n n 个约束条件。
于是最大熵模型就可以表示成:
1、目标函数:条件熵,最优化的方向是使其最大。
2、约束条件:
(1)有多少个特征函数,就有多少个约束条件。
(2)条件概率之和为 1。
3、有约束的最大化问题可以使用拉格朗日乘子法。
引入拉格朗日乘子,写出拉格朗日函数。接下来的步骤和 SVM 是一样的。
利用拉格朗日对偶性,求解对偶问题。即:原始问题是 $ \min_p \max_w$ 的,对偶问题是
max
w
min
p
\max_w \min_p
maxwminp 的。
最大熵模型的学习可以归结为对偶函数的极大化问题。对偶函数的极大化等价于最大熵模型的极大似然估计。
总结:
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
=
∑
x
,
y
P
(
x
,
y
)
f
(
x
,
y
)
\sum_{x,y}\widetilde P(x,y)f(x,y) = \sum_{x,y}P(x,y)f(x,y)
x,y∑P
(x,y)f(x,y)=x,y∑P(x,y)f(x,y)
左边
E
P
~
(
f
)
=
∑
x
,
y
P
~
(
x
,
y
)
f
(
x
,
y
)
E_{\widetilde P}(f) = \sum_{x,y}\widetilde P(x,y)f(x,y)
EP
(f)=x,y∑P
(x,y)f(x,y) 表示特征函数
f
(
x
,
y
)
f(x,y)
f(x,y) 在训练数据集上关于经验分布
P
~
(
x
,
y
)
\widetilde P(x,y)
P
(x,y) 的数学期望;
右边 E P ( f ) = ∑ x , y P ( x , y ) f ( x , y ) E_{P}(f) =\sum_{x,y}P(x,y)f(x,y) EP(f)=x,y∑P(x,y)f(x,y) 表示特征函数 f ( x , y ) f(x,y) f(x,y) 在模型上关于理论分布 P ( x , y ) P(x,y) P(x,y) 的数学期望。
下面是我的手写笔记:
最大熵模型的优点
最大熵模型在分类方法里算是比较优的模型,但是由于它的约束函数的数目一般来说会随着样本量的增大而增大,导致样本量很大的时候,对偶函数优化求解的迭代过程非常慢,scikit-learn 甚至都没有最大熵模型对应的类库。但是理解它仍然很有意义,尤其是它和很多分类方法都有千丝万缕的联系。
最大熵模型的优点有:
1、最大熵统计模型获得的是所有满足约束条件的模型中条件熵极大的模型,作为经典的分类模型时准确率较高;
2、可以灵活地设置约束条件,通过约束条件的多少可以调节模型对未知数据的适应度和对已知数据的拟合程度。
最大熵模型的缺点
由于约束函数数量和样本数目有关系,导致迭代过程计算量巨大,实际应用比较难。
参考资料
[1] 李航. 统计学习方法(第 2 版)第 6 章“最大熵模型”. 北京:清华大学出版社,2019.
[2] 吴军. 数学之美(第 20 章“不要把鸡蛋放到一个篮子里”). 北京:人民邮电出版社,2012.
[3]皮果提的系列文章:
最大熵学习笔记(零)目录和引言
最大熵学习笔记(一)预备知识
最大熵学习笔记(二)最大熵原理
最大熵学习笔记(三)最大熵模型
最大熵学习笔记(四)模型求解
最大熵学习笔记(五)最优化算法
最大熵学习笔记(六)优缺点分析
以下为草稿,我自己留着备用,读者可以忽略,欢迎大家批评指正。
参考资料
函数 y = x − 1 y = x - 1 y=x−1 与 y = l n ( x ) y = ln(x) y=ln(x) 的图像:
1、温暖的蛋壳:最大熵模型
地址:http://47.96.227.134/index.php/2018/06/17/maxentropy/
说明:这篇文章指出了:最大熵模型是一种很抽象的描述,在不同的场景和业务中我们可能需要定义不同的特征函数求出对应的权重值,来解决不同的问题。
2、码农场:逻辑斯谛回归与最大熵模型
地址:http://www.hankcs.com/ml/the-logistic-regression-and-the-maximum-entropy-model.html
3、统计学习方法|最大熵原理剖析及实现
地址:https://www.pkudodo.com/2018/12/05/1-7/
4、白马负金羁:最大熵模型(MaxEnt):万法归宗(上)
5、李航·统计学习方法笔记·第6章 logistic regression与最大熵模型(2)·最大熵模型
6、马同学:如何理解拉格朗日乘子法?
7、自然语言处理之一:最大熵模型
8、李航统计学习-最大熵模型之我的理解
9、最大熵原理
10、最大熵与逻辑回归的等价性
12、统计学习-逻辑回归(LR)和最大熵模型
13、机器学习——最大熵原理
14、最大熵模型与GIS ,IIS算法
15、机器学习笔记(二十)——求解最大熵模型
在机器学习中, P P P 往往用来表示样本的真实分布,比如 [ 1 , 0 , 0 ] [1,0,0] [1,0,0] 表示当前样本属于第一类。 Q Q Q 用来表示模型所预测的分布,比如 [ 0.7 , 0.2 , 0.1 ] [0.7,0.2,0.1] [0.7,0.2,0.1]。即 P P P 表示真实类别的独热编码, Q Q Q 表示预测的概率分布。
16、机器学习笔记(十九)——最大熵原理和模型定义
17、一步一步理解最大熵模型
18、李航·统计学习方法笔记·第6章 logistic regression与最大熵模型(2)·最大熵模型
(本节完)