【机器学习基础】数学推导+纯Python实现机器学习算法22:最大熵模型

Python机器学习算法实现

Author:louwill

Machine Learning Lab

     

最大熵原理(Maximum Entropy Principle)是一种基于信息熵理论的一般原理,在机器学习领域也有着广泛的应用价值。基于最大熵原理确定的分类模型也叫最大熵模型。所谓信息熵,即一种描述信息不确定程度的量。而最大熵方法认为熵在由已知信息得到的约束条件下的最大化概率分布是充分利用已知信息并对未知部分作最少的假定的概率分布。

信息熵

已知一个离散型随机变量,其信息熵可以定义为:

为连续型随机变量,其信息熵可定义为:

其中为分布函数的概率密度函数,为离散点的概率分布。最大熵方法就是在给定约束条件下求得使得熵达到最大值,其本质上就是一个求解约束的最优化问题。

最大熵模型

假设目标分类模型是一个条件概率分布,其中表示输入,表示输出,在给定输入的情况下,以条件概率输出。在给定训练数据集的情况下,学习的目标就是选择最大熵模型作为目标模型。
在给定数据集的情况下,可以确定其联合概率分布的经验分布和边缘概率分布的经验分布。然后我们用特征函数来描述输入输出之间的一个事实,的定义为一个0-1函数,即满足某一事实时取值为1,否则取值为0。
特征函数关于经验分布的期望值为:

特征函数关于模型经验分布的期望值为

如果模型能够从已知数据中获取足够的信息,我们就可以假设上述两个期望值相等,即有:

具体地:

上式即可作为最大熵模型学习的约束条件,如果有个特征函数,即有个约束条件。

假设满足上述特征函数构造的约束条件的模型集合为,定义在模型集合中的条件熵最大的模型即为最大熵模型:

给定特征函数条件和概率约束条件的情况下,最大熵模型的学习等价于求解约束最优化问题:


将上述最大化问题改写为最小化问题:


通过拉格朗日乘子法可将上述约束优化转化为无约束最优化问题,并将其原始问题转化为对偶问题进行求解,定义拉格朗日函数:

最优化的原始问题为:

其对偶问题为:

针对该对偶问题的求解,我们可以先尝试求解其内部的极小化问题,令:

其中:

求偏导并令为0,可解得:

其中:

由式表示的模型即为最大熵模型。

然后即可求解外部极大化问题:

将其解记为
最大熵模型可以归结为对偶函数的极大化,优化求解得到的即为最终的最大熵模型。

最大熵算法实现

最大熵模型求解本质在于求解凸优化问题。本节就不针对该求解过程提供手写算法实现。借助于maxentropy库我们看以下最大熵模型的基本实现方式。

基于maxentropy的一个简单实现案例:

import numpy as np
import maxentropy


samplespace = np.arange(6) + 1
model = maxentropy.Model(samplespace)
model.verbose = True


# 设置特征期望值
K = [4.5]
# 拟合最大熵模型
model.fit(f, K)

求解过程如下:

查看拟合参数:

model.params
array([ 0.37354745])

实际求解时模型也可能存在不收敛的情况,可以尝试像BFGS等不同的优化算法进行求解。

参考资料:

李航 统计学习方法 第二版

https://pypi.org/project/maxentropy/

往期精彩:

数学推导+纯Python实现机器学习算法21:马尔科夫链蒙特卡洛

数学推导+纯Python实现机器学习算法20:LDA线性判别分析

数学推导+纯Python实现机器学习算法19:PCA降维

数学推导+纯Python实现机器学习算法18:奇异值分解SVD

数学推导+纯Python实现机器学习算法17:XGBoost

数学推导+纯Python实现机器学习算法16:Adaboost

数学推导+纯Python实现机器学习算法15:GBDT

数学推导+纯Python实现机器学习算法14:Ridge岭回归

数学推导+纯Python实现机器学习算法13:Lasso回归

数学推导+纯Python实现机器学习算法12:贝叶斯网络

数学推导+纯Python实现机器学习算法11:朴素贝叶斯

数学推导+纯Python实现机器学习算法10:线性不可分支持向量机

数学推导+纯Python实现机器学习算法8-9:线性可分支持向量机和线性支持向量机

数学推导+纯Python实现机器学习算法7:神经网络

数学推导+纯Python实现机器学习算法6:感知机

数学推导+纯Python实现机器学习算法5:决策树之CART算法

数学推导+纯Python实现机器学习算法4:决策树之ID3算法

数学推导+纯Python实现机器学习算法3:k近邻

数学推导+纯Python实现机器学习算法2:逻辑回归

数学推导+纯Python实现机器学习算法1:线性回归

往期精彩回顾




适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑获取一折本站知识星球优惠券,复制链接直接打开:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群请扫码进群:
展开阅读全文
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值