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