多變量線性迴歸
(LinearRegression with Multiple Variables)
1. 多維特徵
(Multiple Features)
目前爲止,我們探討了 單變量/特徵 的迴歸模型,現在我們對 房價模型 增加更多的特徵,例如房屋樓層等,構成一個含有多個變量的模型,對於每一個訓練實例,其特徵爲 ,如下圖爲 時:
定義以下符號:
- :特徵數量
- :第 個 訓練實例,是一個向量(vector),例如上圖的
- :第 個訓練實例的第 個特徵,例如上圖的
假設函數 表示爲:進一步簡化公式,引入 ,則公式可以化爲:
模型中的參數組合是一個 維的向量,任何一個訓練實例的特徵也是 維的向量。
注意:
這裏的 是針對單個訓練實例而言,並不是整個訓練集,對整個訓練集進行向量化得到特徵矩陣,見下一篇 線性迴歸向量化及正規方程
2. 多變量梯度下降
(Gradient Descent for Multiple Variables)
與單變量線性迴歸類似,在多變量線性迴歸中我們也構建一個代價函數,等於所有建模誤差的平方和,即:
其中和單變量線性迴歸問題一樣,我們的目標就是找出使得代價函數取得最小值的一個參數組合,其批量梯度下降算法爲:
求導後得到:
可以驗證一下:
與單變量線性迴歸一樣,多變量線性迴歸中批量梯度下降算法的思想就是在開始時隨機選擇一個參數組合,根據計算所有預測結果及其代價函數,然後再給所有參數更新賦值,如此循環直到收斂爲止。
除了用梯度下降法不斷迭代來求解代價函數最小值,還有一種稱爲 正規方程(normal equations)的方法可以直接求解,見下一篇(4)線性迴歸模型向量化及正規方程
3. 梯度下降法實踐
(Gradient Descent in Practice)
3.1 特徵縮放
(Feature Scaling)
在面對多維特徵問題的時候,要保證這些特徵都具有相近的尺度,這將幫助梯度下降算法更快地收斂。
以房價問題爲例,假設我們使用兩個特徵,房屋的面積 和 房間的數量,面積的值爲 0-2000平方英尺,而房間數量的值則是0-5,以兩個參數 和 分別爲橫縱座標,繪製 代價函數 的等高線圖,能看出圖像會顯得很扁,梯度下降算法需要非常多次的迭代才能收斂。
注1:上圖呈豎直橢圓狀的原因爲:特徵 相較於 大很多,則對應的 有較小波動時,就會導致代價函數產生較大的波動,即等高圖中橫軸方向的等高線比縱軸密集(看不懂等高圖的可以參考這個鏈接:3D講解等高線地形圖)
注2:梯度下降時來回的波動稱爲震盪現象
解決的方法是嘗試將所有特徵的尺度都儘量縮放到-1到1之間。如圖:
常用以下兩種方法進行特徵縮放:
-
均值歸一化 Mean normalization
也稱爲 Z-score標準化 ,給予原始數據的均值(mean)和標準差(standard deviation)進行數據的標準化。經過處理的數據符合標準正態分佈,即均值爲0,標準差爲1。轉化函數爲:其中 爲所有樣本數據的平均值, 爲所有樣本數據的標準差。量化後的特徵將大部分都分佈在[-1,1]之間。 -
Min-Max標準化(Min-Max Normalization)
也稱爲離差標準化,是對原始數據的線性變換,使結果值映射到[0 , 1]之間。轉換函數如下:其中max爲樣本數據的最大值,min爲樣本數據的最小值。這種方法有個缺陷就是當有新數據加入時,可能導致max和min的變化,需要重新定義。
3.2 學習率
(Learning Rate)
梯度下降算法收斂所需要的迭代次數根據模型的不同而不同,我們不能提前預知,但可以繪製迭代次數和代價函數的圖表來觀測算法在何時趨於收斂。如下圖所示, 應該隨着迭代次數增加而逐漸減小至趨於0。
也有一些自動測試是否收斂的方法,例如將代價函數的變化值與某個閥值(例如0.001)進行比較,但通常看上面這樣的圖表更好。
- 梯度下降算法的每次迭代受到學習率的影響,如果學習率過小,則達到收斂所需的迭代次數會非常高;
- 如果學習率過大,每次迭代可能不會減小代價函數,可能會越過局部最小值導致無法收斂。
通常可以考慮嘗試些學習率:
3.3 特徵和多項式迴歸
(Features and Polynomial Regression)