【機器學習】一文看盡 Linear Regression 線性回歸
共 13289字,需瀏覽 27分鐘
·
2024-05-11 16:03
一 線性回歸簡介
1.1 回歸的由來
FrancisGalton,英國生物學家,他研究了父母身高與子女身高之間關(guān)系后得出,若父母身高高于平均大眾身高,則其子女身高傾向于倒退生長,即會比其父母身高矮一些而更接近于大眾平均身高。若父母身高小于平均身高,則其子女身高傾向于向上生長,以更接近于大眾平均身高。此現(xiàn)象,被Galton稱之為回歸現(xiàn)象,即regression.
1.2 什么是線性回歸?
回歸分析是一種統(tǒng)計工具,它利用兩個或兩個以上變量之間的關(guān)系,由一個或幾個變量來預測另一個變量。
回歸分析中:
-
自變量只有一個時,叫做一元線性回歸, -
自變量有多個時,叫做多元線性回歸,
分類(Classification)與回歸(Regression)都屬于監(jiān)督學習,它們的區(qū)別在于:
-
分類:定性輸出稱為分類,或者說是離散變量預測。如識別正常郵件/垃圾郵件;識別圖像中的人臉/非人臉;識別信貸中的正常行為/欺詐行為。(左圖)
-
回歸:定量輸出稱為回歸,或者說是連續(xù)變量預測。如給定了房子的面積、地段和房間數(shù),預測房子的價格。(右圖)
二 房屋面積和臥室數(shù)目與房屋價格的關(guān)系
-
m: 訓練數(shù)據(jù)的大小 -
x: 輸入變量,是向量 -
y: 輸出變量,是實數(shù) -
(x,y): 一個訓練實例 -
: 第i個訓練實例,i是上標而不是指數(shù) -
n: 特征向量的個數(shù),例如本實例中為2
三 模型:線性回歸
如果假設訓練集中的數(shù)據(jù)使用線性回歸解決的話,假設函數(shù)如下:
the are the parameters (also called weights)
如果將 表示為向量: , 表示為向量: ,其中 ,則
其中, 表示以 為參數(shù)。對于一般問題,公式如下:
四 策略:最小二乘法
關(guān)于最小二乘法的詳細介紹請看如下文章:
4.1 基本思想
簡單地說,最小二乘(LMS algorithm )的思想就是要使得估計點和觀測點之間的距離平方和達到最小.這里的 二乘 指的是用平方來度量觀測點與估計點的遠近(在古漢語中“平方”稱為“二乘”),“最小”指的是參數(shù)的估計值要保證各個觀測點與估計點的距離的平方和達到最小。
4.2 最小二乘的作用
用于得到回歸方程的參數(shù)的一個最優(yōu)估值。在統(tǒng)計學上,該估值可以很好的擬合訓練樣本。并且對于新的輸入樣本,當有了參數(shù)估值后,帶入公式可以得到輸入樣本的輸出。
4.3 損失函數(shù)(cost function)
五 算法:梯度下降(gradient descent)
關(guān)于梯度下降算法詳細介紹請看往期文章:梯度下降法
使用梯度下降(gradient descent)來求參數(shù),更新規(guī)則為:
(This update is simultaneously performed for all values of j = 0, . . . , n.) Here, α is called the learning rate.
當只有一個訓練樣例時,偏導數(shù)的計算公式如下:
將上面結(jié)果帶入公式(6)得:
或
當然,公式(7) /(8)只是針對一個訓練實例時的更新規(guī)則。The rule is called the LMS update rule (LMS stands for “least mean squares”),and is also known as the Widrow-Hoff learning rule.
從公式(8)中可以看出每次更新的值是和誤差項(error): 成比例的,當 的值較大時,每次改變的值就較大,反之較小。當 已經(jīng)很小時,說明已經(jīng)達到擬合的要求, 的值就不變了。
We’d derived the LMS rule for when there was only a single training example. There are two ways to modify this method for a training set of more than one example:
-
批處理梯度下降 -
隨機梯度下降
5.1 批處理梯度下降(batch gradient descent)
算法:
可以看出, 的值每更新一次都要遍歷樣本集中的所有樣本,得到新的 ,看是否滿足閾值要求,若滿足,則迭代結(jié)束,根據(jù)此值可得到 ; 否則繼續(xù)迭代。注意到,雖然梯度下降法易受到目標函數(shù)的局部極小值的影響,但是一般的線性規(guī)劃問題只有一個極小值,所以梯度下降法一般可以收斂到全局的最小值。例如, 是二次凸函數(shù),則梯度下降法的示意圖:
圖中,一圈上表示代價函數(shù)的函數(shù)值相同,類似于地理上的等高線,從外圈開始逐漸迭代,最終收斂到全局最小值。
上圖中的立體圖為:
更通俗化的解釋是:
(1)上圖中圖形其實像一個碗一樣,有一個最低點。找這個最低點的辦法就是,先隨便找一個,然后沿著這個碗下降的方向找,最后就能找到碗的最低點。
(2)如何找某一點下降的方向?找那一點導數(shù)的反方向。如下圖:
(3)只要將任意一個點,沿著使導數(shù)的反方向慢慢移動,那么最終會到達使最小的那一點。(注:最小二乘法是個凸函數(shù),所以局部最優(yōu)值也即為全局最優(yōu)值)
(4) 是自定義的,叫學習速率(learning rate)。
-
設置太小,經(jīng)過多次才能收斂,導致收斂速度很慢很慢。 -
設置太大,會導致超過最優(yōu)點發(fā)生震蕩現(xiàn)象,可能永遠無法收斂。
一般程序里會寫明最多循環(huán)次數(shù)以及收斂條件。若能自動收斂,甚好,若不能,則循環(huán)指定次數(shù)后,強行退出。此時,你需要調(diào)參數(shù)或者重新慎視假設模型!
梯度下降算法會導致局部極值點的產(chǎn)生,解決這個的方法是隨機進行初始化,尋找多個最優(yōu)點結(jié)果,在這些最優(yōu)點中找到最終結(jié)果。
批梯度下降算法(batch gradient descent),當數(shù)據(jù)量較大時,每迭代一次就要遍歷全部數(shù)據(jù)一次,這樣會使得運行速度變成龜速。為了解決這個問題,可以使用隨機梯度下降算法
5.2 隨機梯度下降(stochastic gradient descent)
算法:
該方法更新參數(shù)時,不必遍歷整個數(shù)據(jù)集,每次更新只需要一個樣本。該算法可以達到很高的效果,但是會導致遍歷次數(shù)的增多,不能精確收斂到最優(yōu)值等問題。該方法被稱為隨機梯度下降(stochastic gradient descent)或增量梯度下降(incremental gradient descent)。
注意:需要同步更新權(quán)值
5.3 批梯度下降 VS 隨機梯度下降
批處理梯度下降法, 每更新一次,需要用到樣本集中的所有樣本;隨機梯度下降法, 每更新一次,只用到訓練集中的一個訓練樣本,所以一般來說,隨機梯度下降法能更快的使目標函數(shù)達到最小值(新樣本的加入,隨機梯度下降法有可能會使目標函數(shù) 突然變大,迭代過程中在變小。所以 是在全局最小值附近徘徊,但對于實際應用來說,誤差完全能滿足要求。另外,對于批處理梯度下降法,如果樣本集中增加了些許訓練樣本,就要重新開始迭代。由于以上原因,當訓練樣本集較大時,一般應用隨機梯度下降法。
另,判斷收斂的方法有兩種規(guī)則:
-
兩次迭代后參數(shù)的變化很小很小 -
兩次迭代后目標函數(shù)的變化很小很小
六 正規(guī)方程組(Normal Equation)
梯度下降算法是求目標函數(shù)最優(yōu)解的一種解法,對于本問題,我們可以直接求出參數(shù)值而不用迭代的方法。這種方法稱為正規(guī)方程法。
正規(guī)化方程的實質(zhì)即:最小二乘法
七 梯度下降 VS 正規(guī)方程組
| Gradient Descent | Normal Equation |
|---|---|
| 自定義 | 不需要定義 |
| 盾環(huán)N次才能得到最佳w值 | 不需要任何循環(huán)操作 |
| 特征個數(shù)非常大時,也適用 | 的轉(zhuǎn)陣與逆矩陣的計算量很大,導致特征個數(shù)多時,會很慢 |
| 需要特征縮放(feature scaling) | 不需要feature scaling |
八 特征縮放(feature scaling)
當有多個特征時,若多個特征的表達之的范圍不一樣,會有什么影響和后果?
比如,繼續(xù)拿預測房價作為例子。現(xiàn)在它的特征增加了,特征1是面積,特征2是房間數(shù),特征3是房子的年齡。很明顯,這三個特征的值的范圍是有很大差異的。
-
特征1:100到300之間 -
特征2: 2到5之間 -
特征3:20到60年之間
若不做任何處理,則特征1和3對結(jié)果的影響遠大于特征2,而可能扭曲了真實情況下各特征在最終結(jié)果中所應占的權(quán)重比例。
所以,一般情況下,特征與特征之間的值變化范圍差異過大時,我們用 feature scaling 的手段來規(guī)范化特征值,使每個特征的特征值都處于-1至1之間。
如果不同變量之間的大小不在一個數(shù)量級,feature scaling 能大大減少尋找最優(yōu)解的時間;
feature scaling 的方法可自定義,常用的有:
-
rescaling:(X - mean(X))/(max - min) -
中值正規(guī)化(mean normalization):(X-mean(X))/ std, std是標準方差
九 常見問題
問題1:固定步長,會不會在接近最小值點時步長過大?
**答:**不會。因為實際起作用的步長是 步長 * 斜率值,而越接近最小值點時斜率約接近0,步長 * 斜率就會變小。
問題2:步長大小如何選擇?
答:步長過小會導致成本函數(shù)收斂速度慢,過大可能會導致成本函數(shù)不收斂。可以用0.1,0.01,0.001這樣間隔10倍或者3倍嘗試,看成本函數(shù)變化曲線。曲線下降太平緩需要加大步長,曲線波動較大、不收斂時需要減小步長。
問題3:隨機梯度下降能找到使代價函數(shù)最小的值么?
答:不見得,但是隨著迭代次數(shù)的增加,它會在最優(yōu)解附近晃悠,但是這個值對我們而言就夠用了,機器學習本身就不是100%正確的算法。
問題4:既然有正規(guī)組方程,可以直接求解,何必使用梯度下降法?
答:因為正規(guī)方程組涉及矩陣求逆操作,但并不是任何時候這個逆矩陣都存在,比如樣本數(shù)少于特征值數(shù)時即m<n,另外,當樣本數(shù)很大,特征值很多,這是個多么龐大的矩陣,顯然直接求解不可取。
