天天看點

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

線性回歸(Linear Regression)

從這篇文章開始,主要介紹機器學習的一些列基本算法,本文介紹線性回歸問題,以及利用最小均方和梯度下降解決線性回歸問題。

(以下内容是根據斯坦福大學ng教授的機器學習公開課總結的内容)

監督學習:即訓練資料中既包含了輸入資料又包含了對應于這個是輸入資料的正确的輸出結果。

回歸問題:當給出了輸入資料後,預測正确的輸出結果。

線性回歸函數

首先考慮一個問題:我們需要預測自己房屋的價格,現在擁有的資料隻是幾十個房屋樣本價格,如下圖所示。怎樣根據這些房屋的面積以及價格來預測我們自己房屋的價格呢?

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

為了更加直覺的将已知樣本房屋的價格表示出來,我們将上述資料标注在坐标系中,如下圖:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

由圖我們可以看出,點的分布大緻圍繞在一條直線周圍,是以,我們可以用一個線性函數表示房屋的面積與房屋的價格的對應關系,流程大緻如下:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

利用訓練資料+學習算法得到一個函數h,然後将待預測的房屋面積輸入,即可得到預測的房價。

首先介紹具體字母代表的含義:

  • m:訓練資料的總數。
  • x:輸入值
  • y:輸出值
  • (x,y):訓練樣本
  • ( x(i) , y(i) ):訓練樣本中的第i對值

為了使得問題更加具有一般性,我們将上面的例子進行擴充成如下表格:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

現在我們假設輸出值和輸入值之間對應的關系為線性函數:

  • hθ(x)=θ0+θ1x1+θ2x2

上面的式子為了便于表達,假設 x0=1 ,是以,可以寫成:

  • hθ(x)=θ0x0+θ1x1+θ2x2=∑ni=0θixi=θTX

現在,當我們有了測試集,怎樣來預測參數θ?,我們的目的就是使得預測結果盡量接近與真實的結果,是以,在所有的訓練集上,我們需要使得該函數的輸出結果盡量可能接近真實值,也就是使得差量最小,是以可以表示為如下的形式:

  • J(θ)=1/2∑mi=0(hθ(x(i))−y(i))2

這個表達形式可以表現出預測值和真實值的平方差量,其中前面的1/2主要是為了後面的求導計算友善,m表示的是所有的訓練資料總數量。到這裡,我們表示出了誤差函數,也就是損失函數,我們的目标是最小化損失函數

J(θ)

,用到的方法是

梯度下降法

梯度下降(gradient descent)

首先我們考慮一個實際的情景,當我們站在山腰的時候,如果我們想最快到達山地,我們首選的方法當然是找坡度最大的地方,即梯度的方向。如下圖所示:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

但是,我們會發現一個問題,那就是當我們所處的位置不同的時候,就會走到不同的最低位置,即會出現局部最優,而不是尋找的全局最優值,如下圖所示:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

其實,現實我們遇見的現實問題大多隻有一個最小值,是以,不會走入局部最優值。例如本執行個體圖像如下所示:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

現在,根據上圖可以看出我們需要做的就是不斷地更新 θ (此處的為一個向量,包括 θ1和θ2 )值,得到到達最小值時候的 θ ,更新的方法如下,即求偏導後沿着偏導數數的方向進行更新。

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

該表達式表示對 θi (包括 θ1和θ2 )更新,其中的α表示更新不發的大小(如果太大可能直接越過了最小值,如果太小,疊代速度太慢,代價太大)。将J帶入後計算如下:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

最後結果為:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

這個規則稱為

最小均方(LMS,least mean squares)

更新規則

對于以上的式子進行充分直到得到結果即可,其中重複的形式有兩種,一種稱作

批梯度下降(batch gradient descent)

随機梯度下降(stochastic gradient descent)

批梯度下降(batch gradient descent)

批梯度下降即每次更新一個參數的一步時候,都需要将所有的資料計算一遍,算法如下:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

很明顯,這個算法當訓練資料集很大的時候,會導緻算法變慢,時間複雜度太大。是以,一般用的比較少。

随機梯度下降(stochastic gradient descent)

随機梯度下降主要是對以上算法的優化,每一步參數的更新,隻看訓練資料集中的一個訓練資料,算法如下:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

利用以上的算法更新開頭提出的問題的解法過程圖像和最終結果圖像如下:

線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)
線性回歸與梯度下降線性回歸(Linear Regression)梯度下降(gradient descent)

個人部落格:http://www.houlaizhexq.com,http://houlaizhexq.github.io/

繼續閱讀