1. 程式人生 > >Logistic Regression(邏輯迴歸)

Logistic Regression(邏輯迴歸)

介紹

邏輯迴歸雖然稱為迴歸,但它卻是一個分類演算法,一個用來解決二分類問題的演算法,它通過將線性迴歸預測出的值對映到 {0,1} 上來實現分類的(0叫做負類,1叫做正類)。這是一個很簡單的二分類演算法,它的思想也很容易理解。

邏輯迴歸與線性迴歸的流程很相似:

  1. 構造預測函式。根據訓練的樣本資料,構造模型來預測輸入變數 x 的輸出值(或類別)。
  2. 構造損失函式或似然函式。要使模型的引數最大程度符合實際模型,就要使損失函式值最小
  3. 求損失函式的最小值或似然函式的最大值。損失函式的最小值(或似然函式的最大值)所對應的引數即為模型的最優引數。根據所求引數值,即可對輸入變數 x 進行預測。

Sigmoid函式

通常,我們在預測值的時候,線性迴歸是最常用的方法。但由於線性迴歸輸出的值是連續的,因此並不適合解決分類問題。然而,我們可以通過將連續值對映到離散值,來使得我們可以利用線性迴歸的方法來解決分類問題。這時我們就需要一個對映函式,最常使用的就是 Sigmoid 函式(也可以稱為 Logistic 函式):

g(z)=11+ezg(z) = \frac1{1 + e^{-z}}

該函式就可以實現將連續值對映到 (-1,1) 區間,下圖是它的影象: Sigmoid 函式

之所以使用該函式,是因為它具有其他很好的性質,這裡只利用它的對映性質就足夠了。

它的導數形式為:

求導

似然函式

邏輯迴歸的預測函式為:

hθ(x)=g(θTx)=11+eθTxh_\theta(x) = g(\theta^Tx) = \frac1{1 + e^{-\theta^Tx}}

這個預測值,也可以理解為變數 x 屬於哪一個分類的概率值,即:

P(y=1x;θ)=hθ(x)P(y=0x;θ)=1hθ(x) P(y = 1| x;\theta) = h_\theta(x)\\ \ \ \ \ \ \ \ P(y = 0| x;\theta) = 1 - h_\theta(x)

根據伯努利公式,可以將這兩個寫成一個式子:

P(yx;θ)=(hθ(x))y(1hθ(x))1yP(y | x;\theta) = {(h_\theta(x))}^y{(1 - h_\theta(x))}^{1 - y}

假設有 m 個訓練樣本,則似然函式可以寫為:

似然函式

梯度下降法求解

準確地說,求解似然函式最大值的方法是利用 “梯度上升” 的方法,與梯度下降法相似,梯度上升法也是不斷地找到該位置的最優方向前進,只不過梯度上升是每次找到該位置可以到達最高的方向。

由於需要求偏導,為了使求導簡單,這裡取似然函式的對數形式:

l(θ)=logL(θ)=i=1m(y(i)logh(x(i))+(1yi)log(1h(x(i)))) l(\theta) = logL(\theta) =\sum_{i = 1}^m (y^{(i)}logh(x^{(i)}) + (1 - y^{i})log(1 - h(x^{(i)})))

l(θ)l(\theta) 進行求導:

似然函式求導

根據梯度上升法:θ=θ+αl(θ)\theta = \theta + \alpha\nabla l(\theta) 有:

θj=θj+α(y(i)hθ(x(i)))xj(i)\theta_j = \theta_j + \alpha(y^{(i)} - h_\theta(x^{(i)}))x_j^{(i)}

總結

Logistic迴歸最大的優點就是實現簡單,計算量小;但也有一個最大的缺陷,就是隻能解決二分類問題,若要解決多分類問題,可以進行擴充套件,典型的演算法就是 softmax 方法,這裡就不詳細介紹了,以後再寫。

最近剛開始學習機器學習,想通過部落格的方式寫一些自己的理解,如果有錯誤的地方,希望大家給予糾正,謝謝。

參考文獻