系統學習機器學習之線性判別式(二)
1. 原文:
2 問題引入
假設有一個房屋銷售的資料如下:
面積(m^2) |
銷售價錢(萬元) |
123 |
250 |
150 |
320 |
87 |
160 |
102 |
220 |
… |
… |
這個表類似於北京5環左右的房屋價錢,我們可以做出一個圖,x軸是房屋的面積。y軸是房屋的售價,如下:
如果來了一個新的面積,假設在銷售價錢的記錄中沒有的,我們怎麼辦呢?
我們可以用一條曲線去儘量準的擬合這些資料,然後如果有新的輸入過來,我們可以在將曲線上這個點對應的值返回。如果用一條直線去擬合,可能是下面的樣子:
綠色的點就是我們想要預測的點。
首先給出一些概念和常用的符號。
房屋銷售記錄表:訓練集(training set)或者訓練資料(training data), 是我們流程中的輸入資料,一般稱為x
房屋銷售價錢:輸出資料,一般稱為y
擬合的函式(或者稱為假設或者模型):一般寫做 y = h(x)
訓練資料的條目數(#training set),:一條訓練資料是由一對輸入資料和輸出資料組成的輸入資料的維度n (特徵的個數,#features)
這個例子的特徵是兩維的,結果是一維的。然而回歸方法能夠解決特徵多維,結果是一維多離散值或一維連續值的問題。
3 學習過程
下面是一個典型的機器學習的過程,首先給出一個輸入資料,我們的演算法會通過一系列的過程得到一個估計的函式,這個函式有能力對沒有見過的新資料給出一個新的估計,也被稱為構建一個模型。就如同上面的線性迴歸函式。
4 線性迴歸
線性迴歸假設特徵和結果滿足線性關係。其實線性關係的表達能力非常強大,每個特徵對結果的影響強弱可以由前面的引數體現,而且每個特徵變數可以首先對映到一個函式,然後再參與線性計算。這樣就可以表達特徵與結果之間的非線性關係。
我們用X1,X2..Xn 去描述feature裡面的分量,比如x1=房間的面積,x2=房間的朝向,等等,我們可以做出一個估計函式:
θ在這兒稱為引數,在這的意思是調整feature中每個分量的影響力,就是到底是房屋的面積更重要還是房屋的地段更重要。為了如果我們令X0 = 1,就可以用向量的方式來表示了:
我們程式也需要一個機制去評估我們θ是否比較好,所以說需要對我們做出的h函式進行評估,一般這個函式稱為損失函式(loss function)或者錯誤函式(error function),描述h函式不好的程度,在下面,我們稱這個函式為J函式
在這兒我們可以認為錯誤函式如下:
這個錯誤估計函式是去對x(i)的估計值與真實值y(i)差的平方和作為錯誤估計函式,前面乘上的1/2是為了在求導的時候,這個係數就不見了。
至於為何選擇平方和作為錯誤估計函式,講義後面從概率分佈的角度講解了該公式的來源。
如何調整θ以使得J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一種完全是數學描述的方法,和梯度下降法。
5 梯度下降法
在選定線性迴歸模型後,只需要確定引數θ,就可以將模型用來預測。然而θ需要在J(θ)最小的情況下才能確定。因此問題歸結為求極小值問題,使用梯度下降法。梯度下降法最大的問題是求得有可能是全域性極小值,這與初始點的選取有關。
梯度下降法是按下面的流程進行的:
1)首先對θ賦值,這個值可以是隨機的,也可以讓θ是一個全零的向量。
2)改變θ的值,使得J(θ)按梯度下降的方向進行減少。
梯度方向由J(θ)對θ的偏導數確定,由於求的是極小值,因此梯度方向是偏導數的反方向。結果為
迭代更新的方式有兩種,一種是批梯度下降,也就是對全部的訓練資料求得誤差後再對θ進行更新,另外一種是增量梯度下降,每掃描一步都要對θ進行更新。前一種方法能夠不斷收斂,後一種方法結果可能不斷在收斂處徘徊。
一般來說,梯度下降法收斂速度還是比較慢的。
另一種直接計算結果的方法是最小二乘法。
6 最小二乘法
將訓練特徵表示為X矩陣,結果表示成y向量,仍然是線性迴歸模型,誤差函式不變。那麼θ可以直接由下面公式得出
但此方法要求X是列滿秩的,而且求矩陣的逆比較慢。
7 選用誤差函式為平方和的概率解釋
假設根據特徵的預測結果與實際結果有誤差,那麼預測結果和真實結果滿足下式:
一般來講,誤差滿足平均值為0的高斯分佈,也就是正態分佈。那麼x和y的條件概率也就是
這樣就估計了一條樣本的結果概率,然而我們期待的是模型能夠在全部樣本上預測最準,也就是概率積最大。注意這裡的概率積是概率密度函式積,連續函式的概率密度函式與離散值的概率函式不同。這個概率積成為最大似然估計。我們希望在最大似然估計得到最大值時確定θ。那麼需要對最大似然估計公式求導,求導結果既是
這就解釋了為何誤差函式要使用平方和。
當然推導過程中也做了一些假定,但這個假定符合客觀規律。
8 帶權重的線性迴歸
上面提到的線性迴歸的誤差函式裡系統都是1,沒有權重。帶權重的線性迴歸加入了權重資訊。
基本假設是
其中x是要預測的特徵,這樣假設的道理是離x越近的樣本權重越大,越遠的影響越小。這個公式與高斯分佈類似,但不一樣,因為不是隨機變數。
此方法成為非引數學習演算法,因為誤差函式隨著預測值的不同而不同,這樣θ無法事先確定,預測一次需要臨時計算,感覺類似KNN。
9 分類和logistic迴歸
一般來說,迴歸不用在分類問題上,因為迴歸是連續型模型,而且受噪聲影響比較大。如果非要應用進入,可以使用logistic迴歸。
logistic迴歸本質上是線性迴歸,只是在特徵到結果的對映中加入了一層函式對映,即先把特徵線性求和,然後使用函式g(z)將最為假設函式來預測。g(z)可以將連續值對映到0和1上。
logistic迴歸用來分類0/1問題,也就是預測結果屬於0或者1的二值分類問題。這裡假設了二值滿足伯努利分佈,也就是
當然假設它滿足泊松分佈、指數分佈等等也可以,只是比較複雜,後面會提到線性迴歸的一般形式。
與第7節一樣,仍然求的是最大似然估計,然後求導,得到迭代公式結果為
可以看到與線性迴歸類似,只是換成了,而實際上就是經過g(z)對映過來的。
10 牛頓法來解最大似然估計
第7和第9節使用的解最大似然估計的方法都是求導迭代的方法,這裡介紹了牛頓下降法,使結果能夠快速的收斂。
來迭代求解最小值。
當應用於求解最大似然估計的最大值時,變成求解最大似然估計概率導數的問題。
那麼迭代公式寫作
當θ是向量時,牛頓法可以使用下面式子表示
牛頓法收斂速度雖然很快,但求Hessian矩陣的逆的時候比較耗費時間。
當初始點X0靠近極小值X時,牛頓法的收斂速度是最快的。但是當X0遠離極小值時,牛頓法可能不收斂,甚至連下降都保證不了。原因是迭代點Xk+1不一定是目標函式f在牛頓方向上的極小點。
11 一般線性模型
之所以在logistic迴歸時使用
的公式是由一套理論作支援的。
這個理論便是一般線性模型。
首先,如果一個概率分佈可以表示成
時,那麼這個概率分佈可以稱作是指數分佈。
伯努利分佈,高斯分佈,泊松分佈,貝塔分佈,狄特里特分佈都屬於指數分佈。
在logistic迴歸時採用的是伯努利分佈,伯努利分佈的概率可以表示成
其中
得到
這就解釋了logistic迴歸時為了要用這個函式。
一般線性模型的要點是
2) 給定x,我們的目標是要確定,大多數情況下,那麼我們實際上要確定的是,而。(在logistic迴歸中期望值是,因此h是;線上性迴歸中期望值是,而高斯分佈中,因此線性迴歸中h=)。
12 Softmax迴歸
最後舉了一個利用一般線性模型的例子。
假設預測值y有k種可能,即y∈{1,2,…,k}
比如k=3時,可以看作是要將一封未知郵件分為垃圾郵件、個人郵件還是工作郵件這三類。
定義
那麼
這樣
即式子左邊可以有其他的概率表示,因此可以當作是k-1維的問題。
為了表示多項式分佈表述成指數分佈,我們引入T(y),它是一組k-1維的向量,這裡的T(y)不是y,T(y)i表示T(y)的第i個分量。
應用於一般線性模型,結果y必然是k中的一種。1{y=k}表示當y=k的時候,1{y=k}=1。那麼p(y)可以表示為
其實很好理解,就是當y是一個值m(m從1到k)的時候,p(y)=,然後形式化了一下。
那麼
最後求得
而y=i時
求得期望值
那麼就建立了假設函式,最後就獲得了最大似然估計
對該公式可以使用梯度下降或者牛頓法迭代求解。
解決了多值模型建立與預測問題。