【机器学习】线性回归之梯度下降、多元线性回归概述
線性回歸是一種監督學習方法.?
對每個樣本來說:?
Hypothesis:
即:
其中,?為預測值,?為樣本的第i個特征,且;??為該特征下的權重,bias偏差。線性回歸就是要在已有的樣本特征和標簽下學習特征權重,從而在待測樣本中應用學習好的特征權重,得到待測樣本的標簽。?
定義損失函數:
我們的目的是找到最優的??來最小化???, 使用梯度下降方法:
對每一個樣本來說:?
Batch Gradient Descent:
?
其中i表示第i個樣本。上式為第i個樣本第j個特征的梯度求解然后平均。?
因此:
其中為學習速率。
對于的一些使用建議可以參考下圖。
接下來,我們來了解幾種求解最優參數的方法。
批量梯度下降(batch gradient descent(BGD)):
不斷迭代下式直到收斂{
}
由上式可知,每一次迭代都要遍歷所有樣本,因此,當樣本量很大時,批量梯度下降法迭代時間會很長。
隨機梯度下降(stochastic gradient descent(SGD)):?
不斷迭代下式直到收斂{?
for i = 1 to m,{?
}
由上式可知,隨機梯度下降法每一次迭代只使用一個訓練樣本,因此可以大大縮小迭代時間。
SGD每一個epoch也需要計算樣本量大小的數量的梯度(1...m)。SGD與BGD的主要區別在于,SGD一個epoch下來計算了m次梯度同時也更新了m次,而BGD一個epoch下來雖然也同樣計算了m次梯度,但它只更新了一次。導致最后收斂是BGD所需要計算的樣本梯度次數遠遠大于SGD。
Mini-batch gradient descent
具體是指:在每一次迭代中,隨機選取若干個訓練樣本(比如50個),使用上述梯度下降方法進行參數優化,多次迭代直到收斂。該方法的速度比BGD快,比SGD慢;精度比BGD低,比SGD高。
特征歸一化(Features Scaling)
上圖中的兩幅圖解釋了為什么需要做特征歸一化。這里以二維情形來舉例說明。如果的分布相差很大的話,會造成左圖的情形,損失函數就會很瘦長像一個橢圓一樣,這樣梯度下降的時候就會來回震蕩,效果很差。而如果歸一化之后,損失函數就會像一個圓一樣,這樣梯度下降就會好很多。
至于為什么損失函數在橢圓的時候梯度下降效果不好。可以這么理解,尺度小的一方可能早早達到了最優解附近,但由于尺度大的變量還在緩慢優化中,尺度小的只能來回震蕩,此時又會對尺度大的變量產生影響。還有一個原因就是尺度大的變量“路”比較遠,更新的慢!
通常的做法是將它們縮放到一定到尺寸,如-1到1,這個數字并不是特別重要,如-3到3或者-1/3到1/3也是可以到。
另一種普遍到做法是進行標準化,將數據標準化到0-1正態分布。也可以不除以標準差,因為標準差到計算往往也比較費時,可以直接用樣本的數值范圍來代替。我們叫做Mean normalization
?
線性回歸的在線學習算法采用的就是SGD的梯度下降方式。
多元線性回歸
在機器學習算法中,基于針對數據的非線性函數的線性模型是非常常見的,這種方法即可以像線性模型一樣高效的運算,同時使得模型可以適用于更為廣泛的數據上,多元線性回歸就是這類算法中最為簡單的一個。
關于多元線性回歸的應用,這里舉個非常簡單的例子:一般的線性回歸,模型既是參數的線性函數,同時也是輸入變量的線性函數,對于一個二維的數據而言,模型的數學表達式如下:
如果想要擬合一個拋物面,而不是擬合一個平面的話,那么就需計算輸入變量二次項的線性組合,則模型更新為下面這個形式:
注意:這里需要說明的是,更新后的模型,雖然是輸入變量的二次函數,但是,由于它仍然是參數的一次線性函數,所以它仍然是一個線性模型。為了說明這個問題,可以假設有一個新的變量,那么就可以將上面的模型重寫為下面的這個形式:
用向量替換向量的過程,相當于一個特征變換或者叫做特征生成的過程,它將輸入特征的維度提高,但模型仍然是一個線性模型。
?
關于線性模型與非線性模型寫過一篇文章線性模型非線性模型,感知機與神經網絡
總結
以上是生活随笔為你收集整理的【机器学习】线性回归之梯度下降、多元线性回归概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】SVM基本线性可分与多分类
- 下一篇: 【机器学习】线性回归之Normal Eq