【小白學AI】線性迴歸與邏輯迴歸(似然參數估計)

文章轉自【機器學習煉丹術】機器學習

線性迴歸解決的是迴歸問題,邏輯迴歸至關因而線性迴歸的基礎上,來解決分類問題。函數

1 公式

線性迴歸(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

2 sigmoid

sigmoid函數就是:
\(\sigma(z)=\frac{1}{1+e^{-z}}\)3d

函數圖像是:

線性迴歸獲得大於0的輸出,邏輯迴歸就會獲得0.5~1的輸出;
線性迴歸獲得小於0的輸出,邏輯迴歸就會獲得0~0.5的輸出;blog


這篇文章的重點,在於線性迴歸的參數估計使用的最小二乘法,而而邏輯迴歸使用的是似然估計的方法。(固然,二者均可以使用梯度降低的方法)。get


3 似然估計邏輯迴歸參數

舉個例子,如今咱們有了一個訓練數據集,是一個二分類問題:

上面的\(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

似然簡單的理解,就是讓咱們上面的數據集出現的機率最大

咱們來理解一下:

  1. \(x_1\)\(C_1\)的機率是\(f_{w,b}(x^1)\);
  2. \(x_2\)\(C_1\)的機率是\(f_{w,b}(x^2)\);
  3. \(x_3\)\(C_2\)的機率是\(1-f_{w,b}(x^3)\);
  4. ……
  5. \(x_N\)\(C_1\)的機率是\(f_{w,b}(x^N)\);

樣本之間彼此獨立,那麼上面那個數據集的機率是什麼?是每個樣本的乘積,這個就是似然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))}\)
【有點像是二值交叉熵,然而其實就是二值交叉熵。。】

  • 當y=1,也就是類別是\(C_1\)的時候,這個是\(log(f(x^i))\)
  • 當y=0,也就是類別是\(C_2\)的時候,這個是\(1-log(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}\)

  • 其中\(w_i\)爲第i個要估計的參數,第i個特徵;
  • \(x^n_i\)是第n個樣本的第i個特徵的值;
  • \(y^n\)是第n個樣本的真實類別,0或者1。
相關文章
相關標籤/搜索