1. 程式人生 > >初學ML筆記N0.1——線性迴歸,分類與邏輯斯蒂迴歸,通用線性模型

初學ML筆記N0.1——線性迴歸,分類與邏輯斯蒂迴歸,通用線性模型

1.線性迴歸

線性迴歸,即假設使用一個線性的模型方程,來擬合特徵與結果,如下

圖片

向量形式:

圖片

x1,x2為輸入特徵。在上式中,theta則為每個特徵所對應的權重值,上式隱含了一個條件,即我們假設還有x0這個特徵,其值全部為1。

定義cost function為:

圖片

上式可以看到,J(θ)的值即為所有訓練集的偏差平方和,我們的目標即是找到一組合適的θ,來使J(θ)達到最小化。

1.1梯度下降

求解θ:

圖片

對J(θ)求偏導數再帶入:

圖片
由以上公式可以看到,對於每個θj,都會用到所有的訓練集資料,經過不斷的迭代,並且是每個θ都同時迭代,最終θj會收斂到最合適的值去。
α叫做學習率,其值大小影響收斂進度,可以想象到,如果α過大,一次性步長過多,那麼可能造成收斂來回震盪形式;如果α過小,當快要收斂完畢時,偏導數會很小,兩個很小的數相乘會更小,那麼收斂的速度就大大降低了。通常,α可以通過實驗選取,0.001,0.01,0.1等。
另外,還存在一個隱性的影響收斂速度的原因,及每個特徵的取值範圍問題。當我們繪製出J(θ)等高線,發現由於每個特徵範圍不一樣,等高線則存在高矮胖瘦問題,這對於梯度下降方法有很大的副作用,若我們起始點選取得不好,那麼收斂將會變得很慢。為了解決這個問題,我們將所有引數都統一到同一個尺度去,比較簡單的做法就是將其變為0均值,及先減掉該特徵均值,再除以該特徵的最大範圍值。

1.2 Normal equation

直接瞭解公式:

圖片

其中X向量的每一行,即為一個訓練樣本:

圖片

y向量為訓練集的樣本的值:

圖片
這裡要注意的是(X^T X)雖然是方陣,但仍有其不可逆的可能性,常見的引起原因就是引數個數比訓練樣本的個數多,此時要麼引入regulazrization項,或者去掉一些相關性強的特徵項。
另外,在矩陣求解時,不用對X陣像梯度下降法那樣進行歸一化處理了。

1.3Local weighted線性迴歸

普通線性迴歸可能有過擬合與欠擬合問題,所以,這裡引入一種改進演算法:

圖片

其中ω^[i] 一種比較標準的選擇如下:

圖片

這裡實際上是一個分段線性迴歸,我們要提前使用到想要預測的樣本值x,並在x附近做線性迴歸,由ω^[i] 表示式可以看到,當X^[i] 離X很近時,ω^[i] 趨近於1,也就是說這些點的權重比較大;當X^[i] 離X遠時,ω^[i] 趨近於0,即離預測點越遠,權重越小。
其中,τ叫做bandwidth變數,作用類似於α,其影響了距離與權重大小的關係,也是一個通過實驗得出的值。

2.分類與邏輯斯蒂迴歸

以上內容,都討論的是迴歸內容,即預測值是連續的,對於有些情況,取值通常就兩項,0或者1。我們必須將預測的函式值對映為0或者1,此時我們選擇的函式如下:

圖片
圖片

以上函式就叫做邏輯斯蒂函式。它是一個連續函式,我們可以假設其上的點的值,就是取到其X的概率。在X靠近0的地方,概率較小,這也能說通,因為X=0處,就是Y=0與Y=1交界的地方,在那裡容易判斷出錯,所以概率較小,越偏離0,概率越大。所以我們做出如下假設:

圖片

寫緊湊一點就是:

圖片

接著考慮如何選取cost fuction。
有兩種考慮方式,得出的結果都一樣。
其一,假設所有m個訓練樣本都是獨立的,我們利用θ的似然函式來求解。如下:

圖片

兩邊同取對數,

圖片

為了求似然函式的最值,我們還是用梯度下降公式進行迭代。此時,公式為:

圖片

注意,中間變為了加號,因為我們要尋找似然函式的最大值。
接著跟第一節一樣,對函式求偏導數,得出最後結論:

圖片

可以發現,其形式跟線性迴歸方程形式是一樣的。
其二,在分類情況下,考慮訓練樣本中值為1的樣本,此時我們的cost fuction要求當我們預測值為1時,cost fuction值最小要為0(儘量減少cost的意思),當我們預測值為0時,cost fuction要足夠大(表示我們預測有誤),這時,採用log(h(x))剛好能滿足要求。接著考慮訓練樣本中值為0的樣本,情況剛好相反,我們採用log(1-h(x))。將兩種情況寫在一起,即為y*log(h(x))+(1-y)*log(1-h(x))。假設樣本間是獨立的,那麼我們就可以利用上邊的方法,求取最大似然值了。

2.1牛頓法求取似然函式最值

牛頓法就是通過不斷迭代,來求得函式值為0處的引數值。其工作原理如下圖:

圖片

通過不斷求取切線與X軸的新交點作為迭代的值,來收斂到函式值為0的那一點。
但這與我們求取似然函式最值有什麼關係?
考慮到函式最值就是其導函式的零點那個值,我們就可以利用牛頓法求取似然函式的導函式的零點,則找到了我們想要的極值了。
所以,迭代公式為:

圖片

化簡後為:

圖片

其中,H^-1 為Hessian矩陣,形式為:

圖片

2.2梯度下降法與牛頓法對比

梯度下降法需要靠經驗選擇學習速率,牛頓法則不需要任何額外引數。
梯度下降法需要通過大量迭代次數才能找到最小值,牛頓法迭代次數則較少。
特徵數量較少時選用牛頓法,較大時選用梯度下降法,通常以1000為界。

3.通用線性模型

首先定義一個指數簇函式如下形式:

圖片

什麼叫通用線性模型呢?
意思就是以上函式模型能夠表示一類線性模型。
前文中討論的線性迴歸模型與分類模型,均可用以上通式來表示。
對於分類問題的伯努利模型:

圖片

紅線三個部分可以與通式進行對比。
對於迴歸問題的高斯模型:

圖片

同樣也可寫為指數簇函式形式。

3.1通用線性模型例子

如果想預測單位小時內,進入你店內(或者瀏覽你網頁)的人數,那該怎麼建立模型呢?
首先,選取特徵,因素很多,如促銷活動、廣告投放、天氣以及是否是週末。
然後,我們知道這種情況的概率模型符合泊松分佈,但是如何建立模型呢?
這就利用到了我們的通用線性模型。泊松分佈模型正是指數簇函式中的一員。