1. 程式人生 > >系統學習機器學習之線性判別式(二)

系統學習機器學習之線性判別式(二)

1. 原文:

2 問題引入

     假設有一個房屋銷售的資料如下:

面積(m^2)

銷售價錢(萬元)

123

250

150

320

87

160

102

220

     這個表類似於北京5環左右的房屋價錢,我們可以做出一個圖,x軸是房屋的面積。y軸是房屋的售價,如下:

     clip_image001

     如果來了一個新的面積,假設在銷售價錢的記錄中沒有的,我們怎麼辦呢?

     我們可以用一條曲線去儘量準的擬合這些資料,然後如果有新的輸入過來,我們可以在將曲線上這個點對應的值返回。如果用一條直線去擬合,可能是下面的樣子:

     clip_image002

     綠色的點就是我們想要預測的點。

     首先給出一些概念和常用的符號。

     房屋銷售記錄表:訓練集(training set)或者訓練資料(training data), 是我們流程中的輸入資料,一般稱為x

     房屋銷售價錢:輸出資料,一般稱為y

     擬合的函式(或者稱為假設或者模型):一般寫做 y = h(x)

     訓練資料的條目數(#training set),:一條訓練資料是由一對輸入資料和輸出資料組成的輸入資料的維度n (特徵的個數,#features)

     這個例子的特徵是兩維的,結果是一維的。然而回歸方法能夠解決特徵多維,結果是一維多離散值或一維連續值的問題。

3 學習過程

     下面是一個典型的機器學習的過程,首先給出一個輸入資料,我們的演算法會通過一系列的過程得到一個估計的函式,這個函式有能力對沒有見過的新資料給出一個新的估計,也被稱為構建一個模型。就如同上面的線性迴歸函式。

     clip_image003

4 線性迴歸

     線性迴歸假設特徵和結果滿足線性關係。其實線性關係的表達能力非常強大,每個特徵對結果的影響強弱可以由前面的引數體現,而且每個特徵變數可以首先對映到一個函式,然後再參與線性計算。這樣就可以表達特徵與結果之間的非線性關係。

     我們用X1,X2..Xn 去描述feature裡面的分量,比如x1=房間的面積,x2=房間的朝向,等等,我們可以做出一個估計函式:

     clip_image004

     θ在這兒稱為引數,在這的意思是調整feature中每個分量的影響力,就是到底是房屋的面積更重要還是房屋的地段更重要。為了如果我們令X0 = 1,就可以用向量的方式來表示了:

     clip_image005

     我們程式也需要一個機制去評估我們θ是否比較好,所以說需要對我們做出的h函式進行評估,一般這個函式稱為損失函式(loss function)或者錯誤函式(error function),描述h函式不好的程度,在下面,我們稱這個函式為J函式

     在這兒我們可以認為錯誤函式如下:

     clip_image006

     這個錯誤估計函式是去對x(i)的估計值與真實值y(i)差的平方和作為錯誤估計函式,前面乘上的1/2是為了在求導的時候,這個係數就不見了。

     至於為何選擇平方和作為錯誤估計函式,講義後面從概率分佈的角度講解了該公式的來源。

     如何調整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一種完全是數學描述的方法,和梯度下降法。

5 梯度下降法

     在選定線性迴歸模型後,只需要確定引數θ,就可以將模型用來預測。然而θ需要在J(θ)最小的情況下才能確定。因此問題歸結為求極小值問題,使用梯度下降法。梯度下降法最大的問題是求得有可能是全域性極小值,這與初始點的選取有關。

     梯度下降法是按下面的流程進行的:

     1)首先對θ賦值,這個值可以是隨機的,也可以讓θ是一個全零的向量。

     2)改變θ的值,使得J(θ)按梯度下降的方向進行減少。

     梯度方向由J(θ)對θ的偏導數確定,由於求的是極小值,因此梯度方向是偏導數的反方向。結果為

     clip_image007     

     迭代更新的方式有兩種,一種是批梯度下降,也就是對全部的訓練資料求得誤差後再對θ進行更新,另外一種是增量梯度下降,每掃描一步都要對θ進行更新。前一種方法能夠不斷收斂,後一種方法結果可能不斷在收斂處徘徊。

     一般來說,梯度下降法收斂速度還是比較慢的。

     另一種直接計算結果的方法是最小二乘法。

6 最小二乘法

     將訓練特徵表示為X矩陣,結果表示成y向量,仍然是線性迴歸模型,誤差函式不變。那麼θ可以直接由下面公式得出

clip_image008

     但此方法要求X是列滿秩的,而且求矩陣的逆比較慢。

7 選用誤差函式為平方和的概率解釋

     假設根據特徵的預測結果與實際結果有誤差clip_image010,那麼預測結果clip_image012和真實結果clip_image014滿足下式:

clip_image015

     一般來講,誤差滿足平均值為0的高斯分佈,也就是正態分佈。那麼x和y的條件概率也就是

clip_image016

     這樣就估計了一條樣本的結果概率,然而我們期待的是模型能夠在全部樣本上預測最準,也就是概率積最大。注意這裡的概率積是概率密度函式積,連續函式的概率密度函式與離散值的概率函式不同。這個概率積成為最大似然估計。我們希望在最大似然估計得到最大值時確定θ。那麼需要對最大似然估計公式求導,求導結果既是

     clip_image017     

     這就解釋了為何誤差函式要使用平方和。

     當然推導過程中也做了一些假定,但這個假定符合客觀規律。

8 帶權重的線性迴歸

     上面提到的線性迴歸的誤差函式裡系統都是1,沒有權重。帶權重的線性迴歸加入了權重資訊。

     基本假設是

     clip_image018     

     其中假設clip_image020符合公式

     clip_image021          

     其中x是要預測的特徵,這樣假設的道理是離x越近的樣本權重越大,越遠的影響越小。這個公式與高斯分佈類似,但不一樣,因為clip_image023不是隨機變數。

     此方法成為非引數學習演算法,因為誤差函式隨著預測值的不同而不同,這樣θ無法事先確定,預測一次需要臨時計算,感覺類似KNN。

9 分類和logistic迴歸

     一般來說,迴歸不用在分類問題上,因為迴歸是連續型模型,而且受噪聲影響比較大。如果非要應用進入,可以使用logistic迴歸。

     logistic迴歸本質上是線性迴歸,只是在特徵到結果的對映中加入了一層函式對映,即先把特徵線性求和,然後使用函式g(z)將最為假設函式來預測。g(z)可以將連續值對映到0和1上。

     logistic迴歸的假設函式如下,線性迴歸假設函式只是clip_image025

clip_image026

     logistic迴歸用來分類0/1問題,也就是預測結果屬於0或者1的二值分類問題。這裡假設了二值滿足伯努利分佈,也就是

clip_image027

     當然假設它滿足泊松分佈、指數分佈等等也可以,只是比較複雜,後面會提到線性迴歸的一般形式。

     與第7節一樣,仍然求的是最大似然估計,然後求導,得到迭代公式結果為

     clip_image028

     可以看到與線性迴歸類似,只是clip_image012[1]換成了clip_image030,而clip_image030[1]實際上就是clip_image012[2]經過g(z)對映過來的。

10 牛頓法來解最大似然估計

     第7和第9節使用的解最大似然估計的方法都是求導迭代的方法,這裡介紹了牛頓下降法,使結果能夠快速的收斂。

     當要求解clip_image032時,如果f可導,那麼可以通過迭代公式

clip_image033

     來迭代求解最小值。

     當應用於求解最大似然估計的最大值時,變成求解最大似然估計概率導數clip_image035的問題。

     那麼迭代公式寫作

     clip_image036

     當θ是向量時,牛頓法可以使用下面式子表示

     clip_image037

     其中clip_image038是n×n的Hessian矩陣。

     牛頓法收斂速度雖然很快,但求Hessian矩陣的逆的時候比較耗費時間。

     當初始點X0靠近極小值X時,牛頓法的收斂速度是最快的。但是當X0遠離極小值時,牛頓法可能不收斂,甚至連下降都保證不了。原因是迭代點Xk+1不一定是目標函式f在牛頓方向上的極小點。

11 一般線性模型

     之所以在logistic迴歸時使用

     clip_image039

     的公式是由一套理論作支援的。

     這個理論便是一般線性模型。

     首先,如果一個概率分佈可以表示成

     clip_image040

     時,那麼這個概率分佈可以稱作是指數分佈。

     伯努利分佈,高斯分佈,泊松分佈,貝塔分佈,狄特里特分佈都屬於指數分佈。

     在logistic迴歸時採用的是伯努利分佈,伯努利分佈的概率可以表示成

     clip_image041

     其中

     clip_image042

     得到

     clip_image044

     這就解釋了logistic迴歸時為了要用這個函式。

     一般線性模型的要點是

     1) clip_image046 滿足一個以clip_image048為引數的指數分佈,那麼可以求得clip_image048[1]的表示式。

     2) 給定x,我們的目標是要確定clip_image050,大多數情況下clip_image052,那麼我們實際上要確定的是clip_image054,而clip_image056。(在logistic迴歸中期望值是clip_image058,因此h是clip_image058[1];線上性迴歸中期望值是clip_image060,而高斯分佈中clip_image062,因此線性迴歸中h=clip_image064)。

     3) clip_image066

12 Softmax迴歸

     最後舉了一個利用一般線性模型的例子。

     假設預測值y有k種可能,即y∈{1,2,…,k}

     比如k=3時,可以看作是要將一封未知郵件分為垃圾郵件、個人郵件還是工作郵件這三類。

     定義

     clip_image067

     那麼

     clip_image068

     這樣

     clip_image069

     即式子左邊可以有其他的概率表示,因此可以當作是k-1維的問題。

     為了表示多項式分佈表述成指數分佈,我們引入T(y),它是一組k-1維的向量,這裡的T(y)不是y,T(y)i表示T(y)的第i個分量。

     clip_image071

     應用於一般線性模型,結果y必然是k中的一種。1{y=k}表示當y=k的時候,1{y=k}=1。那麼p(y)可以表示為

     clip_image072

     其實很好理解,就是當y是一個值m(m從1到k)的時候,p(y)=clip_image074,然後形式化了一下。

     那麼

     clip_image075

     最後求得

     clip_image076

     而y=i時

     clip_image077

     求得期望值

clip_image078

     那麼就建立了假設函式,最後就獲得了最大似然估計

clip_image079

     對該公式可以使用梯度下降或者牛頓法迭代求解。

     解決了多值模型建立與預測問題。