信息论里,熵是可以度量随机变量的不确定性的,已经证明的:当随机变量呈均匀分布的时候,熵值最大,一个有序的系统有着较小的熵值,无序系统的熵值则较大。

机器学习里面,最大熵原理假设:描述一个概率分布的时候,在满足所有约束条件的情况下,熵值最大的模型是最好的。

我们假设:对于离散随机变量x,假设x有M哥取值,记

最大熵阀值分割Python python 最大熵模型_最大熵模型

,那么他的熵就被定义为:

最大熵阀值分割Python python 最大熵模型_最大熵阀值分割Python_02

对于连续变量x,假设他的概率密度函数是

最大熵阀值分割Python python 最大熵模型_人工智能_03

,那么,他的熵就是:

最大熵阀值分割Python python 最大熵模型_人工智能_04

首先,看最大熵模型的导出:

和之前一样,给定一个大小为m的集合:

最大熵阀值分割Python python 最大熵模型_最大熵模型_05

假设输入变量为X,输出变量是Y,用频率来代替概率,可以估计出X的边缘分布和

最大熵阀值分割Python python 最大熵模型_机器学习_06

的联合分布为:

最大熵阀值分割Python python 最大熵模型_最大熵模型_07

其中,

最大熵阀值分割Python python 最大熵模型_人工智能_08


最大熵阀值分割Python python 最大熵模型_人工智能_09

分别表示训练样本中

最大熵阀值分割Python python 最大熵模型_最大熵阀值分割Python_10

的出现的频数和X=x出现的频数,在样本量足够大的情况下,我们可以认为

最大熵阀值分割Python python 最大熵模型_机器学习_11

反映了真实的样本分布,基于这个,最大熵模型可以用条件熵来进行建模,而非最大熵原理中一般意义上的熵,这样就间接起到了缩小模型假设空间的作用。

最大熵阀值分割Python python 最大熵模型_最大熵阀值分割Python_12

根据定义,最大熵模型是在满足一定约束条件下熵最大的模型,其思路就是:从样本集合在使用特征函数

最大熵阀值分割Python python 最大熵模型_机器学习_13

来抽取特征,然后希望特征函数

最大熵阀值分割Python python 最大熵模型_机器学习_13

关于经验联合分布

最大熵阀值分割Python python 最大熵模型_机器学习_15

的期望,等于特征函数

最大熵阀值分割Python python 最大熵模型_机器学习_13

关于模型

最大熵阀值分割Python python 最大熵模型_人工智能_17

和经验边缘分布

最大熵阀值分割Python python 最大熵模型_机器学习_11

的期望。

特征函数关于经验联合分布的期望定义为:

最大熵阀值分割Python python 最大熵模型_机器学习_19

 特征函数

最大熵阀值分割Python python 最大熵模型_机器学习_13

关于模型

最大熵阀值分割Python python 最大熵模型_人工智能_17

和经验边缘分布

最大熵阀值分割Python python 最大熵模型_机器学习_11

的期望:

最大熵阀值分割Python python 最大熵模型_机器学习_23

也就是希望:

最大熵阀值分割Python python 最大熵模型_人工智能_24

我们称

最大熵阀值分割Python python 最大熵模型_最大熵模型_25

为乘法准则,最大熵模型的约束希望在不同的特征函数

最大熵阀值分割Python python 最大熵模型_机器学习_13

下通过估计

最大熵阀值分割Python python 最大熵模型_人工智能_17

的参数来满足乘法准则。那么,最大熵模型的学习过程就可以转换成一个最优化问题的求解过程,就是在给定若干特征提取函数

最大熵阀值分割Python python 最大熵模型_最大熵模型_28

以及y的所有可能值集合C的条件下,求解:

最大熵阀值分割Python python 最大熵模型_机器学习_29

把这个最大化问题转换成最小化问题,即min-H(p),可以用拉格朗日乘子法来求解:

最大熵阀值分割Python python 最大熵模型_最大熵阀值分割Python_30

其中的Omega是映入的拉格朗日乘子,通过最优化

最大熵阀值分割Python python 最大熵模型_最大熵模型_31

,可以得到:

最大熵阀值分割Python python 最大熵模型_最大熵模型_32

其中,

最大熵阀值分割Python python 最大熵模型_机器学习_33

最大熵模型和逻辑回归之间的关系:对于多分类问题(k不小于2),我们可以定义

最大熵阀值分割Python python 最大熵模型_python_34

,那么:

最大熵阀值分割Python python 最大熵模型_最大熵阀值分割Python_35

其中:

最大熵阀值分割Python python 最大熵模型_机器学习_36

这时,,最大熵模型等价于多分类逻辑回归。

最大熵模型可以通过拟牛顿法,梯度下降法等方法学习。

然后我们来看一下书上给额度利用逻辑回归模型实现乳腺癌的预测:

from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
cancer=load_breast_cancer()
x_train,x_test,y_train,y_test=train_test_split(cancer.data,cancer.target,test_size=0.2)
model=LogisticRegression()
model.fit(x_train,y_train)
train_score=model.score(x_train,y_train)
test_score=model.score(x_test,y_test)
print("train score:{train_score:.6f};test score:{test_score:.6f}".format(train_score=train_score,test_score=test_score))


最大熵阀值分割Python python 最大熵模型_人工智能_37

图1:结果展示