機器學習算法篇——樸素貝葉斯(Naive Bayesian Model,NBM)

機器學習算法篇——樸素貝葉斯(Naive Bayesian Model,NBM)

介紹:

貝葉斯決策就是在不完全情報下,對部分未知的狀態用主觀概率估計,然後用貝葉斯公式對發生概率進行修正,最後再利用期望值和修正概率做出最優決策。

貝葉斯公式:

P(Y|X)= P(X|Y)P(Y)/P(X)

P(Y)叫做先驗概率,P(Y|X)叫做後驗概率。就這一行,感覺信息量很小,沒關係,我們用機器學習的角度去理解一下。這裡我套用我導師寒小陽老師講的來擴展一下:

我們把X理解成“具有某種特徵”,把Y理解成“類別標籤”。在最簡單的二分類問題下,我們將Y理解成“屬於某類別”的標籤。於是貝葉斯公式就變形成了下面的樣子:

P(“屬於某類別”|“具有某種特徵”) = P(“具有某種特徵”|“屬於某類別”)P(“屬於某類別”)/P(“具有某種特徵”)

是不是有點感覺了,如果沒有,我們再用語文老師的口氣來解釋一下:

P(“屬於某類別”|“具有某種特徵”)=在已知某樣本“具有某種特徵”的條件下,該樣本“屬於某類別”的概率。所以叫做‘後驗概率’。

P(“具有某種特徵”|“屬於某類別”)=在已知某樣本“屬於某類別”的條件下,該樣本“具有某種特徵”的概率。

P(“屬於某類別”)=在未知某樣本“具有某種特徵”的條件,該樣本“屬於某類別”的概率。所以叫做‘先驗概率’。

P(“具有某種特徵”)=在未知某樣本“屬於某類別”的條件下,該樣本“具有某種特徵”的概率。

二分類問題的最終目的就是要判斷P(“屬於某類別”|“具有某種特徵”)是否大於1/2就夠了。貝葉斯方法把計算“具有某種特徵的條件下屬於某類別”的概率轉換成需要計算“屬於某類別的條件下具有某種特徵”的概率,後者獲取方法就簡單多了,我們只要找到一些包含已知特徵標籤的樣本,即可進行訓練。而樣本的類別標籤都是明確的,所以貝葉斯方法在機器學習裡屬於有監督學習方法。

應用:

很多場合用到,比如郵件分類,新聞分類,病人分類,廣告過濾,和諧聊天記錄等等,今天我們舉個垃圾郵件過濾的例子來深入理解一下。

舉例說明:

這個例子是我當時上課時的例子,印象非常深刻,直接拿來用:

現在要對郵件進行分類,識別垃圾郵件和普通郵件,如果我們選擇使用樸素貝葉斯分類器,那目標就是判斷P(“垃圾郵件”|“具有某特徵”)是否大於1/2。現在有垃圾郵件和正常郵件各1萬封作為訓練集。需要判斷以下這個郵件是否屬於垃圾郵件:

“我司可辦理正規發票”

也就是判斷概率P(“垃圾郵件”|“我司可辦理正規發票(保真)17%增值稅發票點數優惠!”)是否大於1/2。

有木有發現,轉換成的這個概率,計算的方法:就是寫個計數器,然後+1 +1 +1統計出所有垃圾郵件和正常郵件中出現這句話的次數!公式表示:

P(“垃圾郵件”|“我司可辦理正規發票”) =垃圾郵件中出現這句話的次數 / 垃圾郵件中出現這句話的次數 + 正常郵件中出現這句話的次數

但是現實是殘酷的,騙子是聰明的,他們不會發很明顯的整個的句子,所以思路是對,但是要換一種方式。這裡我們引入一箇中文NLP(自然語言處理)中,最重要的技術之一:分詞!也就是把一整句話拆分成更細粒度的詞語來進行表示。另外,分詞之後去除標點符號、數字甚至無關成分是特徵預處理中的一項技術。

我們觀察(“我”,“司”,“可”,“辦理”,“正規發票”),這可以理解成一個向量:向量的每一個維度都表示著該特徵詞在文本中的特定位置存在。這種將特徵拆分成更小的單元,依據這些更靈活、更細粒度的特徵進行判斷的思維方式,在自然語言處理與機器學習中都是非常常見又有效的。

因此貝葉斯公式就變成了:

P(“垃圾郵件”|(“我”,“司”,“可”,“辦理”,“正規發票”))= P((“我”,“司”,“可”,“辦理”,“正規發票”)|"垃圾郵件")P(“垃圾郵件”)/P((“我”,“司”,“可”,“辦理”,“正規發票”))

P(“正常郵件”|(“我”,“司”,“可”,“辦理”,“正規發票”))= P((“我”,“司”,“可”,“辦理”,“正規發票”)|"正常郵件")P(“正常郵件”)/P((“我”,“司”,“可”,“辦理”,“正規發票”))

條件獨立假設

有些同學說似乎經過上面折騰,概率看起來更復雜了-_-|| 那我們簡化一下吧

概率P((“我”,“司”,“可”,“辦理”,“正規發票”)|"垃圾郵件")依舊不夠好求,我們引進一個很樸素的近似。為了讓公式顯得更加緊湊,我們令字母S表示“垃圾郵件”,令字母H表示“正常郵件”。近似公式如下:

P((“我”,“司”,“可”,“辦理”,“正規發票”)|S)= P(“我”|S)×P(“司”|S)×P(“可”|S)×P(“辦理”|S)×P(“正規發票”|S)

這就是傳說中的條件獨立假設。基於“正常郵件”的條件獨立假設的式子與上面表達式類似,此處省去。接著,將條件獨立假設代入上面兩個相反事件的貝葉斯公式。

於是我們就只需要比較以下兩個式子的大小:

C=P(“我”|S)P(“司”|S)P(“可”|S)P(“辦理”|S)P(“正規發票”|S)

C=P(“我”|H)P(“司”|H)P(“可”|H)P(“辦理”|H)P(“正規發票”|H)

厲害了!醬紫處理後式子中的每一項都特別好求!只需要分別統計各類郵件中該關鍵詞出現的概率就可以了!比如:

P(“發票”|S)= 垃圾郵件中所有“發票”的次數/垃圾郵件中所有詞語的次數

統計次數非常方便,而且樣本數量足夠大的時候,算出來的概率比較接近真實。於是垃圾郵件識別的解決了。

總結:

猛一看樸素貝葉斯定理是有主觀意識在裡面的,會不會不靠譜啊,其實不然,想太多了,它是很靠譜的,而且是符合實際情況的,有人對此提出了一個理論解釋,並且建立了什麼時候樸素貝葉斯的效果能夠等價於非樸素貝葉斯的充要條件,這個解釋的核心就是:有些獨立假設在各個分類之間的分佈都是均勻的所以對於似然的相對大小不產生影響;即便不是,也有很大的可能性各個獨立假設所產生的消極影響或積極影響互相抵消掉,最終導致結果受到的影響並不大。


分享到:


相關文章: