Machine Learning - Andrew Ng on Coursera (Week 2)
本篇文章將分享Coursera上Andrew Ng的Machine Learning第二周的課程,主要內(nèi)容有如下,詳細(xì)內(nèi)容可以參考文末附件:
- 設(shè)置作業(yè)環(huán)境
- 多變量線性回歸
- 參數(shù)的解析算法
- Octave簡(jiǎn)介
設(shè)置作業(yè)環(huán)境
因?yàn)楸菊n程涉及到在Octave或者M(jìn)atlab提交作業(yè),所以這一節(jié)講了在各種不同的系統(tǒng)中如何安裝Octave或者M(jìn)atlab。安裝比較簡(jiǎn)單,就不在此贅述。需要注意的有如下幾點(diǎn),如有其他疑問(wèn)可私信或郵件討論:
多變量線性回歸
上周課程主要針對(duì)的是單變量的線性回歸問(wèn)題,但往往實(shí)際問(wèn)題并不僅僅有一個(gè)相關(guān)的變量,所以引入了多變量的線性回歸問(wèn)題。多變量問(wèn)題中,表示變量數(shù)量,[Math Processing Error]表示第[Math Processing Error]個(gè)訓(xùn)練樣本,[Math Processing Error]則表示第[Math Processing Error]個(gè)訓(xùn)練樣本中第[Math Processing Error]個(gè)變量的值。此時(shí)線性回歸問(wèn)題假設(shè)變成如下形式:
[Math Processing Error]
其中[Math Processing Error]是常數(shù)項(xiàng),因此可以設(shè)為1。轉(zhuǎn)化為向量后,
[Math Processing Error]
代價(jià)函數(shù)可以相應(yīng)的變?yōu)?#xff1a;
[Math Processing Error]
梯度下降中參數(shù)更新可以寫成向量的形式:
[Math Processing Error]
因?yàn)楦髯兞康娜≈捣秶鷷?huì)存在較大的差異,然而學(xué)習(xí)速度對(duì)于所有變量都是一致的,即不能取得太大以防止不收斂,又不能取得太小使收斂速度過(guò)慢,所以需要將變量取值范圍進(jìn)行統(tǒng)一(Feature Scaling),使各變量取值范圍盡量在-1到1之間,同時(shí),也盡量避免過(guò)于集中在[Math Processing Error]甚至更小的區(qū)間內(nèi)。通常采用mean normalization的方式,即:
[Math Processing Error]
有時(shí)需要使用多項(xiàng)式來(lái)擬合回歸,且可以采用不同的方式。如課程中的例子,訓(xùn)練數(shù)據(jù)中價(jià)格與面積明顯存在著非線性的關(guān)系,但用面積的二次方去擬合時(shí),會(huì)出現(xiàn)達(dá)到一定面積后價(jià)格反而下降的現(xiàn)象,這在現(xiàn)實(shí)生活中幾乎是不存在的。因此,可以添加面積的三次方項(xiàng),或者平方根項(xiàng)來(lái)改變?cè)撉闆r,使價(jià)格一直隨面積的增長(zhǎng)而增長(zhǎng)。當(dāng)變量之間存在一定關(guān)系時(shí),如變量1為面積,變量2為面積的平方時(shí),相應(yīng)的變量取值范圍也要除以各自的取值范圍,如課程中Andrew舉的例子那樣,除以面積范圍,面積范圍的平方,以及面積范圍的3次方。
還總結(jié)了學(xué)習(xí)速率[Math Processing Error]取值的問(wèn)題,要確保每一次迭代[Math Processing Error]的值都在不斷減小,可以預(yù)先定義如果迭代一次的下降差值在10e-3的范圍內(nèi),就認(rèn)為成本函數(shù)已經(jīng)收斂并停止迭代。如果[Math Processing Error]的值在上下波動(dòng)或者不斷增大,則說(shuō)明[Math Processing Error]取值過(guò)大,可以適當(dāng)降低學(xué)習(xí)速率。
參數(shù)的解析算法
梯度下降是求解線性回歸中一種比較直觀的解法,但同時(shí),對(duì)于參數(shù)[Math Processing Error]的求解也存在解析方法。以一維中最簡(jiǎn)單的線性回歸成本函數(shù)為例,[Math Processing Error],在坐標(biāo)軸中呈現(xiàn)為倒U型曲線,那么必然在[Math Processing Error]處可取得成本函數(shù)的最小值,那么解得上式中[Math Processing Error]的值就可以得到其全局最小值。
同樣,將該方法推廣到多變量的線性回歸問(wèn)題時(shí),[Math Processing Error]可解如下公式求得:
[Math Processing Error]
課程中給出了房?jī)r(jià)的例子及解析解公式如下,但并未給出具體的推導(dǎo)過(guò)程:
[Math Processing Error]
以及相應(yīng)的Octave命令:
pinv(X’*X)*X’*y
最后簡(jiǎn)單總結(jié)了梯度下降及解析算法的優(yōu)缺點(diǎn),其中比較重要我認(rèn)為有兩點(diǎn):
Octave簡(jiǎn)介
Andrew從以下方面介紹了Octave的一些基本命令,有興趣的同學(xué)可以跟著課程視頻都做一遍并完成課程作業(yè):
- 基本的數(shù)學(xué)運(yùn)算、邏輯運(yùn)算、變量賦值和顯示方法;
- 矩陣的賦值,各種矩陣的生成命令;
- 求矩陣的大小和基本的環(huán)境命令,如果進(jìn)入目錄,查看變量等;
- 截取矩陣中的數(shù)據(jù),合并多個(gè)矩陣;
- 數(shù)據(jù)的計(jì)算方法,比如最大、最小值,求和,連乘等;
- 畫圖的基本命令;
- for, while, if控制語(yǔ)句,以及函數(shù)的格式;
- 如何將循環(huán)計(jì)算向量化;
- Normal Equation不可逆性,通常可能由于線性相關(guān)的變量以及變量冗余引起的,需要去掉相應(yīng)的變量再進(jìn)行嘗試。
附本次分享演示文檔:ML-Coursera-Week2
?
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Machine Learning - Andrew Ng on Coursera (Week 2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Machine Learning - A
- 下一篇: Machine Learning - A