Stanford機器學習---第二週.特徵縮放、正規方程

第二週 

第四講   多元線性迴歸(Linear Regression with multiple variables)

1.多元線性迴歸模型

假設/擬合函數Hypothesis:

                 

參數parameter:

                                       

代價函數Cost Function:

                                     

目標Goal:

                                      

2.梯度下降算法

Gradient decent algorithm

與一元的梯度下降算法一致,沿偏導數的方向按學習速率α的步伐下降,直至代價函數J收斂(或找到局部最優解)

repeat until convergence{

      

}

★★★3.特徵縮放Feature scaling(歸一化)

Idea:Make sure features are on a similar scale.

原理:X'=X/(Max-Min)


特徵縮放可以理解爲平時我們常說的歸一化,使得變量x的範圍落在區間[-1,1]裏,一方面對多個範圍差別很大的特徵量可以更直觀的表示,另一方面當使用梯度下降算法時可以更快的收斂,即迭代次數少。

但要注意的是,特徵縮放的使用是有範圍的,當-3<x<3 or -1/3<x<1/3屬於可接受的範圍,如果-100<x<100 or -0.0001<x<0.0001,特徵縮放帶來的誤差較大,不可使用。

特殊地,平均標準化Mean normalization就是基於特徵縮放實現的,使得期望E爲0;

原理:X' = (X-μ)/(Max-Min),μ爲均值

4.學習速率α的選取

α決定每次下降的步長,α的選取決定了gradient decent algorithm是否正常工作(α選擇不當J會發散,或者J收斂速度太慢,需要迭代許多次)

理論上講,只要α充分的小,相應的代價函數J在每次迭代都會減小直至收斂;算法實現上,如果α太小,J每次下降的太少,需要迭代的次數過多,時間複雜度太高又不可行;綜上,α的正確選取對於梯度下降算法能否正常工作至關重要,可以給α從0.001,0.01,0.1,1依次幅值,找到對應的區間再去試探合適的α。


5.多項式迴歸

Polynomial regression

如果你想用一元高次多項式做擬合函數去擬合離散數據,比如h(x)=θ0+θ1*x+θ2*x^2+θ3*x^3,那麼,有一種簡單的作法,可以實現一元非線性迴歸問題轉化爲多元線性迴歸問題,從而用gradient decent algorithm解決,這種方法叫多項式迴歸Polynomial regression.

原理:分別把x^2、x^3看成另外兩個特徵變量x2,x3,則假設函數h(x)=θ0+θ1*x1+θ2*x2+θ3*x3,通過擴元實現降冪。


★★★6.正規方程Normal equation

對於多元線性迴歸模型的算法,常見的有兩種:

一種是之前說到的gradient decent algorithm(梯度下降算法),最常用;

還有一種就是normal equation(正規方程),直接求得解析解。

Normal equation:Method to solve for θ analytically.

原理:J對θ的偏導數爲零,求解得到的方程組(注意θ爲向量):


化簡有,,利用線性代數的方法得到的θ即爲最優解


正規方程可以直接得到全局最優解,不需要像梯度下降算法那樣要選擇α、迭代次數等,但它也有侷限性。

★★兩種算法的比較:

gradient decent Versus normal equation

給定m個樣本,n個特徵量

Gradient decent:①對於較大的n有很好的效率(n>>1000)②需要合理選取α和迭代次數,以確保J收斂

Normal equation:①利用矩陣元算直接得到最優的解析解,無需迭代和選取α②需要計算(X^T*X)^(-1),時間複雜度O(n^3),對於較大的特徵量n(n>1000)運算成本高。

綜上,實際上求解線性迴歸模型,不管是一元線性迴歸還one variable是多元線性迴歸multiple variable,最常用梯度下降算法Gradient decent algorithm。


第五講  Octave/Matlab教程

Octave和Matlab的處理對象是矩陣和向量,開發週期短、速度快,可遷移到C++、Java、Python等環境實現。

①向量化的實現方法Vectorized implementation(矩陣運算替代循環) 

②可視化Visualization(會畫圖plot data)

③常用矩陣操作名稱

單位矩陣 identity matrix

轉置矩陣 transpose matrix

矩陣A的逆 pinv(A)

End


第二週的課程就到這裏,編程作業我覺得收穫是很大的,又進一步熟悉了一下matlab的向量化運算方式。大笑





發佈了201 篇原創文章 · 獲贊 45 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章