1. 程式人生 > >《機器學習實戰》第五章----Logistic迴歸

《機器學習實戰》第五章----Logistic迴歸

Logistic迴歸

所謂迴歸,就是給一組資料,構建一個多項式對整個資料進行擬合.建立多項式 f = θ 0 x

0 + θ 1 x 1 + + θ n x
n
= θ T X .

sigmod函式

sigmod函式也是一種階躍函式,為什麼經常能看見這個函式在分類問題中經常見到,包括神經網路的啟用函式,這是由於S函式在的值域在

[ 0 , 1 ] 之間,當 x = 0 時, y = 0.5 ,很容易理解的一點是,我們可以從概率的角度來說明這個問題,當屬於A類的S函式的值大於0.5,則可判斷該樣本屬於A類,則可認為.Sigmod函式的表示式如下:

f ( x ) = 1 1 + e x
影象如下所示:
這裡寫圖片描述

COST FUNCTION

代價函式的存在是為了訓練過程中調整引數的.一般的代價函式用平方誤差來表示,並且對於迴歸問題,這樣的代價函式通常是很有用的.假設函式 h θ ( X ) = 1 1 + e θ T X ,定義代價函式如下:

J ( θ ) = 1 m i = 1 m C o s t ( h θ ( x ( i ) ) , y ( i ) )
其中:
C o s t ( h θ ( x ) , y ) = { l o g ( h θ ( x ) ) , if  y = 1   l o g ( 1 h θ ( x ) ) , if  y = 0  
這裡使用 l o g 函式也是為了後面梯度演算法求導的方便.在一個二分類問題中,我們可以將 y 1 y 作為係數,寫成一個統一的代價函式表示式:
C o s t ( h θ ( x ) , y ) = y l o g ( h θ ( x ) ) ( 1 y ) l o g ( 1 h θ ( x ) )
這樣得到最終的代價函式 J ( θ ) 為:
J ( θ ) = 1 m [ i = 1 m y ( i ) l o g ( h θ ( x ( i ) ) ) + ( 1 y ( i ) ) l o g ( 1 h θ ( x ( i ) ) ) ]

梯度上升演算法

無論是梯度上升還是梯度下降演算法,其原理都是一樣的,都是求引數的偏導數,只是一個求最大值,一個求最小值而已.如下圖所示:
這裡寫圖片描述
梯度演算法就是以最快的速度進行最值的尋找,還記得高中時候求函式最值的方法嗎,求其偏導數,令偏導數為0,批量梯度下降也是這個原理,但我們這裡不做具體介紹.梯度上升演算法最大的缺點就是隻能找到區域性最小值,因為從不同的初值進行梯度上升或下降的時候,其結果是不同的,如下圖所示:
這裡寫圖片描述
解決這個問題就可以參照貪心演算法,我們在程式碼中用的也是隨機梯度上升演算法,程式碼如下:

#隨機梯度上升演算法