1. 程式人生 > >線性迴歸.1

線性迴歸.1

機器學習分為有監督學習和無監督學習。

有監督學習分為迴歸問題和分類問題。

Regression 迴歸問題是指我們想要預測連續的數值輸出

Classification 分類是指我們設法預測一個離散值輸出(0 or 1),有時也可以存在有兩個以上的可能的輸出值。

 

設有一組資料,x為自變數,y為因變數,(x(i),y(i))代表一組資料。

我們想要預測y,則設hθ(x(i))=θ_0+θ_1x(i)

那麼這個單變數線性迴歸的代價函式為J(θ_0,θ_1)=1/2m   m∑i=1 (hθ(x(i))-y(i))^2   就是用預測的減去實際的,然後讓他倆的平方和儘可能的小

我們要做的就是關於θ_0和θ_1對函式J(θ_0,θ_1)求最小值,這就是我們的代價函式也被稱作平方誤差函式。

既然要求θ_0和θ_1,就要用到梯度下降演算法:

1.對θ_0,θ_1初始化,一般設為θ_0=0,θ_1=0;

2.一點點改變θ_0,θ_1的值,來使J(θ_0,θ_1)變小,直到我們找到最小或區域性最小值

所以,一直進行以下這個公式,直到收斂。θj=θj-α(d/dθj)J(θ_0,θ_1)所有的θ同步更新

α是學習率,為常數量,控制梯度下降時我們邁出多大的步子(控制多大幅度的更新)α的值多為0.01,0.005,python中有其預設值

更新:正確方法:temp0=θ_0-α(d/dθ_0)J(θ_0,θ_1)      是的,我們要做到同步更新

                            temp1=θ_1-α(d/dθ_1)J(θ_0,θ_1)

                            θ_0=temp0

                            θ_1=temp1

 

梯度下降時沒有必要再另外減小α,因為隨著梯度下降,導數會變小,更新的幅度也會變小

對公式(d/dθj)J(θ_0,θ_1)進行計算

α(d/dθj)J(θ_0,θ_1)=α(d/dθj)  1/2m   m∑i=1 (hθ(x(i))-y(i))^2=α(d/dθj)  1/2m   m∑i=1 (θ_0+θ_1(x(i))-y(i))^2

帶入梯度下降公式得,求的θ_0,θ_1得方法

repeat until convergence{

θ_0=θ_0-α  1/m   m∑i=1 (hθ(x(i))-y(i))

θ_1=θ_1- α 1/m   m∑i=1 (hθ(x(i))-y(i)) x(i)

}