機器學習-高斯判別分析

在前面的博文中,我們介紹了線性判別分析用於分類,在這篇博文中,我們介紹高斯判別分析。高斯判別分析也是一種用於分類的方法,在樣本數據服從多元高斯分佈以及類別標籤\(y\)服從伯努利分佈的假設條件下,然後再由貝葉斯公式求出一個新樣本分別屬於兩類別的概率。

對於給定的數據集\(D=\{(x_1,y_1),\cdots,(x_N,y_N)\}\),其中\(y_=\{1,0\}\)。根據假設\(y_i\)服從伯努利分佈,那麼有如下公式成立

\[p(y)=\phi^y(1-\phi)^{1-y} \]

其中\(\phi\)表示$y_i=$0的概率值。另外兩類樣本數據集均服從高斯分佈,且方差一樣。那麼可以將兩個類別表示成如下

\[x|y=1 \sim N(u_1, \Sigma)\\ x|y=0 \sim N(u_2,\Sigma) \]

那麼綜合表達這兩類樣本成

\[p(x|y)=[N(u_1,\Sigma)]^y[N(u_2, \Sigma)]^{1-y} \]

接下來的目標就是在目標準則下,求得高斯分佈的參數,包括\(\theta=(\phi,u_1,u_2,\Sigma)\)。首先定義似然函數

\[L(\theta)= \log\Pi_{i=1}^{N}p(x_i,y_i) \]

然後利用貝葉斯公式

\[p(x,y)=p(x|y)p(y) \]

進而可以將似然函數表示成

\[L(\theta)=\log \Pi_{i=1}^{N}[p(x_i|y_i)p(y_i)]\\ \sum_{i=1}^{N}(\log p(x_i|y_i)+\log p(y_i)) \]

那麼參數\(\theta\)可以通過最大化\(L(\theta)\)得到

\[\hat{\theta}=\arg \max_{\theta} L(\theta)\\ =\arg \max_\theta \sum_{i=1}^{N}[\log N(u_1,\Sigma)^{y_i} + \log N(u_2,\Sigma)^{1-y_i}+log(\phi^{y_i}(1-\phi)^{1-y_i})] \]
  • \(\phi\)

可以看到\(\phi\)只與後兩項有關,讓\(L(\theta)\)\(\phi\)求偏導,可以得到

\[\frac{\partial L(\theta)}{\partial{\phi}}=\sum_{i=1}^{N}y_{i} \frac{1}{\phi}+(1-y_i)(-1)\frac{1}{1-\phi}=0 \]

很容易得到

\[\phi = \frac{1}{N}\sum_{i=1}^{N}y_i \]
  • \(u_1,u_2\)

\(u_1\)的求解過程和\(u_2\)類似,因此只介紹求解\(u_1\)的過程。從\(L(\theta)\)的表達式可以知道\(u_1,u_2\)只與前兩項有關係,首先讓\(L(\theta)\)\(u_1\)求偏導,得到

\[\frac{\partial{L(\theta)}}{\partial{u_1}}=\sum_{i=1}^{N}y_i\log\frac{1}{(2\pi)^{p/2}\lvert\Sigma\lvert^{\frac{1}{2}}}e^{-\frac{1}{2}(x_i-u_1)^T\Sigma^{-1}(x_i-u_1)} \]

由於中間的分數項是一個常數,那麼\(u_1\)的求解可以轉成如下優化問題

\[\hat{u}_1=\arg \max_{u_1} \sum_{i=1}^{N} y_i[-\frac{1}{2}(x_u-u_1)^T\Sigma^{-1}(x_i-u_1)] \]

重新定義目標函數\(l(u_1)\)如下

\[l(u_1)=-\frac{1}{2}\sum_{i=1}^{N}y_i(x_i-u_1)^T\Sigma^{-1}(x_i-u_1)\\ -\frac{1}{2}\sum_{i=1}^{N}y_i[x_i^{T}\Sigma^{-1}x_i-2x_{i}^{T}\Sigma^{-1}u_1+u_1^{T}\Sigma_{-1}u_1] \]

上式對\(u_1\)求偏導,得到

\[\frac{\partial{l(u_1)}}{\partial{u_1}}=\sum_{i=1}^{N}y_i[\Sigma^{-1}x_i-\Sigma^{-1}u_1]=0\\ \rightarrow \hat{u}_1=\frac{\sum_{i=1}^{N}x_iy_i}{\sum_{i=1}^{N}y_i}=\frac{\sum_{i=1}^{Nx_iy_i}}{N_1} \]

同理可得

\[\hat{u}_2=\frac{\sum_{i=1}^{N}x_iy_i}{N_2} \]
  • \(\Sigma\)求解

    爲了求得\(\Sigma\),我們首先將數據集分塊,分成\(c_1=\{x_i|y_i=1\}\)\(c_2=\{x_i|y_i=0\}\)其中\(c_1\)中的樣本個數爲\(N_1\),樣本數據集\(c_2\)中的樣本個數爲\(N_2\)。而\(\Sigma\)可以通過如下優化問題求解

    \[\hat{\Sigma}=\arg \max_{\Sigma} \sum_{i=1}^{N} y_i\log N(u_1, \Sigma )+(1-y_i)\log N(u_2, \Sigma)\\ =\arg \max_{\Sigma} \sum_{x_i \in c_1}\log (N(u_1, \Sigma)) + \sum_{x_i \in c_2} \log (N(u_2, \Sigma)) \]


至此已經完成了高斯判別分析中的所有的參數估計。

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