在之前的部落格中,描述過單變數線性迴歸(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)

.