1. 程式人生 > >機器學習實戰讀書筆記(4)--logistic迴歸

機器學習實戰讀書筆記(4)--logistic迴歸

Logistic迴歸

假設我們有一些資料點,用一條直線對這些點進行擬合,這個擬合的過程成為迴歸.在計量經濟學中我們大量的使用過線性迴歸,線性迴歸的模型試圖得到一個通過屬性的線性組合來進行預測的函式,即

f ( x ) = W
T X + b

式中的W和b通過學習獲得,模型就被標定了.而logistic迴歸的思想是,迴歸的結果不是一個實值,而是一個二分類的概率.這個變數到函式值的對映關係應滿足這樣一些關係:(1)我們需要Y代表的是概率即Y∈(0,1)。(2)我們需要X各維度疊加和在0附近變化幅度比較大,並且是非線性的變化。而在很大或很小的時候,幾乎不變化,這是基於概率的一種認識與需要。感性的一個例子,想想你學習努力的程度與從60分提高到80分和80提高到100分並不是線性的。(3)這個關係的公式要在之後形成的cost function是凸函式。

為了從屬性對映到概率,我們首先想到的是一個分段函式

y ( x ) = { 1
X < 0 0 X > 0

但是這個函式並不連續,不能滿足第三個條件,這時出現了sigmoid函式,其形式如下:
y = 1 1 + e ( z )
這個函式的影象如下:

x = arange(-50,50,1)
y = 1.0 / (1 + exp(-x))
plt.figure()
plt.plot(x,y)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
# set_position中的引數元組的第二個值可取-1,0,1分別代表相對‘data’的不同的位置
ax.spines['bottom'].set_position(('data', 0.5))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
plt.show()
<matplotlib.figure.Figure at 0x7fd6ce41ada0>






[<matplotlib.lines.Line2D at 0x7fd6ce202550>]

png

這個函式滿足我們上文中三個條件的要求,並且有較好的數值表現,效果接近理想的分段函式,但是又是連續的.所以,我們可以使用這個函式將特徵對映到二分類的概率.線上性迴歸中,我們使用最小二乘法求解引數,在logistic函式的引數標定的目標函式是什麼呢?

構造最優化問題的目標函式

考慮單調可謂函式g(x),令

y = g ( w T + b )
這樣的模型成為廣義線性模型,其中函式g(x)稱為聯絡函式.在logistic迴歸中,這個函式就是sigmoid函式.對其線性邊界情況,邊界形式就是 W T X .

構造預測函式為:

h θ ( X ) = g ( W T X ) = 1 1 + e ( W T X + b )
函式 h θ ( X ) 有特殊含義:它表示結果取1的概率,因此對於輸入X分類結果為類別1和類別0的概率分別為:
P ( y = 1 | x ; θ ) = h θ ( X ) = ( h θ ( X ) ) y P ( y = 0 | x ; θ ) = 1 h θ ( X ) = ( 1 h θ ( X ) ) ( 1 y )
上面兩個式子是互斥的所以可以統一成一個式子,即:
P ( y | x ; θ ) = ( h θ ( X ) ) y ( 1 h θ ( X ) ) ( 1 y )
對於所有的X,目標是使P(X)儘可能大,對所有資料取似然函式
L ( θ ) = i = 1 m ( h θ ( X ) ) i y ( 1 h θ ( X ) ) ( 1 y i )
對兩邊取對數化簡,有
l ( θ ) = i = 1 m ( y i l o g h θ ( X ) ) + ( 1 y i ) l o g ( 1 h θ ( X ) )
這就是我們的第一版目標函式,對數似然函式最大,考慮規劃問題的標準形式和平均概率的問題,對其乘以一個係數-1/m,有