天天看點

一文搞懂:線性回歸與邏輯回歸(似然參數估計)公式sigmoid似然估計邏輯回歸參數

線性回歸解決的是回歸問題,邏輯回歸相當于是線性回歸的基礎上,來解決分類問題。

公式

線性回歸(Linear Regression)是什麼相比不用多說了。格式是這個樣子的:

f w , b ( x ) = ∑ i w i x i + b f_{w,b}(x)=\sum_i{w_ix_i}+b fw,b​(x)=∑i​wi​xi​+b

而邏輯回歸(Logistic Regression)的樣子呢?

f w , b ( x ) = σ ( ∑ i w i x i + b ) f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b) fw,b​(x)=σ(∑i​wi​xi​+b)

要記住的第一句話:邏輯回歸可以了解為線上性回歸後加了一個sigmoid函數。将線性回歸變成一個0~1輸出的分類問題。

sigmoid

sigmoid函數就是:

σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+e−z1​

函數圖像是:

一文搞懂:線性回歸與邏輯回歸(似然參數估計)公式sigmoid似然估計邏輯回歸參數

線性回歸得到大于0的輸出,邏輯回歸就會得到0.5~1的輸出;

線性回歸得到小于0的輸出,邏輯回歸就會得到0~0.5的輸出;

這篇文章的重點,在于線性回歸的參數估計使用的最小二乘法,而而邏輯回歸使用的是似然估計的方法。(當然,兩者都可以使用梯度下降的方法)。

似然估計邏輯回歸參數

舉個例子,現在我們有了一個訓練資料集,是一個二分類問題:

一文搞懂:線性回歸與邏輯回歸(似然參數估計)公式sigmoid似然估計邏輯回歸參數

上面的 x 1 x^1 x1是樣本,下面的 C 1 C_1 C1​是類别,總共有兩個類别。

現在假設我們有一個邏輯回歸的模型:

f w , b ( x ) = σ ( ∑ i w i x i + b ) f_{w,b}(x)=\sigma(\sum_i{w_ix_i}+b) fw,b​(x)=σ(∑i​wi​xi​+b)

那麼 f w , b ( x 1 ) f_{w,b}(x^1) fw,b​(x1)的結果,就是一個0~1的數,我們可以設定好,假設這個數字就是是類别 C 1 C_1 C1​的機率,反之,1減去這個數字,就是類别 C 2 C_2 C2​的機率。

似然簡單的了解,就是讓我們上面的資料集出現的機率最大

我們來了解一下:

  1. x 1 x_1 x1​是 C 1 C_1 C1​的機率是 f w , b ( x 1 ) f_{w,b}(x^1) fw,b​(x1);
  2. x 2 x_2 x2​是 C 1 C_1 C1​的機率是 f w , b ( x 2 ) f_{w,b}(x^2) fw,b​(x2);
  3. x 3 x_3 x3​是 C 2 C_2 C2​的機率是 1 − f w , b ( x 3 ) 1-f_{w,b}(x^3) 1−fw,b​(x3);
  4. ……
  5. x N x_N xN​是 C 1 C_1 C1​的機率是 f w , b ( x N ) f_{w,b}(x^N) fw,b​(xN);

樣本之間彼此獨立,那麼上面那個資料集的機率是什麼?是每一個樣本的乘積,這個就是似然Likelihood:

一文搞懂:線性回歸與邏輯回歸(似然參數估計)公式sigmoid似然估計邏輯回歸參數

我們希望這個w,b的參數估計值,就是能獲得最大化似然的那個參數。也就是:

一文搞懂:線性回歸與邏輯回歸(似然參數估計)公式sigmoid似然估計邏輯回歸參數

加上負号之後,就可以變成最小化的問題。當然,加上一個log并不會影響整個的w,b的估計值。因為 L ( w , b ) L(w,b) L(w,b)最大的時候, l o g ( L ( w , b ) ) log(L(w,b)) log(L(w,b))也是最大的,log是個單調遞增的函數。是以可以得到下面的:

【注意:所有的log其實是以e為底數的自然對數】

一文搞懂:線性回歸與邏輯回歸(似然參數估計)公式sigmoid似然估計邏輯回歸參數

log又可以把之前的乘積和,轉換成加法。

l o g ( L ( w , b ) ) = l o g ( f ( x 1 ) ) + l o g ( f ( x 2 ) ) + l o g ( 1 − f ( x 3 ) ) . . . log(L(w,b))=log(f(x^1))+log(f(x^2))+log(1-f(x^3))... log(L(w,b))=log(f(x1))+log(f(x2))+log(1−f(x3))...

然後,為了更加簡化這個算是,我們将 C 1 , C 2 C_1, C_2 C1​,C2​數值化,變成1和0,然後每一個樣本的真實标簽用 y y y來表示,是以就可以得到:

l o g ( L ( w , b ) ) = ∑ i N y l o g ( f ( x i ) ) + ( 1 − y ) l o g ( 1 − f ( x i ) ) log(L(w,b))=\sum_i^N{ylog(f(x^i))+(1-y)log(1-f(x^i))} log(L(w,b))=∑iN​ylog(f(xi))+(1−y)log(1−f(xi))

【有點像是二值交叉熵,然而其實就是二值交叉熵。。】

  • 當y=1,也就是類别是 C 1 C_1 C1​的時候,這個是 l o g ( f ( x i ) ) log(f(x^i)) log(f(xi))
  • 當y=0,也就是類别是 C 2 C_2 C2​的時候,這個是 1 − l o g ( f ( x i ) ) 1-log(f(x^i)) 1−log(f(xi))

是以其實我們得到的損失函數是:

l o s s = − l o g ( L ( w , b ) ) = − ∑ i N y l o g ( f ( x i ) ) + ( 1 − y ) l o g ( 1 − f ( x i ) ) loss=-log(L(w,b))=-\sum_i^N{ylog(f(x^i))+(1-y)log(1-f(x^i))} loss=−log(L(w,b))=−∑iN​ylog(f(xi))+(1−y)log(1−f(xi))

之前說了,要找到讓這個loss最小的時候的w和b,那怎麼找?

【無情萬能的梯度下降】

是以計算 ∂ l o s s ∂ w \frac{\partial loss}{\partial w} ∂w∂loss​,然後乘上學習率就好了。這裡就不繼續推導了,有耐心的可以慢慢推導,反正肯定能推出來的。

這裡放個結果把:

− ∂ l n L ( w , b ) ∂ w i = ∑ n N − ( y n − f w , b ( x n ) ) x i n \frac{-\partial lnL(w,b)}{\partial w_i}=\sum_n^N{-(y^n-f_{w,b}(x^n))x_i^n} ∂wi​−∂lnL(w,b)​=∑nN​−(yn−fw,b​(xn))xin​

  • 其中 w i w_i wi​為第i個要估計的參數,第i個特征;
  • x i n x^n_i xin​是第n個樣本的第i個特征的值;
  • y n y^n yn是第n個樣本的真實類别,0或者1。

喜歡的話,可以微信掃碼關注微信公衆号【機器學習煉丹術】,成為炫酷的煉丹師吧~

公衆号回複【下載下傳】有精選的免費機器學習學習資料。 公衆号每天會更新一個機器學習、深度學習的小知識,都是面試官會問的知識點哦~

  • 【機器學習的基礎數學(PDF)】
  • 【競賽中的大資料處理流程(PDF)】
  • 【如何做大資料的基礎特征工程(PDF)】
  • 【自然語言處理NLP的應用實踐大合集(PDF)】
  • 【python入門級教材(400頁PDF)】

公衆号每天會更新一個機器學習、深度學習的小知識,都是面試官會問的知識點哦~

一文搞懂:線性回歸與邏輯回歸(似然參數估計)公式sigmoid似然估計邏輯回歸參數

繼續閱讀