斯坦福CS229機器學習課程筆記一:線性回歸與梯度下降算法


應該是去年的這個時候,我開始接觸機器學習的相關知識,當時的入門書籍是《數據挖掘導論》。囫圇吞棗般看完了各個知名的分類器:決策樹、朴素貝葉斯、SVM、神經網絡、隨機森林等等;另外較為認真地復習了統計學,學習了線性回歸,也得以通過orange、spss、R做一些分類預測工作。可是對外說自己是搞機器學習的還是不太自信,畢竟和科班出身的各位大牛相比自己對這些模型、算法的理解只能算是“知其然而不知其所以然”,用起來總感覺哪里不對勁。

因此,去年早早地就把網易公開課上NG大神的斯坦福CS229課程以及相應的講義下載了下來,但每次一想學,看到每集1個多小時的內容就望而生卻,感覺沒有足夠的整塊的時間來學習。好在過年回家期間,實在沒有其他借口不學了,於是才能有這篇學習筆記……截止今天下午,剛好學完了前四課,聽Andrew Ng講完了GLM廣義線性模型的相關內容。真的是感覺相見恨晚。我要向所有看到本文的同學推薦這個課程(雖然是07年的)。

機器學習三要素

機器學習的三要素為:模型、策略、算法。
這些知識來自於李航寫的《統計學習方法》。“外國的老師善於形象化地舉例,中國的老師善於總結歸納”這句話還是很有道理的,適當的歸納有助於理清我們的思路,不知大家是否有和我類似的疑惑:“線性回歸是模型還是算法?”,“SVM是模型還是算法?”接下來我會結合自己的思考,從模型、策略、算法的角度整理學習筆記。

Linear Regression線性回歸

1.三要素

模型:就是所要學習的條件概率分布或決策函數。
相信線性回歸模型大家都很熟悉(高三時就學過):

策略:按照什么樣的准則學習或選擇最優的模型。
學過線性回歸的同學應該記得最小化均方誤差,即所謂的least-squares(在spss里線性回歸對應的模塊就叫OLS即Ordinary Least Squares):

算法:基於訓練數據集,根據學習策略,選擇最優模型的計算方法。
確定模型中每個θi取值的計算方法,往往歸結為最優化問題。對於線性回歸,我們知道它是有解析解的,即The normal equations:

因為我不是做科研的,所以解析解的推導沒有細看。(我猜很多人可能就是在第二集中段看到這么復雜的推導而放棄繼續學習的。)在推導解析解之前,NG還介紹了一個很重要的算法:

2.gradient descent algorithm 梯度下降算法

課程中的比喻很形象,將用最快的速度最小化損失函數,比作如何最快地下山,也就是每一步都應該往坡度最陡的方向往下走,而坡度最陡的方向就是損失函數相應的偏導數,因此算法迭代的規則是:

其中α是算法的參數learning rate,α越大每一步下降的幅度越大速度也會越快,但過大有可能導致算法不准確。
另外對於線性規划問題,通常J函數(誤差平方和)是碗狀的,所以往往只會有一個全局最優解,不用過多擔心算法收斂到局部最優解。

當訓練集的樣本量大於1時,有兩種算法:
batch gradient descent 批量梯度下降

stochastic gradient descent (incremental gradient descent) 隨機梯度下降

當訓練樣本量很大時,batch gradient descent的每一步都要遍歷整個訓練集,開銷極大;而stochastic gradient descent則只選取其中的一個樣本,因此后者的速度要快於前者。另外,雖然stochastic gradient descent可能不會收斂,但是實踐當中大多數情況下得到的結果都是真實最小值的一個足夠好的近似。

3.為什么在選擇策略時,我們使用的是誤差平方和,而不是絕對值或其他損失函數?

首先我們得復習一下線性回歸的模型及假設:

ε(i) ∼ N(0, σ2),隨機誤差ε服從正態分布(高斯分布)
ε(i) are distributed IID,隨機誤差ε是獨立同分布的
於是可以獲得目標變量的條件概率分布:

整個訓練集的似然函數,與對數似然函數分別為:

因此,最大化對數似然函數,也就相當於最小化

4.Locally weighted linear regression (LOESS)

LOESS與線性回歸的區別

加權函數w的一個選擇是

|x(i) − x|越小,權重w(i)越接近1;越大,則權重越小
τ被稱為bandwidth參數,控制權重下降的快慢,τ越大下降速度越慢

  • LOESS是一個非參數算法:對於不同的輸入變量,需要利用訓練集臨時重新擬合參數。
  • 線性回歸是一個參數算法:參數個數是有限的,擬合完參數后就可以不考慮訓練集,直接進行預測。
  • LOESS可以緩解特征選擇的需求(是否為一個特征添加高次項)

總結

本來想一口氣寫完前四節課的筆記,但發現量還是太大了還是分開寫吧。總結一下收獲:

    1. 記住了機器學習三要素,不會再把模型和算法搞混了
    2. 了解了梯度下降算法,包括批量梯度下降與隨機梯度下降
    3. 從最大化似然函數的角度明白為什么線性回歸使用誤差平方和作為損失函數是一個好的選擇
    4. 了解一個非參數算法,局部加權線性回歸


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM