[机器学习笔记] Note2--单变量线性回归
繼續(xù)是機器學(xué)習(xí)課程的筆記,這節(jié)介紹的是單變量線性回歸算法,線性回歸算法也是一個比較基礎(chǔ)的算法。
模型表達
首先是以房屋交易問題為例,假設(shè)我們回歸問題的訓(xùn)練集如下表所示:
| 2104 | 462 |
| 1416 | 232 |
| 1534 | 315 |
| 852 | 178 |
| … | … |
此外我們將使用以下變量來描述這個回歸問題:
- m 代表訓(xùn)練集中實例的數(shù)量
- x 代表特征/輸入變量
- y 代表目標(biāo)變量/輸出變量
- (x,y) 代表訓(xùn)練集中的實例
- (x(i),y(i)x(i),y(i)) 代表第i個觀察實例
- h 代表學(xué)習(xí)算法的解決方案或函數(shù),也成為假設(shè)(hypothesis)
下面是一個典型的機器學(xué)習(xí)過程:
所以對于房價預(yù)測問題,我們是在訓(xùn)練集上執(zhí)行學(xué)習(xí)算法,學(xué)習(xí)到一個假設(shè)h,然后將要預(yù)測的房屋的尺寸作為輸入變量輸入給h,而輸出結(jié)果就是該房屋的交易價格。
這里的h也就是一個模型,是一個從輸入變量x都輸出變量y的函數(shù)映射。它的一種可能的表達式為:
這個表達式只含有一個特征/輸入變量,因此這樣的問題叫作 單變量線性回歸問題.
代價函數(shù)
當(dāng)我們得到一個模型后,就必須選擇合適的參數(shù)θ0θ0和θ1θ1.在房價問題中,對應(yīng)的就是直線的斜率和在y軸上的截距。
我們選擇的參數(shù)決定了我們得到的直線相對于我們的訓(xùn)練集的準(zhǔn)確程度,模型所預(yù)測的值與訓(xùn)練集中實際值之間的差距就是建模誤差(modeling error),如下圖所示:
上圖中,hθ(x(i))hθ(x(i))是對第i個輸入變量的預(yù)測輸出值,而y(i)y(i)則是對應(yīng)的真實值。
因此我們的目標(biāo)是選擇出可以使得建模誤差的平方和能夠最小的模型參數(shù),也就是min(hθ(x(i))hθ(x(i)) -y(i)y(i))。
這里就使用一個代價函數(shù)J(θ0,θ1)=12m∑mi=1(hθ(x(i))?y(i))2J(θ0,θ1)=12m∑i=1m(hθ(x(i))?y(i))2
這里的代價函數(shù)也叫做平方誤差代價函數(shù),這是最常用的解決回歸問題的方法。當(dāng)然還有其他代價函數(shù),這將在后面提及。
梯度下降
梯度下降是一個用來求函數(shù)最小值的算法,我們將使用梯度下降算法來求出代價函數(shù)J(θ0,θ1)J(θ0,θ1)的最小值。
思想過程
梯度下降算法的思想如下:
首先,我們有一個代價函數(shù),假設(shè)是J(θ0,θ1)J(θ0,θ1),我們的目標(biāo)是minθ0,θ1J(θ0,θ1)minθ0,θ1J(θ0,θ1)。
接下來的做法是:
- 首先是隨機選擇一個參數(shù)的組合(θ0,θ1)(θ0,θ1),視頻中說一般是設(shè)θ0=0,θ1=0θ0=0,θ1=0;
- 然后是不斷改變(θ0,θ1)(θ0,θ1),并計算代價函數(shù),直到一個局部最小值。之所以是局部最小值,是因為我們并沒有嘗試完所有的參數(shù)組合,所以不能確定我們得到的局部最小值是否便是全局最小值,選擇不同的初始參數(shù)組合,可能會找到不同的局部最小值。
下圖是視頻中給出的梯度下降法是如何工作的:
算法公式
下面給出梯度下降算法的公式:
repeat until convergence{
}
也就是在梯度下降中,不斷重復(fù)上述公式直到收斂,也就是找到局部最小值局部最小值。其中符號:=是賦值符號的意思。
公式中的αα稱為學(xué)習(xí)率(learning rate),它決定了我們沿著能讓代價函數(shù)下降程度最大的方向向下邁進的步子有多大。
在梯度下降中,還涉及都一個參數(shù)更新的問題,即更新(θ0,θ1)(θ0,θ1),一般我們的做法是同步更新:
算法詳解
在上述公式中??θjJ(θ0,θ1)??θjJ(θ0,θ1)是一個偏導(dǎo)數(shù),其含義就是函數(shù)J(θ0,θ1)J(θ0,θ1)的斜率,假設(shè)我們要求的代價函數(shù)J(θ0,θ1)J(θ0,θ1)如下圖所示,初始點是圖中的紅色的點,那么由于在該點上的切線斜率是一個正數(shù),而學(xué)習(xí)率也是正數(shù),所以更新后的θ1θ1會減小,也就是會向左移動,并靠近局部最小值。
當(dāng)然,如果起始點是在上述曲線左側(cè),其切線斜率則是負值,那么會導(dǎo)致θ1θ1逐漸變大,同樣也是靠近局部最小值。
公式中的學(xué)習(xí)率αα是決定找到局部最小值的快慢,同時也決定了能否找到局部最小值,因為如果取值過大,就可能錯過局部最小值,并且可能會導(dǎo)致無法收;但是取值過小,學(xué)習(xí)的速度就會比較慢。
視頻中也提到一個問題,如果初始點就是一個局部最小點,那么由于局部最小值的切線斜率是0,那么會導(dǎo)致參數(shù)不變,因為其實已經(jīng)在局部最小值了。
此外,即使學(xué)習(xí)率αα是一個固定值,梯度下降法也是可以收斂到一個局部最小值,原因是在接近局部最小值時,??θjJ(θ0,θ1)??θjJ(θ0,θ1)會自動變得更小,然后就可以慢慢接近局部最小值,而不需要改變學(xué)習(xí)率。
應(yīng)用于線性回歸
根據(jù)前面內(nèi)容,我們有
梯度下降算法公式:
repeat until convergence{
}
以及線性回歸模型
hθ(x)=θ0+θ1xJ(θ0,θ1)=12m∑i=1m(hθ(x(i))?y(i))2hθ(x)=θ0+θ1xJ(θ0,θ1)=12m∑i=1m(hθ(x(i))?y(i))2
這里的關(guān)鍵就是求解代價函數(shù)的導(dǎo)數(shù),即:
??θjJ(θ0,θ1)=??θj12m∑mi=1(hθ(x(i))?y(i))2??θjJ(θ0,θ1)=??θj12m∑i=1m(hθ(x(i))?y(i))2
進一步,可以得到:
由此,我們的算法可以改寫成:
repeat until convergence{
}
最后,在我們給出的梯度下降算法公式實際上是一個叫批量梯度下降(batch gradient descent),即它在每次梯度下降中都是使用整個訓(xùn)練集的數(shù)據(jù),所以公式中是帶有∑mi=1∑i=1m,當(dāng)然也存在其他梯度下降法,在每次梯度下降時考慮部分數(shù)據(jù)。
小結(jié)
這里就介紹完單變量的線性回歸方法,對于這個線性回歸算法,我的理解是,因為正如開頭介紹的經(jīng)典的機器學(xué)習(xí)過程,是使用一個學(xué)習(xí)算法在給定的數(shù)據(jù)集上學(xué)習(xí)得到一個模型,然后使用該模型對新的數(shù)據(jù)進行預(yù)測,得到一個預(yù)測的結(jié)果,所以對于線性回歸也是要求解其模型,其實就是我們非常熟悉的直線方程hθ=θ0+θ1xhθ=θ0+θ1x,就是讓我們計算得到的直線方程盡可能逼近實際的直線方程,而衡量的標(biāo)準(zhǔn)就是使用代價函數(shù),而在線性回歸中,非常常用的是平方和誤差函數(shù)J(θ0,θ1)=12m∑mi=1(hθ(x(i))?y(i))2J(θ0,θ1)=12m∑i=1m(hθ(x(i))?y(i))2,那么這就把問題變成求解最小的代價函數(shù),也就是求解一對參數(shù)θ0,θ1θ0,θ1使得minJ(θ0,θ1)minJ(θ0,θ1),而要得到這對參數(shù),我們就是使用梯度下降方法。梯度下降法也是一個非常常用的方法,包括在神經(jīng)網(wǎng)絡(luò)中都會使用到。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的[机器学习笔记] Note2--单变量线性回归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Could not mount the
- 下一篇: 算法基础:递归算法知识笔记