機器學習筆記4 —— 多特徵量線性回歸模型
我們將學習一種新的、更為有效的線性回歸方法,這種方法適用於多個變數(特徵量)。
Multiple features(多變數):
在我們之前的房價預測裡面,我們只有房子的大小一個變數x,從而我們只是用這個單一特徵量來預測房子的價格。但是實際情況往往不是這樣的:
實際上我們往往考慮得更多,不僅是房子的大小,可能還會有卧室的數量、房子的樓層、房子使用年限,綜合各種變數去預測房子的價格。
現在我們有了四個特徵量了,那應該怎麼表示呢?
number of features (特徵量的數目)
input(features) of
training example.(第i行的訓練樣本)
value of feature
in
training example.(第i行第j個的訓練樣本)
練習1
In the training set above, what is
A.The size(in?
) of the
home in the training set B.The size(in
) of the
home in the training set C.The age(in years) of the
home in the training set
D.The age(in years) of the
Answer:Bhome in the training set
既然我們有了多個特徵量,那麼我們之前的假設函數 就不能使用這種只有兩個參數的表達方式了。
取而代之,我們把線性回歸方程設為這樣:
為了表示方便,我們定義 (
)。我們可以把它理解為多定義了一個額外的第0個特徵量。(其實是為了向量相乘時
)
那麼我們可以提取特徵向量x:
同時我們把參數 也看做一個向量:
所以我們的假設函數就可以表示為這樣子了:
那麼我們的代價函數和梯度下降函數應該怎麼表示:
代價函數:
我們可以把它當做帶有一個 n+1維向量的函數:
在之前我們只有兩個參數變數的時候,梯度下降函數是這樣子的:
但是因為現在不僅僅只有兩個特徵量:
所以我們新的梯度下降演算法就變成這樣了:
Gradient Descent in Practice I (梯度下降演算法的應用)— Feature Scaling(特徵縮放):
也就是說,將我們的特徵量範圍縮放到 的範圍內。
這是為什麼呢,有什麼用呢?
我們還是舉預測房價的例子。
假如我們有兩個變數,一個是房子的大小 (範圍是0-2000平米),另一個是房子卧室的數量
(範圍是1-5個),假如我們畫出我們的代價函數
的圖像,
草圖大概是這樣子的:
因為兩個參數的範圍不一樣,2000:5的比例就顯得圖像特別橢圓,圖像難看點還是次要的,假如我們要用這個代價函數運行梯度下降演算法的話,我們得到的最後的結果可能需要花費很長很長一段時間才收斂到最小值,並且很容易來回波動。
但是我們採取這個特徵縮放:
將兩個變數的值都控制在兩個較小且接近的範圍內,
代價函數的草圖就會變的圓圓的,並且運行梯度下降演算法的時候就會更快更方便通向全局最小值:
更一般的情況,我們執行特徵縮放的時候,
我們一般會把每一個特徵量範圍盡量都控制在[-1,1]。
除了將特徵值除以最大值以外,有時候我們也會 Mean normalization(均值歸一化):
我們通過用 代替
,讓特徵值具有為0的平均值。
注意了,公式是: (這裡的
指的是數據的平均值,
指的是數據範圍)
例如剛才的房價預測:
練習2
Suppose you are using a learning algorithm to estimate the price of houses in a city. You want one of your featuresto capture the age of the house. In your training set, all of your houses have an age between 30 and 50 years, with an average age of 38 years. Which of the following would you use as features, assuming you use feature scaling and mean normalization ? A.
age of house
B.
C.age of house /50
(age of house-38) /50D.
(age of house-38) /20Answer:D
另一個方法就是調整我們的 (學習速率):
這是我們的梯度下降演算法: ,我們的目標是:
怎麼保證梯度下降是正確的和怎麼選擇我們的學習速率 。
我們先來講講怎麼保證梯度下降演算法是運行正確的?
先看看梯度下降的公式: ,我們的目標是使
達到最小值,也就是說,每一次迭代,
的值都要比上一次的值更小。那麼決定
大小的,除了學習速率
,還有代價函數
。
所以當我們的學習速率 不變的時候,我們的代價函數
應該隨著迭代次數的增加而下降直至收斂,這樣我們的梯度下降演算法才是正確的。所以應該大概是這樣一 條曲線:
假如我們的曲線是這個樣子的:
該代價函數 隨著迭代的次數而增加,這樣的梯度下降函數明顯是不對的,那麼應該怎麼辦的?
我們可以選擇小一點的學習速率 。
有時候我們可以看到我們的函數這個樣子的,一直在震蕩:
解決的辦法就是也是將我們的學習速率 減小一點。
對於恰當好處小的學習速率 ,代價函數
應該是每一次迭代都會下降。
但是如果 學習速率 足夠小的話,梯度下降就會像嬰兒蹣跚學步那樣很慢很慢。
練習3
Suppose a friend ran gradient descent three time, with,
, and
,and got the following three plots(labeled A,B and C):
Which plots corresponds to which values of
A. A is?
,B is
,C is
B. A is
,B is
,C is
C.A is
,B is
,C is
D.A is
,B is
,C is
Answer:B分析:C太大,B太小,A適中。
多項式回歸(Polynomial Regression):
還是回到我們的房價預測,為了擬合它,我們不僅僅是只有線性回歸去模擬的哦,可能還有更好的不同模型的選擇。
也許我們想到的是二次函數模型,因為直線似乎並不能很好地去擬合這些數據:
但是二次模型也好像不行,因為二次模型最後的話會降回來,所以三次函數應運而生:
因為三次函數後面增長得很快,所以一種更合理的擬合應該是:
練習4
Suppose you want to predict a houses price as a function of its size.Your model is.Suppose size ranges from 1 to 1000(
).You will implement this by fitting a model
.Finally,suppose you want to use feature scaling(without mean normalization).Which of the following choices for
and
should you use ?(Note:
).A.
B.
C.
D.
Answer:C分析:特徵縮放,
的範圍[0,1000],
,所以範圍是[0,
]
這樣看起來似乎有點難以抉擇,但是我們後面會學到如何自動去選擇模型進行擬合。
筆記整理自Coursera吳恩達機器學習課程。
避免筆記的冗雜,翻閱時不好找,所以分成幾個部分寫,有興趣的同學可以關注一下其它的筆記。
機器學習筆記1 —— 機器學習定義、有監督學習和無監督學習
機器學習筆記2 —— 線性模型、價值函數和梯度下降演算法
機器學習筆記3 —— 線性代數基礎
推薦閱讀:
※請問為何「E(XY)=E(X)E(Y)」或者「相關係數=0」等價於「變數之間沒有線性關係」?有沒有幾何解釋呢?
※回歸演算法之線性回歸
※【西瓜書】周志華《機器學習》學習筆記與習題探討(三)①
※機器學習筆記9 —— 過擬合和正則化
※《Machine Learning:Regression》課程第6章KNN-Regression & Kernel Regression & non-parametric問題集