1. 程式人生 > >機器學習:貝葉斯分類器,樸素貝葉斯,拉普拉斯平滑

機器學習:貝葉斯分類器,樸素貝葉斯,拉普拉斯平滑

數學基礎:

數學基礎是貝葉斯決策論Bayesian DecisionTheory,和傳統統計學概率定義不同。

頻率學派認為頻率是是自然屬性,客觀存在的。

貝葉斯學派,從觀察這出發,事物的客觀隨機性只是觀察者不知道結果,也就是觀察者的知識不完備,對於知情者而言,事物沒有隨機性,隨機性的根源不是來源於事物,而是來自於觀察者對事物的只是狀態。

從這個角度而言,貝葉斯學派是唯心主義,頻率學派是唯物主義。

貝葉斯決策論Bayesian DecisionTheory

貝葉斯決策是在某個先驗分佈下使得平均風險最小得決策。

引數估計

分為極大似然估計(Maximum Likelihood Estimate)和極大後驗概率估計(Maximum a posteriori estimation)

極大似然估計(Maximum Likelihood Estimate),使所有得樣本發生得概率最大,這個不考慮先驗概率得影響,屬於頻率派得做法.

θ = a r g

m a x θ i = 1
N
p ( x i θ ) \theta^* = argmax_{\theta} \quad \prod_{i=1}^N p(x_i|\theta)\quad

極大後驗概率估計(Maximum a posteriori estimation),為貝葉斯學派得做法,加入了後驗概率概念,p( θ \theta |X)為引數 θ \theta 在樣本X下得真實得出現概率,p( θ \theta )為先驗概率。

θ M A P = a r g m a x θ [ l n p ( θ ) + i = 1 N p ( x i θ ) ] \theta_{MAP} = argmax_{\theta} \quad [lnp(\theta) + \prod_{i=1}^N p(x_i|\theta)]\quad

可以看出極大後驗概率多了一個lnp( θ ) \theta) ,也就是增加了先驗。

樸素貝葉斯(Naive Bayes)

分為2個部分:樸素對應著獨立性假設,每個樣本都認為是相互獨立得,貝葉斯對應著後驗概率最大化。

貝葉斯估計在估計引數時使用了極大似然估計獲取先驗概率,做決策時使用得時MAP估計。

演算法描述如下:

在這裡插入圖片描述

簡單理解(X—>Y): 通過訓練集資料,先計算出Y得分佈概率,這個就是計算先驗概率,然後計算條件概率,也就是在已知分類Y得情況下為 X ( j ) X^{(j)} 的概率,就是X的某個屬性的概率,根據先驗概率和條件概率,可以求出 x x^{*} 的發生概率,在哪種分類y= c k c_k 下的概率最大, x x^{*} 就是哪種分類。

以下是西瓜書的描述,參考一下:
在這裡插入圖片描述
我們需要求的是使之最大的y= c k c_k ,也就是哪個分類使之最大:
在這裡插入圖片描述
在這裡插入圖片描述

分為2步:

使用ML估計匯出模型的具體引數:先驗概率,條件概率
使用MAP估計作為模型的決策,輸出使後驗概率最大化的類別。

拉普拉斯平滑

在這裡插入圖片描述
λ \lambda 為0時極大似然估計, λ \lambda 為1為拉普拉斯平滑,K為x的第k個屬性可能的取值數目

    # 核心陣列,記錄第i類資料的個數,cat為category
    self._cat_counter = None
    # 定義計算先驗概率的函式,lb為各個估計中的平滑項lamda
    # lb的預設值為1,也就是預設使用拉普拉斯平滑
    def get_prior_probability(self,lb =1):
        return [(_c_num + lb) / (len(self._y) + lb*len(self._cat_counter)) for _c_num in self._cat_counter]