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