線性迴歸算法中特定的符號表示:
m :表示訓練樣本的數目;
x :表示輸入的特徵;
y :表示輸出變量或目標變量;
(x,y) :表示一個訓練樣本;
(x(i),y(i)) :表示第i 個訓練樣本;
h :表示假設函數,表示從x 到y 的函數映射;
單變量的線性迴歸模型:hθ(x)=θ0+θ1x ;
其中,θ0,θ1 爲模型參數;
線性迴歸算法的目標爲選擇θ0,θ1 ,使hθ(x) 最接近樣本對應的y 值,即尋找θ0θ1 ,使
12m∑i=1m(hθ(x(i))−y(i))2最小。
12m∑i=1m(hθ(x(i))−y(i))2 表示平均誤差,其中,12 是爲了方便後續梯度下降算法的計算。
引入代價函數的概念:
J(θ0,θ1)=12m∑i=1m(hθ(x(i))−y(i))2
代價函數也稱平方誤差函數或平方誤差代價函數,爲了評價
hθ(x) 的準確性,算法的目的是讓
J(θ0,θ1) 儘可能小。
平方誤差代價函數是解決迴歸問題最常用的手段。
算法簡化:
令θ0=0 ,則hθ(x)=θ1x ,模型參數只剩下θ1 ,代價函數變爲
J(θ1)=12m∑i=1m(hθ(x(i))−y(i))2
算法目標變爲求
minθ1J(θ1)
帶入訓練集樣本數據,發現
J(θ1) 是一個下凸曲線,找到令
J(θ1) 取值最小的
θ1 。
J(θ1,θ0) 同理,可用輪廓圖表示:
梯度下降算法:可以使代價函數最小化。
算法定義:
repeat until convergence{
θj:=θj−α∂∂θjJ(θ0,θ1)(for j=0 and j=1)
}
:=爲賦值運算符;
α 爲一個數字,稱爲學習速率,控制梯度下降步幅。
θ0,θ1 正確的更新方法:
temp0:=θ0−α∂∂θ0J(θ0,θ1)
temp1:=θ1−α∂∂θ1J(θ0,θ1)
θ0:=temp0
θ1:=temp1
θ0,θ1 要同時更新。
通常將θ0,θ1 均初始化爲0。
注:∂∂x 爲偏導數符號,ddx 爲導數符號
梯度下降算法中,若α 的值取得太小,梯度下降過於緩慢;若α 的值取得太大,可能導致無法收斂,甚至發散。
在梯度下降法中,當我們接近局部最低點時,梯度下降法會自動採取更小幅度,因爲當接近局部最低點時,∂∂θjJ(θ0,θ1) 導數值自動變得越來越小。
線性迴歸算法的梯度下降:
∂∂θjJ(θ0,θ1)=∂∂θj12m∑i=1m(hθ(x(i))−y(i))2=∂∂θj12m∑i=1m(θ0+θ1x(i)−y(i))2
j=0時:∂∂θ0J(θ0,θ1)=1m∑i=1m(hθ(x(i))−y(i))=1m∑i=1m(θ0+θ1x(i)−y(i))
j=1時:∂∂θ1J(θ0,θ1)=1m∑i=1m(hθ(x(i))−y(i))x(i)=1m∑i=1m(θ0+θ1x(i)−y(i))x(i)
即:
repeat until convergence{
θ0:θ1:==θ0−α1m∑i=1m(hθ(x(i))−y(i))θ1−α1m∑i=1m(hθ(x(i))−y(i))x(i)θ0,θ1同時更新
}
批量梯度下降法(Batch Gradient Descent):梯度下降法最常用的形式,具體做法是在更新參數時使用所有的樣本來進行更新。