1. 程式人生 > >機器學習-迴歸

機器學習-迴歸

一、引言

  本材料參考Andrew Ng大神的機器學習課程 http://cs229.stanford.edu,以及斯坦福無監督學習UFLDL tutorial http://ufldl.stanford.edu/wiki/index.php/UFLDL_Tutorial

  機器學習中的迴歸問題屬於有監督學習的範疇。迴歸問題的目標是給定D維輸入變數x,並且每一個輸入向量x都有對應的值y,要求對於新來的資料預測它對應的連續的目標值t。比如下面這個例子:假設我們有一個包含47個房子的面積和價格的資料集如下:

 

我們可以在Matlab中畫出來這組資料集,如下:

  看到畫出來的點,是不是有點像一條直線?我們可以用一條曲線去儘量擬合這些資料點,那麼對於新來的輸入,我麼就可以將擬合的曲線上返回對應的點從而達到預測的目的。如果要預測的值是連續的比如上述的房價,那麼就屬於迴歸問題;如果要預測的值是離散的即一個個標籤,那麼就屬於分類問題。這個學習處理過程如下圖所示:

  上述學習過程中的常用術語:包含房子面積和價格的資料集稱為訓練集training set;輸入變數x(本例中為面積)為特徵features;輸出的預測值y(本例中為房價)為目標值target;擬合的曲線,一般表示為y = h(x),稱為假設模型hypothesis;訓練集的條目數稱為特徵的維數,本例為47。

 

二、線性迴歸模型

  線性迴歸模型假設輸入特徵和對應的結果滿足線性關係。在上述的資料集中加上一維--房間數量,於是資料集變為:

  於是,輸入特徵x是二維的向量,比如x1(i)表示資料集中第i個房子的面積,x2(i)表示資料集中第i個房子的房間數量。於是可以假設輸入特徵x與房價y滿足線性函式,比如:

 

 

這裡θi稱為假設模型即對映輸入特徵x與結果y的線性函式h的引數parameters,為了簡化表示,我們在輸入特徵中加入x0 = 1,於是得到:

引數θ和輸入特徵x都為向量,n是輸入的特徵x的個數(不包含x0)。

  現在,給定一個訓練集,我們應該怎麼學習引數θ,從而達到比較好的擬合效果呢?一個直觀的想法是使得預測值h(x)儘可能接近y,為了達到這個目的,我們對於每一個引數θ,定義一個代價函式cost function用來描述h(x(i))'與對應的y(i)'的接近程度:

前面乘上的1/2是為了求導的時候,使常數係數消失。於是我們的目標就變為了調整θ使得代價函式J(θ)取得最小值,方法有梯度下降法,最小二乘法等。

 

  2.1 梯度下降法

  現在我們要調整θ使得J(θ)取得最小值,為了達到這個目的,我們可以對θ取一個隨機初始值(隨機初始化的目的是使對稱失效),然後不斷地迭代改變θ的值來使J(θ)減小,知道最終收斂取得一個θ值使得J(θ)最小。梯度下降法就採用這樣的思想:對θ設定一個隨機初值θ0,然後迭代進行以下更新

直到收斂。這裡的α稱為學習率learning rate。

  梯度方向由J(θ)對θ 的偏導數決定,由於要求的是最小值,因此對偏導數取負值得到梯度方向。將J(θ)代入得到總的更新公式

這樣的更新規則稱為LMS update rule(least mean squares),也稱為Widrow-Hoff learning rule。

  對於如下更新引數的演算法:

由於在每一次迭代都考察訓練集的所有樣本,而稱為批量梯度下降batch gradient descent。對於引言中的房價資料集,執行這種演算法,可以得到θ0 = 71.27, θ1 = 1.1345,擬合曲線如下圖:

  如果引數更新計算演算法如下:

這裡我們按照單個訓練樣本更新θ的值,稱為隨機梯度下降stochastic gradient descent。比較這兩種梯度下降演算法,由於batch gradient descent在每一步都考慮全部資料集,因而複雜度比較高,隨機梯度下降會比較快地收斂,而且在實際情況中兩種梯度下降得到的最優解J(θ)一般會接近真實的最小值。所以對於較大的資料集,一般採用效率較高的隨機梯度下降法。

  2.2 最小二乘法(LMS)

  梯度下降演算法給出了一種計算θ的方法,但是需要迭代的過程,比較費時而且不太直觀。下面介紹的最小二乘法是一種直觀的直接利用矩陣運算可以得到θ值的演算法。為了理解最小二乘法,首先回顧一下矩陣的有關運算:

  假設函式f是將m*n維矩陣對映為一個實數的運算,即,並且定義對於矩陣A,對映f(A)對A的梯度為:

因此該梯度為m*n的矩陣。例如對於矩陣A=,而且對映函式f(A)定義為:F(A) = 1.5A11 + 5A122 + A21A22,於是梯度為:

  另外,對於矩陣的跡的梯度運算,有如下規則:

  下面,我們將測試集中的輸入特徵x和對應的結果y表示成矩陣或者向量的形式,有:

對於預測模型有,即,於是可以很容易得到:

所以可以得到

  於是,我們就將代價函式J(θ)表示為了矩陣的形式,就可以用上述提到的矩陣運算來得到梯度:

令上述梯度為0,得到等式:,於是得到θ的值:

。這就是最小二乘法得到的假設模型中引數的值。

  2.3 加權線性迴歸

  首先考慮下圖中的幾種曲線擬合情況:

最左邊的圖使用線性擬合,但是可以看到資料點並不完全在一條直線上,因而擬合的效果並不好。如果我們加入x2項,得到,如中間圖所示,該二次曲線可以更好的擬合數據點。我們繼續加入更高次項,可以得到最右邊圖所示的擬合曲線,可以完美地擬合數據點,最右邊的圖中曲線為5階多項式,可是我們都很清醒地知道這個曲線過於完美了,對於新來的資料可能預測效果並不會那麼好。對於最左邊的曲線,我們稱之為欠擬合--過小的特徵集合使得模型過於簡單不能很好地表達資料的結構,最右邊的曲線我們稱之為過擬合--過大的特徵集合使得模型過於複雜。

  正如上述例子表明,在學習過程中,特徵的選擇對於最終學習到的模型的效能有很大影響,於是選擇用哪個特徵,每個特徵的重要性如何就產生了加權的線性迴歸。在傳統的線性迴歸中,學習過程如下:

而加權線性迴歸學習過程如下:

  二者的區別就在於對不同的輸入特徵賦予了不同的非負值權重,權重越大,對於代價函式的影響越大。一般選取的權重計算公式為:

其中,x是要預測的特徵,表示離x越近的樣本權重越大,越遠的影響越小。

 

三、logistic迴歸與Softmax迴歸

  3.1 logistic迴歸

  下面介紹一下logistic迴歸,雖然名曰迴歸,但實際上logistic迴歸用於分類問題。logistic迴歸實質上還是線性迴歸模型,只是在迴歸的連續值結果上加了一層函式對映,將特徵線性求和,然後使用g(z)作對映,將連續值對映到離散值0/1上(對於sigmoid函式為0/1兩類,而對於雙曲正弦tanh函式為1/-1兩類)。採用假設模型為:

而sigmoid函式g(z)為:

   

當z趨近於-∞,g(z)趨近於0,而z趨近於∞,g(z)趨近於1,從而達到分類的目的。這裡的

  那麼對於這樣的logistic模型,怎麼調整引數θ呢?我們假設

,由於是兩類問題,即,於是得到似然估計為:

對似然估計取對數可以更容易地求解:

接下來是θ的似然估計最大化,可以考慮上述的梯度下降法,於是得到:

得到類似的更新公式:。雖然這個更新規則類似於LMS得到的公式,但是這兩種是不同演算法,因為這裡的hθ(x(i))是一個關於θTx(i)的非線性函式。

  3.2 Softmax迴歸

  logistic迴歸是兩類迴歸問題的演算法,如果目標結果是多個離散值怎麼辦?Softmax迴歸模型就是解決這個問題的,Softmax迴歸模型是logistic模型在多分類問題上的推廣。在Softmax迴歸中,類標籤y可以去k個不同的值(k>2)。因此對於y(i)從屬於{1,2,3···k}。

  對於給定的測試輸入x,我們要利用假設模型針對每一個類別j估算概率值p(y = j|x)。於是假設函式hθ(x(i))形式為:

其中θ1,θ2,θ3,···,θk屬於模型的引數,等式右邊的係數是對概率分佈進行歸一化,使得總概率之和為1。於是類似於logistic迴歸,推廣得到新的代價函式為:

可以看到Softmax代價函式與logistic代價函式形式上非常相似,只是Softmax函式將k個可能的類別進行了累加,在Softmax中將x分為類別j的概率為:

於是對於Softmax的代價函式,利用梯度下降法使的J(θ)最小,梯度公式如下:

表示J(θ)對第j個元素θj的偏導數,每一次迭代進行更新:

  3.3 Softmax迴歸 vs logistic迴歸

  特別地,當Softmax迴歸中k = 2時,Softmax就退化為logistic迴歸。當k = 2時,Softmax迴歸的假設模型為:

我們令ψ = θ1,並且兩個引數都剪去θ1,得到:

於是Softmax迴歸預測得到兩個類別的概率形式與logistic迴歸一致。

  現在,如果有一個k類分類的任務,我們可以選擇Softmax迴歸,也可以選擇k個獨立的logistic迴歸分類器,應該如何選擇呢?

  這一選擇取決於這k個類別是否互斥,例如,如果有四個類別的電影,分別為:好萊塢電影、港臺電影、日韓電影、大陸電影,需要對每一個訓練的電影樣本打上一個標籤,那麼此時應選擇k = 4的Softmax迴歸。然而,如果四個電影類別如下:動作、喜劇、愛情、歐美,這些類別並不是互斥的,於是這種情況下使用4個logistic迴歸分類器比較合理。

 

四、一般線性迴歸模型

  首先定義一個通用的指數概率分佈:

考慮伯努利分佈,有:

  

再考慮高斯分佈:

  

一般線性模型滿足:1. y|x;θ 滿足指數分佈族E(η)  2. 給定特徵x,預測結果為T(y) = E[y|x]  3. 引數η = θTx 。

  對於第二部分的線性模型,我們假設結果y滿足高斯分佈Ν(μ,σ2),於是期望μ = η,所以:

很顯然,從一般線性模型的角度得到了第二部分的假設模型。

  對於logistic模型,由於假設結果分為兩類,很自然地想到伯努利分佈,並且可以得到,於是 y|x;θ 滿足B(Φ),E[y|x;θ] = Φ,所以

於是得到了與logistic假設模型的公式,這也解釋了logistic迴歸為何使用這個函式。

 

轉載自:https://www.cnblogs.com/fanyabo/p/4060498.html