1. 前言
說到樸素貝葉斯算法,首先牽扯到的一個概念是判别式和生成式。
- 判别式:就是直接學習出特征輸出\(Y\)和特征\(X\)之間的關系,如決策函數\(Y=f(X)\),或者從機率論的角度,求出條件分布\(P(Y|X)\)。代表算法有決策樹、KNN、邏輯回歸、支援向量機、随機條件場CRF等
- 生成式:就是直接找出特征輸出Y和特征X的聯合分布\(P(X,Y)\),然後用\(P(Y|X)=\frac{P(X,Y)}{P(X)}\)得出。代表算法有樸素貝葉斯、隐式馬爾可夫鍊等。
2. 樸素貝葉斯原理
樸素貝葉斯算法基于貝葉斯定理和特征條件獨立假設。
- 貝葉斯定理
- 特征條件獨立:特征條件獨立假設\(X\)的\(n\)個特征在類确定的條件下都是條件獨立的。大大簡化了計算過程,但是因為這個假設太過嚴格,是以會相應犧牲一定的準确率。這也是為什麼稱呼為樸素的原因。
3. 樸素貝葉斯算法
輸入:訓練集為\(m\)個樣本\(n\)個次元\(T={(x_1,y_1),(x_2,y_2),...,(x_m,y_m)}\),共有K個特征輸出類别,分别為\(y\in{\{c_1,c_2,...,c_K}\}\).
輸出:為執行個體\(x_{(test)}\)的分類。
算法流程如下:
- 首先計算計算\(Y\)的\(K\)個先驗機率
\[P(Y=c_k)
\]
- 然後計算條件機率分布:
\[P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...,X^{(n)}=x^{(n)}|Y=c_k)
由于上式的參數是指數級别,無法計算。是以根據特征條件獨立假設,可以化簡為下式。
\[P(X=x|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)
- 根據貝葉斯原理,計算後驗機率:
\[P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_kP(X=x|Y=c_k)P(Y=c_k)}
帶入\(P(X=x|Y=c_k)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)\)
得到
\[P(Y=c_k|X=x)=\frac{\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(Y=c_k)}{\sum_k\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(Y=c_k)}
由于分母相同,上式再變為如下:
\[P(Y=c_k|X=x)=\prod_{j=1}^nP(X^{(j)}=x^{(j)}|Y=c_k)P(Y=c_k)
- 計算\(X_{(test)}\)的類别
\[y_{(test)}=arg\ max_{c_k}\prod_{j=1}^nP(X^{(j)}=x_{(test)}^{(j)}|Y=c_k)P(Y=c_k)
從上面的計算可以看出,沒有複雜的求導和矩陣運算,是以效率很高。
4. 樸素貝葉斯算法小結
樸素貝葉斯算法的主要原理基本已經做了總結,這裡對樸素貝葉斯的優缺點做一個總結。
4.1 樸素貝葉斯的主要優點
- 樸素貝葉斯模型發源于古典數學理論,有穩定的分類效率。
- 對小規模的資料表現很好,能個處理多分類任務,适合增量式訓練,尤其是資料量超出記憶體時,我們可以一批批的去增量訓練。
- 對缺失資料不太敏感,算法也比較簡單,常用于文本分類。
4.2 樸素貝葉斯的主要缺點
- 樸素貝葉斯模型的特征條件獨立假設在實際應用中往往是不成立的。
- 如果樣本資料分布不能很好的代表樣本空間分布,那先驗機率容易測不準。
- 對輸入資料的表達形式很敏感。