赞
踩
信息论里,熵是可以度量随机变量的不确定性的,已经证明的:当随机变量呈均匀分布的时候,熵值最大,一个有序的系统有着较小的熵值,无序系统的熵值则较大。
机器学习里面,最大熵原理假设:描述一个概率分布的时候,在满足所有约束条件的情况下,熵值最大的模型是最好的。
我们假设:对于离散随机变量x,假设x有M哥取值,记,那么他的熵就被定义为:
对于连续变量x,假设他的概率密度函数是,那么,他的熵就是:
首先,看最大熵模型的导出:
和之前一样,给定一个大小为m的集合:假设输入变量为X,输出变量是Y,用频率来代替概率,可以估计出X的边缘分布和的联合分布为:
其中,和分别表示训练样本中的出现的频数和X=x出现的频数,在样本量足够大的情况下,我们可以认为反映了真实的样本分布,基于这个,最大熵模型可以用条件熵来进行建模,而非最大熵原理中一般意义上的熵,这样就间接起到了缩小模型假设空间的作用。
根据定义,最大熵模型是在满足一定约束条件下熵最大的模型,其思路就是:从样本集合在使用特征函数来抽取特征,然后希望特征函数关于经验联合分布的期望,等于特征函数关于模型和经验边缘分布的期望。
特征函数关于经验联合分布的期望定义为:
特征函数关于模型和经验边缘分布的期望:
也就是希望:
我们称为乘法准则,最大熵模型的约束希望在不同的特征函数下通过估计的参数来满足乘法准则。
那么,最大熵模型的学习过程就可以转换成一个最优化问题的求解过程,就是在给定若干特征提取函数以及y的所有可能值集合C的条件下,求解:
把这个最大化问题转换成最小化问题,即min-H(p),可以用拉格朗日乘子法来求解:
其中的Omega是映入的拉格朗日乘子,通过最优化,可以得到:
其中,
最大熵模型和逻辑回归之间的关系:对于多分类问题(k不小于2),我们可以定义,那么:
其中:
这时,,最大熵模型等价于多分类逻辑回归。
最大熵模型可以通过拟牛顿法,梯度下降法等方法学习。
然后我们来看一下书上给额度利用逻辑回归模型实现乳腺癌的预测:
- 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))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。