機器學習之——多變量線性迴歸

在之前的博客中,描述過單變量線性迴歸(Linear Regression with One Variables)的模型,這次來分享一下多變量線性迴歸模型(Linear Regression with Multiple Variables)

我們還是使用之前的問題,對房價的預測。這一次增加更多的特徵,例如房子的樓層數、臥室數量等,這樣就構成了一個含有多個變量的模型,模型中的特徵我們標記爲(X1,X2,X3,...,Xn)。



增添了更多的特徵之後,我們還要引入一些新的標註:


支持多變量的假設函數 h 的表達式爲:


我們看到,這個表達式中有n+1個參數和n個變量(ø0沒有變量),我們爲了使公式能夠簡化一些,添加一個X0使其的值爲1,即:X0=1,這樣公式便轉化爲:


此時,這個模型中的參數是一個n+1維的向量,實際上在多變量回歸模型中,任何一個訓練集也都是n+1維的向量,特徵矩陣X的維度此時是m*n+1。

所以,我們的假設函數 h 的表達式可以簡化成:


參數向量ø的轉置乘上特徵向量X。

到目前,我們得到了模型的假設函數 h ,下一步我們來構建代價函數(Cost Function)

多變量線性迴歸的代價函數與單變量線性迴歸的代價函數相似,是所有建模誤差的平方和(MSE),即:


我們得到了代價函數,我們的目標也就和單變量線性迴歸問題中的一樣,找出使得代價函數最小的一系列參數。我們也是用批量梯度下降(Batch Gradient Descent)的方法:


將代價函數帶入,即:


求導之後,得到:


在初始狀態,我們隨機選擇一系列參數值,計算所有的預測結果之後,再給所有的參數一個新的值,如此循環直到收斂(convergence)

到此,我們已經實現了多變量的線性迴歸。但是在計算的過程當中,我們發現,有很多時候,參數的取值差距非常大,導致很多時候要進行大量的大數值的計算。在處理多維特徵(多變量)的問題時,我們要保證這些特徵都具有相近的範圍,這樣將更好的幫助梯度下降算法更快的收斂。這時,我們可以使用特徵縮放(Features Scaling)方法。

我們還是以放假預測問題爲例,假設我們使用兩個特徵,房屋的尺寸和房間的數量。房屋的尺寸範圍在 0 ~ 2000 平方英尺, 房間數量在 0 ~ 5 , 以這兩個參數爲橫縱座標,繪製代價函數的等高線圖能看出圖像會顯得很扁,梯度下降算法要執行很多次迭代才能收斂。


特徵縮放解決這個問題,是嘗試將所有特徵的取值範圍儘量都縮放到 -1 ~ 1 之間。最簡單的方法是令 :


其中,Xn代表第n個特徵,µn代表平均值(AVE),Sn代表標準差(SD)

梯度下降算法的表達式中,有一個alpha學習速率(Learning Rate)。算法所需要的迭代次數根據模型的不同而不同,我們這方面不能夠提前預知,我們可以繪製迭代次數和代價函數的圖表來觀測算法在何時趨於收斂。


也有一些自動測試是否收斂的方法,例如:將代價函數的變化值與一個常數閾值(0.001)進行比較。但是我個人感覺還是上面的圖表更直觀一些。

梯度下降算法每次迭代,都會受到學習速率的影響,如果學習速率較小,則達到收斂所需要迭代的次數就會非常高;反之,如果alpha過大,則每次迭代可能都不會減小代價函數的結果,甚至會超過局部最小值導致無法收斂。

通常,在我做一些模型時,我會設置學習速率的值在 0.01,0.03,0.1,0.3,1,3,10 這些參考值。

綜上,就是多變量線性迴歸模型的主要內容。下一次將給大家分享 多項式迴歸於正規方程(Polynomial Regression and Normal Equation)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章