【机器学习基础】数学推导+纯Python实现机器学习算法22:最大熵模型
Python機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)
Author:louwill
Machine Learning Lab
? ? ?
最大熵原理(Maximum Entropy Principle)是一種基于信息熵理論的一般原理,在機(jī)器學(xué)習(xí)領(lǐng)域也有著廣泛的應(yīng)用價(jià)值。基于最大熵原理確定的分類模型也叫最大熵模型。所謂信息熵,即一種描述信息不確定程度的量。而最大熵方法認(rèn)為熵在由已知信息得到的約束條件下的最大化概率分布是充分利用已知信息并對(duì)未知部分作最少的假定的概率分布。
信息熵
已知一個(gè)離散型隨機(jī)變量,其信息熵可以定義為:
若為連續(xù)型隨機(jī)變量,其信息熵可定義為:
其中為分布函數(shù)的概率密度函數(shù),為離散點(diǎn)的概率分布。最大熵方法就是在給定約束條件下求得或使得熵達(dá)到最大值,其本質(zhì)上就是一個(gè)求解約束的最優(yōu)化問(wèn)題。
最大熵模型
假設(shè)目標(biāo)分類模型是一個(gè)條件概率分布,其中表示輸入,表示輸出,在給定輸入的情況下,以條件概率輸出。在給定訓(xùn)練數(shù)據(jù)集的情況下,學(xué)習(xí)的目標(biāo)就是選擇最大熵模型作為目標(biāo)模型。
在給定數(shù)據(jù)集的情況下,可以確定其聯(lián)合概率分布的經(jīng)驗(yàn)分布和邊緣概率分布的經(jīng)驗(yàn)分布。然后我們用特征函數(shù)來(lái)描述輸入輸出之間的一個(gè)事實(shí),的定義為一個(gè)0-1函數(shù),即與滿足某一事實(shí)時(shí)取值為1,否則取值為0。
特征函數(shù)關(guān)于經(jīng)驗(yàn)分布的期望值為:
特征函數(shù)關(guān)于模型經(jīng)驗(yàn)分布的期望值為:
如果模型能夠從已知數(shù)據(jù)中獲取足夠的信息,我們就可以假設(shè)上述兩個(gè)期望值相等,即有:
具體地:
上式即可作為最大熵模型學(xué)習(xí)的約束條件,如果有個(gè)特征函數(shù),即有個(gè)約束條件。
假設(shè)滿足上述特征函數(shù)構(gòu)造的約束條件的模型集合為,定義在模型集合中的條件熵最大的模型即為最大熵模型:
給定特征函數(shù)條件和概率約束條件的情況下,最大熵模型的學(xué)習(xí)等價(jià)于求解約束最優(yōu)化問(wèn)題:
將上述最大化問(wèn)題改寫為最小化問(wèn)題:
通過(guò)拉格朗日乘子法可將上述約束優(yōu)化轉(zhuǎn)化為無(wú)約束最優(yōu)化問(wèn)題,并將其原始問(wèn)題轉(zhuǎn)化為對(duì)偶問(wèn)題進(jìn)行求解,定義拉格朗日函數(shù):
最優(yōu)化的原始問(wèn)題為:
其對(duì)偶問(wèn)題為:
針對(duì)該對(duì)偶問(wèn)題的求解,我們可以先嘗試求解其內(nèi)部的極小化問(wèn)題,令:
其中:
將對(duì)求偏導(dǎo)并令為0,可解得:
其中:
由式表示的模型即為最大熵模型。
然后即可求解外部極大化問(wèn)題:
將其解記為:
最大熵模型可以歸結(jié)為對(duì)偶函數(shù)的極大化,優(yōu)化求解得到的即為最終的最大熵模型。
最大熵算法實(shí)現(xiàn)
最大熵模型求解本質(zhì)在于求解凸優(yōu)化問(wèn)題。本節(jié)就不針對(duì)該求解過(guò)程提供手寫算法實(shí)現(xiàn)。借助于maxentropy庫(kù)我們看以下最大熵模型的基本實(shí)現(xiàn)方式。
基于maxentropy的一個(gè)簡(jiǎn)單實(shí)現(xiàn)案例:
求解過(guò)程如下:
查看擬合參數(shù):
實(shí)際求解時(shí)模型也可能存在不收斂的情況,可以嘗試像BFGS等不同的優(yōu)化算法進(jìn)行求解。
參考資料:
李航 統(tǒng)計(jì)學(xué)習(xí)方法 第二版
https://pypi.org/project/maxentropy/
往期精彩:
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法21:馬爾科夫鏈蒙特卡洛
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法20:LDA線性判別分析
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法19:PCA降維
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法18:奇異值分解SVD
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法17:XGBoost
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法16:Adaboost
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法15:GBDT
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法14:Ridge嶺回歸
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法13:Lasso回歸
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法12:貝葉斯網(wǎng)絡(luò)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法11:樸素貝葉斯
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法10:線性不可分支持向量機(jī)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法8-9:線性可分支持向量機(jī)和線性支持向量機(jī)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法7:神經(jīng)網(wǎng)絡(luò)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法6:感知機(jī)
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法5:決策樹之CART算法
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法4:決策樹之ID3算法
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法3:k近鄰
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法2:邏輯回歸
數(shù)學(xué)推導(dǎo)+純Python實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法1:線性回歸
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯獲取一折本站知識(shí)星球優(yōu)惠券,復(fù)制鏈接直接打開(kāi):https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請(qǐng)掃碼進(jìn)群:總結(jié)
以上是生活随笔為你收集整理的【机器学习基础】数学推导+纯Python实现机器学习算法22:最大熵模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 川普签署的 H-1B 禁令昨日正式实施
- 下一篇: 【机器学习基础】数学推导+纯Python