從概率模型到邏輯分類


我今天來推導一下根據 概率模型 來推導一下分類的問題。

題目的大概就是,我們抽取一個樣本,然后去判斷這個樣本應該屬於哪個分類。

首先大概的復習一下跟概率論相關的知識概率論的一些基礎知識

我們把問題限定為兩個類別的分類。即我們有一個\(C_1\)\(C_2\)分類。然后抽取一個樣本\(X_i\),去判斷\(X_i\)應該屬於哪個分類。用概率的公式來描述我們的問題
\(P(C_?|X_i)\) 換言之 \(P(C_1|X_i)=1-P(C_2|X_i)\) 那么我們只要求出其中一個概率即可。

根據貝葉斯公式,我們可知 \(P(C_1|X_i) = \frac{P(X_i|C_1)*P(C_1)}{P(X_i|C_1) * P(C_1) + P(X_i|C_2)*P(C_2)}\)

我們對公式進行一些簡單的變換:分子和分母同除以分子可以得到 \(P(C_1|X_i)=\frac{1}{1+\frac{P(X_i|C_2)*P(C_2)}{P(X_i|C_1)*P(C_1)}}\)

我們設:\(Z=ln(\frac{P(X_i|C_1)P(C_1)}{P(X_i|C_2)P(C_2)})\)得到了\(P(C_1|X_i)=\frac{1}{1+exp(-Z)}\)

我們進一步對Z進行變換:\(Z=ln\frac{P(X_i|C_1)}{P(X_i|C_2)} + ln\frac{P(C_1)}{P(C_2)}\)

\(\frac{P(C_1)}{P(C_2)}\) 我們得到的辦法主要是查學習樣本的數量,\(C_1\)的數量為\(N_1\),\(C_2\)的數量為\(N_2\),從而得到

\[\frac{P(C_1)}{P(C_2)}= \frac{\frac{N_1}{N_1+N_2}}{\frac{N_2}{N_1+N_2}}=\frac{N_1}{N_2} \]

帶入Z中可以得到$$Z=ln\frac{P(X_i|C_1)}{P(X_i|C_1)}+ ln\frac{N_1}{N_2}$$

我們假定我們的樣本是符合高斯(正態)分布的,高斯分布的概率密度公式如下

\[f(x)=\frac{1}{\sqrt{2\pi}\sigma} exp(\frac{(x-u)^2}{2\sigma^2}) \]

即:

\[P(X_i|C_1) = \frac{1}{\sqrt{2\pi}\sigma_1} exp(\frac{(x_i-u_1)^2}{2\sigma_1^2}) \]

\[P(X_i|C_2) = \frac{1}{\sqrt{2\pi}\sigma_2} exp(\frac{(x_i-u_2)^2}{2\sigma_2^2}) \]

帶入以后,我們得到原式子簡化以后

\[Z=ln\frac{\frac{1}{\sigma_1}}{\frac{1}{\sigma_2}} + ln\frac{exp(\frac{(x_i-u_1)^2}{2\sigma_1^2})}{exp(\frac{(x_i-u_2)^2}{2\sigma_2^2})}+ln\frac{N_1}{N_2} \]

進一步簡化

\[Z=ln\frac{\sigma_2}{\sigma_1} + \frac{(x-u_1)^2}{2\sigma_1^2} + \frac{(x-u_2)^2}{2\sigma_2^2}+ln\frac{N_1}{N_2} \]

我們假定兩個分類的高斯分布的方差是相等的,即\(\sigma_1==\sigma_2==\sigma\) 得到

\[Z=\frac{-2U_1X+2U_2X+U_1^2-U_2^2}{2\sigma^2}+ln\frac{N_1}{N_2}=\frac{U_2-U_1}{\Sigma^2}X + \frac{U_1^2-U_2^2}{2\sigma^2}+ln\frac{N_1}{N_2} \]

我們得知U和\(\sigma\)都是根據樣本統計得到,我們並不關系他們具體的數值,所以我們可以假設\(W=\frac{U_2-U_1}{\Sigma^2}\)\(b=\frac{U_1^2-U_2^2}{2\sigma^2}+ln\frac{N_1}{N_2}\)

我們可以得到$$Z=Wx+b$$

所以我們的機器學習如果我們利用極大似然函數,求得樣本的均值和方差,我們就可以根據特征分布來估計一個樣本是否屬於一個分類,通過變化,我們完全可以不去計算樣本的均值和方差,只需要找到合適的W和B,我們一樣可以判斷樣本屬於的分類。

我們只需要找到一個合適的評估函數,去評估我們找到的W和b是否合適。然后不斷的去測試我們找到的W和b即可。而我們要找的這個函數如下:

\[loss=-[yln\hat{y}+(1-y)ln(1-\hat{y})] \]

至於為什么選擇這樣的損失函數呢?吳恩達老師在機器學習的課程中大概提了下,可以分成兩種情況,去分別計算

\[loss= \begin{cases} -ln\hat{y} \quad y=1 \\ -ln(1-\hat{y}) \quad y=0 \end{cases} \]

把這兩個式子整合成一個就得到了上述的損失函數,我們不適用\(loss=(y-\hat{y})^2\)作為損失函數呢?吳恩達老師大概解釋是因為他在邏輯回歸中不是凸函數,沒法進行很好的梯度下降。李宏毅老師的課程中詳細進行了分析。

具體的分析如下:加入我們選擇了\(loss=(y-\hat{y})^2\)作為損失函數,我們在求梯度下降的時候,需要求得該函數的導數

\(\frac{dloss}{dw}=2(y-\hat{y})\hat{y}(1-\hat{y})*X\)

當我們得到的輸出為0或者1時候,不管label是0還是1,得到的導數都是0,梯度就無法下降。這個是根本你的原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM