机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)...
本文介紹了機(jī)器學(xué)習(xí)中基本的優(yōu)化算法—梯度下降算法和隨機(jī)梯度下降算法,以及實(shí)際應(yīng)用到線性回歸、Logistic回歸、矩陣分解推薦算法等ML中。
梯度下降算法基本公式
常見的符號(hào)說明和損失函數(shù)
X?:所有樣本的特征向量組成的矩陣?
x(i)?是第i個(gè)樣本包含的所有特征組成的向量x(i)=(x(i)1,x(i)2...,x(i)n)?
y(i)?第i個(gè)樣本的label,每個(gè)樣本只有一個(gè)label,y(i)是標(biāo)量(一個(gè)數(shù)值)?
hθ(x(i))?:擬合函數(shù),機(jī)器學(xué)習(xí)中可以用多種類型的擬合函數(shù)?
θ?是函數(shù)變量,是多個(gè)變量的向量?θ=[θ1,θ2,...]?
|hθ(xi)?y(i)|?:擬合絕對(duì)誤差?
求解的目標(biāo)是使得所有樣本點(diǎn)(m個(gè))平均誤差最小,即:
或者平方誤差最小,即:?
argmin表示使目標(biāo)函數(shù)取最小值時(shí)的變量值(即θ)值。
都被稱為損失函數(shù)(Cost Function)?
J(θ)不只是上面兩種形式,不同的機(jī)器學(xué)習(xí)算法可以定義各種其它形式。
梯度下降迭代公式
為了求解θ=[θ1,θ2,...]的值,可以先對(duì)其賦一組初值,然后改變θ的值,使得J(θ)最小。函數(shù)J(θ)在其負(fù)梯度方向下降最快,所以只要使得每個(gè)參數(shù)θ按函數(shù)負(fù)梯度方向改變,則J(θ)能最快找到最小值。即?
這就是梯度下降算法的迭代公式,其中α表示步長(zhǎng),即往每次下降最快的方向走多遠(yuǎn)。
線性回歸
以多變量線性回歸為例:?
擬合函數(shù)如下:?
Logistic回歸
代價(jià)函數(shù):?
以Sigmoid函數(shù)(Logistic函數(shù))為例說明:?
為什么這么定義代價(jià)函數(shù)呢?我自己通俗理解是,求導(dǎo)后形式簡(jiǎn)潔,而且:?
y=0,hθ(x)范圍為[0,0.5),越接近0.5,代價(jià)越高:?
?
由上圖可以看出:?log(1?hθ(x(i)))可以很好衡量某一個(gè)樣本的代價(jià)。
?
y=1時(shí),hθ(x)范圍為(0.5,1],越接近0.5,代價(jià)越高:?
?
同樣由上圖可以看到:?loghθ(x(i))可以很好衡量某一個(gè)樣本的代價(jià)。
迭代更新公式:?
求導(dǎo)過程蠻復(fù)雜的,直接給出結(jié)果吧:?
和線性回歸中最后給的更新迭代公式是一模一樣的,這也就理解了為什么代價(jià)函數(shù)設(shè)計(jì)時(shí)比較復(fù)雜,還套了log,敢情是為了這???
總之logisitc回歸和線性回歸最終使用的是一模一樣的優(yōu)化算法。?
還可將這個(gè)公式寫成用向量來表達(dá)的形式:?
矩陣分解的推薦算法
可以參考我轉(zhuǎn)載的另一篇文章:?
http://www.cnblogs.com/kobedeshow/p/3651833.html?utm_source=tuicool&utm_medium=referral
隨機(jī)梯度下降(SGD)
stochastic gradient descent
從梯度上升算法公式可以看出,每次更新回歸系數(shù)θ時(shí)都需要遍歷整個(gè)數(shù)據(jù)集。該方法在處理100個(gè)左右的數(shù)據(jù)集尚可,但是如果有數(shù)十億的樣本和成千萬的特征,這種方法的計(jì)算復(fù)雜度就太高了。一種改進(jìn)的方法是一次僅用一個(gè)樣本點(diǎn)來更新回歸系數(shù)。由于可以在新樣本到來時(shí),對(duì)分類器進(jìn)行增量更新,因此是一個(gè)“在線學(xué)習(xí)”算法,而梯度下降算法一次處理所有的數(shù)據(jù)被稱為“批處理”。更新公式如下:?
參考文獻(xiàn)
(1)Stanford機(jī)器學(xué)習(xí)—第三講. 邏輯回歸和過擬合問題的解決 logistic Regression & Regularization?
http://blog.csdn.net/abcjennifer/article/details/7716281?locationNum=2?
(2)機(jī)器學(xué)習(xí)入門:線性回歸及梯度下降?
http://blog.csdn.net/xiazdong/article/details/7950084?
(3)梯度下降深入淺出?
http://binhua.info/machinelearning/%E6%A2%AF%E5%BA%A6%E4%B8%8B%E9%99%8D%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BA
?
轉(zhuǎn)載于:https://www.cnblogs.com/itboys/p/8391130.html
總結(jié)
以上是生活随笔為你收集整理的机器学习算法(优化)之一:梯度下降算法、随机梯度下降(应用于线性回归、Logistic回归等等)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 把第三方jar 打进ja
- 下一篇: guava-collections