1. 程式人生 > >機器學習面試--樸素貝葉斯

機器學習面試--樸素貝葉斯

eight str 存儲 hint 做的 均值 相關性 似然 actual

關鍵詞:先驗概率條件概率和後驗概率;特征條件獨立;貝葉斯公式;樸素貝葉斯極大似然估計後驗概率最大化 期望風險最小化平滑方法

樸素貝葉斯分類的定義如下:

1. 設 x = a1,a2, ...,am為一個待分類項,而每個a是x的一個特征屬性。

2.待分類項的類別集合C={y1,y2,...,yn}

3. 計算 p(y1|x)...p(yn|x)

4.如果p(yk|x) = max{ p(y1|x)...p(yn|x)}, 則x 類別為yk。

那麽現在的關鍵就是如何計算第三步中的各個條件概率:

1.找到一個已知分類的待分類項集合(訓練集)。

2. 統計得到的各個類別下各個特征屬性的條件:

P(a1|y1),...,P(a1|yn),。。。,P(am|y1),...,P(am|yn) 可以看出生成的是一個m * n存儲的矩陣

3. 樸素貝葉斯假設各個特征屬性之間相互獨立,根據貝葉斯定理推導:

技術分享圖片

分母對於所有類別而言是常數,因此可以忽略。又因為各個feature之間相互獨立,所以:

技術分享圖片

Summary:naive beyes 是生成模型,根據先驗概率 P(X)和條件概率 P(X|Y)求出聯合分布概率P(XY),在根據beyes定理可以求出

後驗概率P(Y|X)。

hint:在某個類別概率為0的情況下怎麽辦?

在一些情況下,由於樣本數據極度匱乏,很有可能出現某個特征的取值和某個類別的取值在訓練集中從未同時出現過,即

#{X_i=x_iΛC=c_k} = 0,這會造成對 P(X_i=x_i|C=c_k) 的估計等於零。P(X_i=x_i|C=c_k) = 0 會導致對應的 P(C=c_k) × Π_i P(X_i=x_i|C=c_k) = 0,即讓我們誤以為這個樣本屬於某個類別 c_k 的概率為 0。這是不合理的,不能因為一個事件沒有觀察到就認為該事件不會發生。

解決這個問題的辦法是給每個特征和類別的組合加上給定個數的虛假樣本(“hallucinated” examples)。假設特征 X_i 的取值有 J 個,並假設為每個 x_i 對應的 #{X_i=x_iΛC=c_k} 增加 s 個虛假樣本,這樣得到對 P(X_i=x_i|C=c_k) 的估計稱為平滑估計(smoothed estimate)

技術分享圖片

特別的,當 s = 1 時,上述平滑稱為拉普拉斯平滑(Laplace smoothing)。類似的,對於 P(C=c_k) 的估計也可以采用平滑的方式:

技術分享圖片

其中,t 為對每個類增加的虛假樣本數,K 是類別個數,#{C} 表示訓練集的樣本數。

當特征是連續變量時,情況稍微復雜一些。在使用訓練集求解 P(X_i=x_i|C=c_k) 時,需要假設該條件概率分布的形式。一種常見的假設是認為對於給定的 c_k,P(X_i=x_i|C=c_k) 滿足正態分布,而正態分布的均值和標準差需要從訓練集學習得到。這樣的模型稱為高斯樸素貝葉斯分類器

為什麽NAVIE bayes有效?

它仍然有非常不錯的效果。原因何在呢?人們在使用分類器之前,首先做的第一步(也是最重要的一步)往往是特征選擇(feature selection),這個過程的目的就是為了排除特征之間的共線性、選擇相對較為獨立的特征。其次,當我們假設特征之間相互獨立時,這事實上就暗含了正則化的過程;而不考慮變量之間的相關性有效的降低了樸素貝葉斯的分類方差 回顧: 什麽是先驗概率、條件概率和後驗概率;樸素貝葉斯的樸素是因為假設了特征條件獨立,這樣減少了大量的參數計算;而後介紹了如何由貝葉斯公式推出樸素貝葉斯的分類原理,主要在計算參數時候運用了極大似然估計,通過後驗概率最大化得到正確的類別;這個後驗概率最大化可以證明等價於期望風險最小化。隨後介紹了平滑方法,防止條件概率為0的情況出現。

應用:

被廣泛應用於文本分類和垃圾郵件過濾等領域。

機器學習面試--樸素貝葉斯