一:迴歸模型介紹算法
從理論上講,迴歸模型即用已知的數據變量來預測另一個數據變量,已知的數據屬性稱爲輸入或者已有特徵,想要預測的數據稱爲輸出或者目標變量。機器學習
下圖是一個例子:函數
圖中是某地區的面積大小與房價的關係圖,輸入變量X是面積,輸出變量Y是房價,把已有的數據集(x,y)做爲一個訓練數據,擬合出線性迴歸模型,利用線性迴歸模型預測出一給定面積房子的價格。學習
其中,h是估計函數,對應到線性迴歸中就是一個線性關係式 ,輸入變量x,通過估計函數,輸出相應的估計值y。spa
二:代價函數3d
在一元線性迴歸中有兩個參數:theta0,theta1的值是未知的,這兩個參數的值決定了估計函數的好壞。估計值 與真實值y之間的差越小,說明估計函數越好,所以,選擇參數theta0,theta1的標準就設爲
,選擇可以使得函數J(theta0,theta1)獲得最小值的一對參數(theta0,theta1)做爲最終的參數值。咱們稱函數blog
J(theta0,theta1)爲代價函數。get
下面進行舉例分析,爲方便理解代價函數和線性迴歸估計函數,先假設theta0=0,即 ,給定三組訓練數據(1,1)、(2,2)、(3,3),如今訓練一線性迴歸估計函數,使得它可以最大限度的磨合訓練數據,即目標是求得參數theta1的值,使得代價函數值最小,以下圖所示:
同步
左圖是不一樣theta1值對應的估計函數線性圖,右圖是不一樣theta1對應的代價函數值,能夠看出當theta1=1的時候,代價函數值達到了最小值0,所以最終選擇theta1=1。
下面是簡單的練習題:
上面設theta0=0,簡單的對代價函數進行了分析,下面看下有兩個參數theta0、theta1的狀況:
圖中紅色的叉叉表明訓練數據,當只有參數theta1的時候,代價函數圖是二維的平面圖,可是當有兩個參數時,代價函數就是一個三維圖,以下所示:
從代價函數三維圖中能夠看出,位於曲平面最中間的點所在的座標(theta0,theta1)可使得代價函數值取得最小值,爲方便起見,把代價函數的三維圖換成等高線圖,即把曲平面映射到地面。以下所示:
代價函數等高線圖中,在相同顏色曲線上的點有相同大小的代價函數值,隨着參數theta0,theta1的調整,估計函數線逐漸與訓練數據重合,代價函數值逐漸變小,最終到達曲線平面的最中點。
三:梯度降低法
第二節中,咱們畫出代價函數關於參數theta0,theta1的圖形,從圖中能夠大概得知取得最小代價函數值時所對應的參數值,可是當參數個數多於2個的時候,這種方法就不適用了,所以本節研究自動獲取最佳參數的方法:梯度降低法。
梯度降低法是機器學習中經常使用的一種方法:
這裏梯度降低法的應用能夠想象成是:把代價函數圖當作是一座山,從山上任意一點出發下山,在給定步伐大小狀況下,須要在最快時間內走到山腳,也許不一樣的出發點可能到達不一樣的山腳,可是它們的海拔高度可能差很少。
具體的算法流程以下:
1:先給theta0,theta1設定初始值,即對應着下山的出發點。
3:爲了可以快速的到達山腳,在相同步伐大小狀況下,往梯度最大方向走確定最快,梯度大小也就是對應着上圖中的斜率 。
4:每次都同時更新參數theta0,theta1,圖中左下側的更新公式是正確的,右下側是錯誤的。
參數的大小決定了代價函數是否可以逐漸收斂到一比較小的值,下圖所示:
以參數theta1的更新舉例,斜率大小多是正值也多是負值,若是是正值則參數theta1逐漸變小,若是是負值,則參數theta1逐漸變大。
所以,若是參數過小,梯度降低的速度雖然會比較慢,可是確定會逐漸收斂到一極小值,可是若是
太大,則可能致使代價函數不能收斂到極小值,而且是兩邊交叉變化的,如上圖所示。
四:線性迴歸對應的梯度降低法
下圖是線性迴歸對應的梯度降低法,是一個不斷迭代的過程。
最終的的算法流程以下:
簡單測試題:
五:總結
本節主要介紹了一元線性迴歸、代價函數、梯度降低法,在求一元線性迴歸中的參數估計時,用到了梯度降低法,在下面的一章節中將進行習題練習和實驗實現本節介紹的方法。
除了梯度降低法求參數估計值外,還有經常使用的利用最小二乘法的正規方程方法,也將在下面的章節中進行介紹和對比。