1. 程式人生 > 實用技巧 >《machine learning》2單變數線性迴歸

《machine learning》2單變數線性迴歸

二、單變數線性迴歸Linear Regression woth One Variable

2.1 模型描述

訓練資料集=>學習任務=>輸出假設函式 h ( x ) h(x) h(x)

  • m m m 訓練樣本數
  • x x x 輸入變數/特徵
  • y y y 輸出變數
  • ( x ( i ) , y ( i ) ) ( x^{(i)} , y^{(i)} ) (x(i),y(i))第i個樣本

2.2 代價函式

選擇合適的模型引數parameters使 ( h ( x ) − y ) 2 (h(x)-y)^2 (h(x)y)2(預測值和真實值的誤差)儘可能的小。
對於迴歸問題平方誤差函式最常用的是平方誤差函式: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h ( x ) ( i ) − y ( i ) ) 2 J(\theta_0 , \theta_1) = {1 \over 2m}\sum_{i=1}^{m}(h(x)^{(i)} - y^{(i)})^2

J(θ0,θ1)=2m1i=1m(h(x)(i)y(i))2

2.3 代價函式直觀理解

假設函式Hypothesis: h θ ( x ) = θ 0 + θ x x h_ \theta(x) = \theta_0 + \theta_xx hθ(x)=θ0+θxx
模型引數Parameters: θ 0 , θ 1 \theta_0, \theta_1 θ0,θ1
代價函式Cost Function: J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 J(\theta_0, \theta_1) = {1\over2m}\sum_{i=1}^m(h(x^{(i)}) - y^{(i)})^2

J(θ0,θ1)=2m1i=1m(h(x(i))y(i))2
優化目標Goal: m i n i m i z e − J ( θ 0 , θ 1 ) minimize -J(\theta_0, \theta_1) minimizeJ(θ0,θ1)
θ 0 = 0 \theta_0=0 θ0=0 h θ ( x ) = θ x x h_\theta(x) = \theta_xx hθ(x)=θxx
在這裡插入圖片描述
保留 θ 0 \theta_0 θ0 h θ ( x ) = θ 0 + θ x x h_ \theta(x) = \theta_0 + \theta_xx hθ(x)=θ0+θxx:
在這裡插入圖片描述

在這裡插入圖片描述

2.5 梯度下降

函式function: J ( θ 0 , θ 1 ) J(\theta_0, \theta_1) J(θ0,θ1) (可應用與更多的引數)
目標want: m i n − J ( θ 0 , θ 1 ) min - J(\theta_0, \theta_1) minJ(θ0,θ1)
Outline:

  • 給定初始值 θ 0 , θ 1 \theta_0, \theta_1 θ0,θ1(通常為0)
  • 改變 θ 0 , θ 1 \theta_0, \theta_1 θ0,θ1的值去減少 J ( θ 0 , θ 1 ) J(\theta_0, \theta_1) J(θ0,θ1)
    直到代價函式J得到最小值或區域性最小值
    在這裡插入圖片描述
    梯度下降:起點不同可能會得到完全不同的區域性最優解
    數學原理:更新 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1重複以下工作直到收斂
    {
    θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 ) \theta_j := \theta_j - \alpha{\partial\over\partial\theta_j}J(\theta_0, \theta_1)\quad θj:=θjαθjJ(θ0,θ1) (for j = 0 and j = 1)
    }
    其中的 α \alpha α是學習率, α \alpha α越大,梯度下降越迅速。
    α \alpha α太小,梯度計算步數越多;太大則可能不收斂甚至發散
    注意在更新 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1時必須兩個paramaters同時更新。
    θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1分別求梯度後賦值給temp0和temp1之後,再將temp0和temp1同時賦值給 θ 0 , θ 1 \theta_0,\theta_1 θ0,θ1。引數全部求完梯度之後同時賦值。
    正確做法:
    temp0 := θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) \theta_0 - \alpha{\partial\over\partial\theta_0}J(\theta_0, \theta_1) θ0αθ0J(θ0,θ1)
    temp1 := θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) \theta_1 - \alpha{\partial\over\partial\theta_1}J(\theta_0, \theta_1) θ1αθ1J(θ0,θ1)
    θ 0 \theta_0 θ0 := temp0
    θ 1 \theta_1 θ1 := temp1
    錯誤做法:
    temp0 := θ 0 − α ∂ ∂ θ 0 J ( θ 0 , θ 1 ) \theta_0 - \alpha{\partial\over\partial\theta_0}J(\theta_0, \theta_1) θ0αθ0J(θ0,θ1)
    θ 0 \theta_0 θ0 := temp0
    temp1 := θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) \theta_1 - \alpha{\partial\over\partial\theta_1}J(\theta_0, \theta_1) θ1αθ1J(θ0,θ1)
    θ 1 \theta_1 θ1 := temp1
    θ 1 \theta_1 θ1求梯度的時候, θ 0 \theta_0 θ0的值已經改變了,沒做到同步更新。

2.6 梯度下降直觀理解

簡化函式: θ 0 = 0 \theta_0=0 θ0=0
在這裡插入圖片描述
在這裡插入圖片描述
當處於 θ j \theta_j θj時函式J達到最小值,那麼梯度下降公式 θ j : = θ j − α ∂ ∂ θ j J ( θ j ) \theta_j := \theta_j - \alpha{\partial\over\partial\theta_j}J(\theta_j) θj:=θjαθjJ(θj) 導數部分為0,引數 θ j \theta_j θj不再改變。
梯度下降演算法:
接近最小點的過程中,導數值越來越小,步幅自動變小直到達到最小點步幅為0。

2.7 梯度下降的線性迴歸

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ) ( i ) − y ( i ) ) 2 J(\theta_0, \theta_1)={1\over2m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)})^2 J(θ0,θ1)=2m1i=1m(hθ(x)(i)y(i))2
∂ ∂ θ j J ( θ 0 , θ 1 ) = ∂ ∂ θ j ∗ 1 2 m ∑ i = 1 m ( h θ ( x ) ( i ) − y ( i ) ) 2 = ∂ ∂ θ j ∗ 1 2 m ∑ i = 1 m ( θ 0 + θ 1 x ( i ) − y ( i ) ) 2 {\partial\over\partial\theta_j}J(\theta_0, \theta_1)={\partial\over\partial\theta_j}*{1\over2m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)})^2={\partial\over\partial\theta_j}*{1\over2m}\sum_{i=1}^m(\theta_0+\theta_1x^{(i)}-y^{(i)})^2 θjJ(θ0,θ1)=θj2m1i=1m(hθ(x)(i)y(i))2=θj2m1i=1m(θ0+θ1x(i)y(i))2
j = 0 : ∂ ∂ θ 0 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ) ( i ) − y ( i ) ) j=0:{\partial\over\partial\theta_0}J(\theta_0, \theta_1)={1\over m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)}) j=0:θ0J(θ0,θ1)=m1i=1m(hθ(x)(i)y(i))
j = 1 : ∂ ∂ θ 1 J ( θ 0 , θ 1 ) = 1 m ∑ i = 1 m ( h θ ( x ) ( i ) − y ( i ) ) ∗ x ( i ) j=1:{\partial\over\partial\theta_1}J(\theta_0, \theta_1)={1\over m}\sum_{i=1}^m(h_\theta(x)^{(i)} - y^{(i)})*x^{(i)} j=1:θ1J(θ0,θ1)=m1i=1m(hθ(x)(i)y(i))x(i)
在這裡插入圖片描述
“Batch”梯度下降:歷遍了所有的訓練資料集