本博客是基於對周志華教授所著的《機器學習》的“第7章 貝葉斯分類器”部分內容的學習筆記,主要目的不在於講解理念,而是偏重梳理流程。
1. 貝葉斯公式
使用貝葉斯分類器,首先我們先闡述下貝葉斯定理:
P(C|X)=
P(c|x):在x的條件下,隨機事件出現c情況的概率。(後驗概率)
P(C ):(不考慮相關因素)隨機事件出現c情況的概率。(先驗概率,根據訓練集樣本可以求出)
P(x|c):在已知事件出現c情況的條件下,條件x出現的概率。(後驗概率,似然估計,根據結果估計參數值。)
P(x):x出現的概率。(先驗概率,根據訓練集樣本可以求出)
2. 貝葉斯公式求解化簡
從前面的介紹可知,使用貝葉斯公式來估計後驗概率最大的困難是難以從現有的訓練樣本中準確的估計出條件概率P(x|c)的概率分佈,爲什麼這麼說呢?
因爲,因爲x往往包含多個相關因素(是一個多種因素構成的向量),即它可能有多個需要考慮的屬性值,因此當x是一個向量時,我們若要計算P(x|c),實際上就是要計算P(x1,x2,x3,…,xn∣c) 。
這個理論上也是可以利用我們的數據集D來進行估計的,但是現實情況是,n的值往往非常大(屬性非常多),而我們的數據集往往不能保證我們的樣本包含了屬性值的所有可能組合(假設每個屬性都是二值屬性,那麼就有種屬性組合)。那麼很多p(x|c)我們估計得到的值就是0。然而這些樣本很可能僅僅是我們的數據集中沒包含到,即“未被觀測到”,但不代表它們現實中“出現概率爲0”。於是這就給我們計算出真實合理的目標p(c|x)值造成了障礙。
簡單來講,原本是按照樣本個體作爲基本單位的,當計算某種屬性組合下的概率時就必要要求樣本集中有對應的樣本,否則概率爲0,與實際不符。那如何解決呢?
3.樸素貝葉斯分類器
於是出現了樸素貝葉斯理念,它將每個屬性都認爲時單獨獨立的,計算某屬性組的概率就是計算屬性組中d個屬性組合的概率,假設用公式表達式這樣的:
P(C|X)== P(|C)
將原式轉化爲條件聯合概率,即多個條件概率相乘,將出現c情況下,條件x出現的概率進行分解,分解成衆多獨立的條件。數據集無法覆蓋所有可能的屬性組合的樣本”問題也就基本解決了,因爲根本不需要有那麼多樣本,保證每個屬性的各個取值都能有樣本取到過就行了。
至此,我們可以利用樸素貝葉斯將原貝葉斯公式轉化爲如下形式:
代表一個由naive bayesian(nb)算法訓練出來的hypothesis(假設),它的值就是貝葉斯分類器對於給定x的因素下,最可能出現的情況c。y是c的取值集合。
解釋一下:等式右邊的式子就是argmax加上基於屬性條件獨立性假設的貝葉斯定理的分子部分(分母P(x)前面提到過,可以在計算中略去),即我們的輸出值就是這樣的一個c,這個c使得 (x)的計算結果值最大。
離散屬性與連續屬性值的分別處理
拉普拉斯修正
爲了解決樣本中某屬性值從未出現的情況
半樸素貝葉斯分類器
爲了解決完全屬性獨立問題