1. 程式人生 > >機器學習理論(一)——線性回歸

機器學習理論(一)——線性回歸

隨機 .cn 過程 小寫 找到 想想 每次 回歸 所在


(一)單變量線性回歸。
舉個例子來說,假如你要在北京的五環路租房,要預測房子的價格,其中一個比較顯著的
特征就是房子的面積,根據不同的房間的面積來預測租金是多少。於是你就可以構建一個模型
橫軸是房間面積,縱軸是租金。
技術分享

橫軸是房間面積,縱軸是租金。從圖中我們可以看出這些點所在的位置近乎是在一條直線上面的。
這就是一個回歸問題,回歸一詞指的是,我們根據之前的數據即房子面積預測出一個準確的輸出值(租金)。
所以,我們寫一個假設函數。通常表示為小寫 h。h 代表 hypothesis(假設) ,h 表示一個函數,輸入是房間的面積,
因此h根據輸入的x值來得出y值,y值對應房子的租金。
技術分享

我們現在要做的便是為我們的模型選擇合適的參數theta0和theta1,在租金問題這個例子中便是直線的斜率和在
y 軸上的截距。 我們選擇的參數決定了我們得到的直線相對於我們的訓練集的準確程度,模型所預測的值與訓練

集中實際值之間的差距(下圖中藍線所指)就是建模誤差。
技術分享

我們的目標便是選擇出可以使得建模誤差的平方和能夠最小的模型參數。建模誤差的平方和便是代價函數(cost function),又叫誤差平方代價函數。
技術分享
目標就是要讓代價函數最小。
來看一下代價函數在等高線圖中的樣子
技術分享

從圖中可以看出在三維空間中存在一個最低點。也就是使得代價函數最小的點。

那麽如何找到代價函數的最小值呢,現在引入一個比較常用的算法,梯度下降算法。
梯度下降背後的思想是:開始時我們隨機選擇一個參數的組合,計算代價
函數,然後我們尋找下一個能讓代價函數值下降最多的參數組合。我們持續這麽做直到到到


一個局部最小值,因為我們並沒有嘗試完所有的參數組合,所以不能確定
我們得到的局部最小值是否便是全局最小值,選擇不同的初始參數組合,
可能會找到不同的局部最小值。
技術分享
想象一下你正站立在山的這一點上,站立在你想象的公園這座紅色山上,在梯度下降算法中,我們要做的就是旋轉 360 度,看看我們的周圍,並問自己要在某個方向上,用小碎步盡快下山。這些小碎步需要朝什麽方向?如果我們站在山坡上的這一點,你看一下周圍,你會發現最佳的下山方向,你再看看周圍,然後再一次想想,我應該從什麽方向邁著小碎步下山?然後你按照自己的判斷又邁出一步,重復上面的步驟,從這個新的點,你環顧四周,並決定從什麽方向將會最快下山,然後又邁進了一小步,並依此類推,直到你接近局部最低點的位置。 這個步子的大小就是學習速率α。梯度下降算法的每次叠代受到學習率的影響,如果學習率 α 過小,則達到收斂所需的叠代次數會非常高;如果學習率 α 過大,每次叠代可能不會減小代價函數,可能會越過局部最小值導致無法收斂。
通常可以考慮嘗試些學習率: α=0.01,0.03,0.1,0.3,1,3,10
對我們之前的線性回歸問題運用梯度下降法,關鍵在於求出代價函數的導數,即:
技術分享

推導過程略。
還有一種算法叫做正規方程算法。不需要多步梯度下降的情況下,也能解出代價函數 J 的最小
值。實際上在數據量較大的情況下,梯度下降法比正規方程要更適用一些。



(二)多變量線性回歸

剛剛我們討論了單變量特征的回歸模型,現在我們對租金模型增加更多的特征,比如樓層數,房間的數量,等,這些因素都是可以對租金的高低產生影響的。與單變量線性回歸類似,在多變量線性回歸中,我們也構建一個代價函數,則這個代價函數是所有建模誤差的平方和,即:

技術分享
我們的目標和單變量線性回歸問題中一樣,是要找出使得代價函數最小的一系列參數。

<特征縮放>
在我們面對多維特征問題的時候,我們要保證這些特征都具有相近的尺度,這將幫助梯
度下降算法更快地收斂。
以租金問題為例,假設我們使用兩個特征,房間的尺寸和房間的個數,尺寸的值為 0
1000 平方米,而房間數量的值則是 0-5,以兩個參數分別為橫縱坐標,繪制代價函數的等
高線圖能,看出圖像會顯得很扁,梯度下降算法需要非常多次的叠代才能收斂。
解決的方法是嘗試將所有特征的尺度都盡量縮放到-1 到 1 之間。
最簡單的方法是:
技術分享

了解了線性回歸的這麽多理論之後,現在讓我們用代碼實現一下線性回歸吧。




機器學習理論(一)——線性回歸