我今天來推導一下根據 概率模型 來推導一下分類的問題。
題目的大概就是,我們抽取一個樣本,然后去判斷這個樣本應該屬於哪個分類。
首先大概的復習一下跟概率論相關的知識概率論的一些基礎知識
我們把問題限定為兩個類別的分類。即我們有一個\(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\),從而得到
帶入Z中可以得到$$Z=ln\frac{P(X_i|C_1)}{P(X_i|C_1)}+ ln\frac{N_1}{N_2}$$
我們假定我們的樣本是符合高斯(正態)分布的,高斯分布的概率密度公式如下
即:
帶入以后,我們得到原式子簡化以后
進一步簡化
我們假定兩個分類的高斯分布的方差是相等的,即\(\sigma_1==\sigma_2==\sigma\) 得到
我們得知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=(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,梯度就無法下降。這個是根本你的原因。