相比於week1中討論的單變量的線性迴歸,多元線性迴歸更具有一般性,應用範圍也更大,更貼近實際。
Multiple Features
上面就是接上次的例子,將房價預測問題進行擴充,添加多個特徵(features),使問題變成多元線性迴歸問題。
多元線性迴歸將通過更多的輸入特徵,來預測輸出。上面有新的Notation(標記)需要掌握。
相比於之前的假設:
我們將多元線性迴歸的假設修改爲:
每一個xi代表一個特徵;爲了表達方便,令x0=1,可以得到假設的矩陣形式:
其中,x和theta分別表示:
所有的訓練樣本按行存貯在矩陣X中,看一個例子:
這樣,我們可以通過向量的計算,直接得到一個m×1的假設結果向量:
Gradient Descent For Multiple Variables
梯度下降的通用形式依然不會變化:
只是,和單變量線性迴歸不同的是,多元線性迴歸需要同時迭代n+1個theta;
Gradient Descent in Practice I - Feature Scaling
特徵歸一化,總的說來是爲了讓特徵之間的數值差距縮小,使數據分散在同一個數量級範圍。
關於這樣做的好處,可以減小數量級偏大的特徵對數量級偏小特徵的影響,比如上面所說的房屋面積size,和臥室數量;
如果將這兩個特徵畫在上面的二維圖中,就會變成一個瘦長的橢圓。
總之,如果想要使梯度下降算法收斂的更快,就需要使用特徵歸一化Feature Scaling,使特徵分佈在相近的範圍中。
使新的特徵最好分佈在[-1,1]中,如上面使用xi/(數據範圍:max-min)。
通常情況下,數據分佈在[-1/3,1/3] or [-3,3]都是可以接受的。
正規化均值,使數據集的均值爲0.(不要對x0使用)
可以一步同時完成數據歸一和正規化:
其中μi爲對應特徵的均值;Si是特徵數據已知的分佈範圍,通常是(max - min)來計算,或者爲數據的標準差。
Gradient Descent in Practice II - Learning Rate
學習率a對於梯度下降是關鍵,下面就來討論如何選取使算法高效運行的a值。
我們可以作關於損失函數 J(theta)和 迭代次數的函數,在指定的學習率a下的圖象,
如果函數 J 不是單調減小的,那麼需要減小a。
多次選擇a,需要得到一個足夠小的a,使得 J 在每一步迭代中都 不斷減小;
但是如果a太小,梯度下降會收斂的很慢,這時也需要略微增大a。
選擇a的原則:最好先找到最大的使 J 單調減小的a,最終選擇比最大的a略小的值。
每次選擇可以增大或減小3倍,然後再增大或減小數量級。
Features and Polynomial Regression
實際應用中,我們只使用簡單的‘直線’迴歸顯然是不夠的,我們大多數情況下需要使用多項式擬合。
單看這些數據點的分佈,直觀上感覺使用曲線比直線擬合的效果要好一些。
根據實際的例子,關於房價的預測,size越大,房價不會下跌,選用三次函數擬合數據更好。
同時,平方根函數也是不錯的選擇:。
(注:如使用多項式迴歸,一定要使用特徵歸一化)
Normal Equation
Normal Equation是另外一種求參數theta的方法。
我們知道,梯度下降反覆迭代的目的,就是求得那個最優解,而Normal Equation的思想就是直接通過求導,得到theta。
其對所有的θj分別求偏導數,然後使它們爲0,解這些方程組,求得theta。
這樣就不需要通過反覆迭代而直接求得結果,效率頗高。下面是一個例子:
這是方法的矩陣表示:
相較於梯度下降,Normal Equation有以下優勢:
不需要選擇a,不需要進行迭代,只需計算一個n×n的轉置矩陣,算法效率高,
而且在Normal Equation中不需要進行特徵歸一化操作。
注意:當n>10,000時,Normal Equation的計算代價過大,建議使用梯度下降。
Normal Equation Noninvertibility
如果XTX不可逆,根據上面的Normal Equation求theta的公式,原則上是不能使用的,那應該怎麼處理這種情況?
XTX不可逆的情況:
1)冗餘的特徵(呈線性關係):刪除多餘的特徵;
2)特徵過多,訓練數據過少(m<=n):刪除某些特徵,或 使用“regularization ”。