《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
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
優化目標Goal:
m
i
n
i
m
i
z
e
−
J
(
θ
0
,
θ
1
)
minimize -J(\theta_0, \theta_1)
minimize−J(θ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)
min−J(θ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−α∂θj∂J(θ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−α∂θ0∂J(θ0,θ1)
temp1 := θ 1 − α ∂ ∂ θ 1 J ( θ 0 , θ 1 ) \theta_1 - \alpha{\partial\over\partial\theta_1}J(\theta_0, \theta_1) θ1−α∂θ1∂J(θ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−α∂θ0∂J(θ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−α∂θ1∂J(θ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−α∂θj∂J(θ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=1∑m(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
∂θj∂J(θ0,θ1)=∂θj∂∗2m1i=1∑m(hθ(x)(i)−y(i))2=∂θj∂∗2m1i=1∑m(θ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:∂θ0∂J(θ0,θ1)=m1i=1∑m(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:∂θ1∂J(θ0,θ1)=m1i=1∑m(hθ(x)(i)−y(i))∗x(i)
“Batch”梯度下降:歷遍了所有的訓練資料集