ML基本知識(九)樸素貝葉斯

  • 基本方法

    對於數據集T={(xi,yi)}i=1NT= \{(x_i,y_i)\}^{N}_{i=1},由獨立同分布的P(X,Y)P(X,Y)產生,樸素貝葉斯通過訓練集學習聯合概率分佈P(X,Y)P(X,Y),具體的,學習以下的先驗概率分佈和條件概率分佈得到,值得注意的是x1x_1x(1)x^{(1)}是不一樣的,x1x_1值得是第一個樣本的數據,x(1)x^{(1)}指的是特徵集中的第一個特徵,

    P(Y=ck)k=1,2,...,K P(Y=c_k) \quad k=1,2,...,K
    P(X=x/Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)/Y=ck)k=1,2,...,K P(X=x/Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}/Y=c_k) \quad k=1,2,...,K

    於是得到聯合分佈概率P(X,Y)P(X,Y),

    而樸素貝葉斯驚醒了一個對條件概率分佈的條件獨立性假設,如下,

    P(X(i)=x(i)/Y)=P(X(j)=x(j)/Y,X(i)=x(i)) P(X^{(i)}=x^{(i)}/Y)=P(X^{(j)}=x^{(j)}/Y, X^{(i)}=x^{(i)})
    即特徵X(i)X^{(i)}對於特徵X(j)X^{(j)}關於YY是相互獨立的,但是特徵之間有可能不獨立,

    P(X=x/Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)/Y=ck)k=1,2,...,K P(X=x/Y=c_k)=P(X^{(1)}=x^{(1)},X^{(2)}=x^{(2)},...,X^{(n)}=x^{(n)}/Y=c_k) \quad k=1,2,...,K
    =j=1nP(X(j)=x(j)/Y=ck)k=1,2,...,K(1) =\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)\quad k=1,2,...,K \quad(1)
    而對於如何求解P(X(j)=x(j)/Y=ck)P(X^{(j)}=x^{(j)}/Y=c_k),下文會講述,

    這時我們已經把每一項P(X(j)=x(j)/Y=ck)P(X^{(j)}=x^{(j)}/Y=c_k)求解出來,這是其實我們已經把聯合概率分佈求解出來了,如果還要繼續求解後驗概率的話,而後根據貝葉斯公式,後驗概率如下所示,

    P(Y=ck/X=x)=P(X=x/Y=ck)P(Y=ck)kP(X=x/Y=ck)P(Y=ck) P(Y=c_k/X=x)=\frac{P(X=x/Y=c_k)P(Y=c_k)}{\sum _k P(X=x/Y=c_k)P(Y=c_k)}
    把(1)式帶入上述公式得

    P(Y=ck/X=x)=P(Y=ck)j=1nP(X(j)=x(j)/Y=ck)kP(Y=ck)j=1nP(X(j)=x(j)/Y=ck) P(Y=c_k/X=x)=\frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)}{\sum _k P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)}
    而當一個未知的xux_{u}送入到模型中,得到的結果如下,

    y=f(xu)=argmaxckP(Y=ck)j=1nP(X(j)=xu(j)/Y=ck)kP(Y=ck)j=1nP(X(j)=xu(j)/Y=ck) y=f(x_u)=argmax_{c_k}\frac{P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)}{\sum _k P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)}
    而對於所有的式子來說,上式的分母都是相同的,因而上式可簡化爲如下,

    y=f(xu)=argmaxckP(Y=ck)j=1nP(X(j)=xu(j)/Y=ck) y=f(x_u)=argmax_{c_k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x_u^{(j)}/Y=c_k)

  • 後驗概率最大含義

    樸素貝葉斯法將實例分到後驗概率最大的類中,其實等價於期望風險最小化,從這一點可以看出樸素貝葉斯法其實是站在僞上帝的視角來考慮問題的,即現在我們就認爲訓練集中包含所有的可能數據,因而求出的風險就是期望風險,而不是經驗風險,

    這裏統計學習方法的第49頁有詳細推導過程,這裏只想提一點就是樸素貝葉斯用到的是0-1損失函數

    L(y,f(x))={1,Yf(X)0,Y=f(X) L(y,f(x))=\left\{\begin{matrix} 1,\quad Y\neq f(X)\\ 0,\quad Y=f(X) \end{matrix}\right.

    而且注意條件數學期望的理解,

  • 算法說明

    輸入:訓練數據T={(xi,yi)}i=1NT= \{(x_i,y_i)\}^{N}_{i=1}, 其中xi=(xi(1),xi(2),...,xi(n))Tx_i=(x_i^{(1)},x_i^{(2)},...,x_i^{(n)})^T,其中xi(j){aj1,aj2,...,ajSj}x_i^{(j)}\in \left \{ a_{j1},a_{j2},...,a_{jS_j} \right \},j=1,2,...,nj=1,2,...,n, l=1,2,...,Sjl=1,2,...,S_j, yi{c1,c2,...,ck}y_i\in \left \{ c_1,c_2,...,c_k \right \}, 實例xx,

    輸出:實例xx的分類結果,

    1. 計算先驗概率及條件概率

    P(Y=ck)=i=1N1(yi=ck)N,k=1,2...,K P(Y=c_k)=\frac{\sum_{i=1}^{N}1(y_i=c_k)}{N},\quad k=1,2...,K
    P(X(j)/Y=ck)=i=1N1(xi(j)=ajl,yi=ck)i=1N1(yi=ck) P(X^{(j)}/Y=c_k)=\frac{\sum_{i=1}^{N}1(x_i^{(j)}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}1(y_i=c_k)}
    j=1,2,...,nl=1,2,...,Sjk=1,2...,K j=1,2,...,n \quad l=1,2,...,S_j \quad k=1,2...,K

    1. 對於給定的x=(x(1),x(2),...,x(n))Tx=(x^{(1)},x^{(2)},...,x^{(n)})^T,計算
      P(Y=ck)j=1nP(X(j)=x(j)/Y=ck)k=1,2,...,K P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k) \quad k=1,2,...,K
    2. 確定xx的分類
      y=f(x)=argmaxckP(Y=ck)j=1nP(X(j)=x(j)/Y=ck) y=f(x)=argmax_{c_k}P(Y=c_k)\prod_{j=1}^{n}P(X^{(j)}=x^{(j)}/Y=c_k)
  • 貝葉斯估計

    極大似然估計可能產生概率爲0的情況,因而引入了貝葉斯估計,用如下式子矯正,

    Pλ(X(j)/Y=ck)=i=1N1(xi(j)=ajl,yi=ck)+λi=1N1(yi=ck)+Sjλ P_\lambda(X^{(j)}/Y=c_k)=\frac{\sum_{i=1}^{N}1(x_i^{(j)}=a_{jl},y_i=c_k)+\lambda}{\sum_{i=1}^{N}1(y_i=c_k)+S_j\lambda}
    等價於給隨機變量的各個取值的頻數上添加一個整數λ\lambda, 當λ=0\lambda=0時爲極大似然估計,當其爲1時,叫做拉普拉斯平滑,而先驗概率的貝葉斯估計爲
    Pλ(Y=ck)=i=1N1(yi=ck)+λN+Kλ,k=1,2...,K P_\lambda(Y=c_k)=\frac{\sum_{i=1}^{N}1(y_i=c_k)+\lambda}{N+K\lambda},\quad k=1,2...,K

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章