文章轉自【機器學習煉丹術】機器學習
線性迴歸解決的是迴歸問題,邏輯迴歸至關因而線性迴歸的基礎上,來解決分類問題。函數
線性迴歸(Linear Regression)是什麼相比不用多說了。格式是這個樣子的:
\(f_{w,b}(x)=\sum_i{w_ix_i}+b\)學習
而邏輯迴歸(Logistic Regression)的樣子呢?
\(f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b)\)spa
要記住的第一句話:邏輯迴歸能夠理解爲在線性迴歸後加了一個sigmoid函數。將線性迴歸變成一個0~1輸出的分類問題。.net
sigmoid函數就是:
\(\sigma(z)=\frac{1}{1+e^{-z}}\)3d
函數圖像是:
線性迴歸獲得大於0的輸出,邏輯迴歸就會獲得0.5~1的輸出;
線性迴歸獲得小於0的輸出,邏輯迴歸就會獲得0~0.5的輸出;blog
這篇文章的重點,在於線性迴歸的參數估計使用的最小二乘法,而而邏輯迴歸使用的是似然估計的方法。(固然,二者均可以使用梯度降低的方法)。get
舉個例子,如今咱們有了一個訓練數據集,是一個二分類問題:
上面的\(x^1\)是樣本,下面的\(C_1\)是類別,總共有兩個類別。it
如今假設咱們有一個邏輯迴歸的模型:
\(f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b)\)
那麼\(f_{w,b}(x^1)\)的結果,就是一個0~1的數,咱們能夠設定好,假設這個數字就是是類別\(C_1\)的機率,反之,1減去這個數字,就是類別\(C_2\)的機率。io
似然簡單的理解,就是讓咱們上面的數據集出現的機率最大
咱們來理解一下:
樣本之間彼此獨立,那麼上面那個數據集的機率是什麼?是每個樣本的乘積,這個就是似然Likelihood:
咱們但願這個w,b的參數估計值,就是能得到最大化似然的那個參數。也就是:
加上負號以後,就能夠變成最小化的問題。固然,加上一個log並不會影響整個的w,b的估計值。由於\(L(w,b)\)最大的時候,\(log(L(w,b))\)也是最大的,log是個單調遞增的函數。因此能夠獲得下面的:
【注意:全部的log實際上是以e爲底數的天然對數】
log又能夠把以前的乘積和,轉換成加法。
\(log(L(w,b))=log(f(x^1))+log(f(x^2))+log(1-f(x^3))...\)
而後,爲了更加簡化這個算是,咱們將\(C_1, C_2\)數值化,變成1和0,而後每個樣本的真實標籤用\(y\)來表示,因此就能夠獲得:
\(log(L(w,b))=\sum_i^N{ylog(f(x^i))+(1-y)log(1-f(x^i))}\)
【有點像是二值交叉熵,然而其實就是二值交叉熵。。】
因此其實咱們獲得的損失函數是:
\(loss=-log(L(w,b))=-\sum_i^N{ylog(f(x^i))+(1-y)log(1-f(x^i))}\)
以前說了,要找到讓這個loss最小的時候的w和b,那怎麼找?
【無情萬能的梯度降低】
因此計算\(\frac{\partial loss}{\partial w}\),而後乘上學習率就行了。這裏就不繼續推導了,有耐心的能夠慢慢推導,反正確定能推出來的。
這裏放個結果把:
\(\frac{-\partial lnL(w,b)}{\partial w_i}=\sum_n^N{-(y^n-f_{w,b}(x^n))x_i^n}\)