1. 程式人生 > >白話機器學習演算法(九)樸素貝葉斯

白話機器學習演算法(九)樸素貝葉斯

樸素貝葉斯,確實很樸素,原理也很簡單,但是用途很厲害;很多涉及概率的機器學習演算法都要用到這些東西:最大似然估計(MLE),貝葉斯估計(最大後驗MAP),EM(也是最大似然估計,只是方法不同),最大熵;

先說點廢話,再寫點公式吧:

最大似然估計:我取什麼樣的引數,使得當前資料最有可能出現;

貝葉斯估計:我取什麼樣的結果使得錯誤估計最少   所謂後驗概率最大化就是期望風險最小,比如我判斷錯錯誤得到1分,判斷正確不得分,很多次判斷以後,我得分最少,這就是期望風險最小;

好了,上公式:X代表資料,Y代表類別 ,X的取值為x,Y的取值為y;

做貝葉斯前對於連續的取值要離散化,比如X是連續取值的,我要分段計算概率,就是離散化;這裡面還涉及一個平滑的問題,底下會說;

左邊代表已知資料的情況下,這個資料屬於哪個類別的概率大小

這就是貝葉斯的最原始形式,我們需要知道資料X=x的概率,類別Y=y的概率以及已知Y=y的條件下X=x概率;

這是全概率公式

代入以上式子得到


問題進一步化簡,即只要求Y=y的概率,以及已知Y=y的條件下X=x概率;用一個聯合概率(X,Y)表格來描述具體的細節會更清楚,公式到這裡還沒完,下面要說一個貝葉斯的強假設:

這個公式要求,是要求X的每個維度是統計獨立的,X是一個高維向量,(這個假設要求很高,一般資料達不到,可以用先用PCA去相關)雖然這個假設很強,但是能極大的方便我們去統計,我們不需要提前定義一個概率模型,比如像GMM一樣,我們先定義個模型然後去估計引數;

公式就變成了:

這就是最後的貝葉斯公式了

這個公式告訴我們,在用他之前,我們必須有


這兩個通過學習集合是比較好獲得的,將X的每個維度進行離散化算頻率,這個過程中統計出來不能讓他們為0,頻率可能為0,但是不能讓概率為0,這就需要引入一個拉普拉斯平滑;

關於拉普拉斯平滑,在吳軍的數學之美上有講到,在自然語言等很多方面都有應用,概率可以很小,但是不能為0,因為學習集不能代表全部,沒看到不代表不存在!很簡單的道理;

總結:樸素貝葉斯是一種生成模型,其本質是在訓練集上統計每一類的概率分佈,然後再反推,樸素的原因在於一個條件獨立強假設,為什麼要有這個假設,這個假設根本上是簡化了生成模型。

改天寫下貝葉斯網路;

最後我要推薦一本書,李航老師的《統計學習方法》,非常樸素的名字,樸素的封面,卻是深入淺出的講解,國內少有的好書!