《machine learning》課程總結(jié)

之前瀏覽Coursera上機(jī)器學(xué)習(xí)方面的課程度秘,Andrew Ng的《Machine Learning》課程評(píng)分一直很高顶伞,于是添加在了自己的收藏列表,但一直沒學(xué)剑梳。今年本科畢業(yè)季時(shí)注冊(cè)了課程開始學(xué)習(xí)唆貌,基本上按照課程大綱看視頻,完成練習(xí)垢乙,最后終于在課程結(jié)束前一周多順利結(jié)業(yè)锨咙。線上教育作為教育的一個(gè)大趨勢(shì),這門課程作為自己圓滿完成的第一個(gè)線上課程追逮,自己在完成提交的時(shí)候感受到滿滿的成就感酪刀。因?yàn)樽约阂郧耙沧?cè)過很多線上課程粹舵,但圓滿完成所有課程視頻和課后練習(xí)的,這個(gè)第一個(gè)骂倘。這是寫這篇博文的第一個(gè)原因眼滤。人生中很多重要的時(shí)刻都值得記憶并記錄,而大腦的記憶很多時(shí)候是短暫且不可靠的历涝。寫這篇博文的第二個(gè)原因是想對(duì)自己學(xué)過的內(nèi)容作一個(gè)梳理和復(fù)習(xí)诅需,加深理解和記憶。不得不說荧库,作為機(jī)器學(xué)習(xí)領(lǐng)域國際公認(rèn)的大牛和Coursera的聯(lián)合創(chuàng)始人堰塌,Andrew的這門課程的視頻通俗易懂,練習(xí)也不難电爹,是一門非常好的機(jī)器學(xué)習(xí)入門課程蔫仙。由于本人剛剛進(jìn)入這個(gè)領(lǐng)域開始學(xué)習(xí),所以這篇文章如果有什么表述不準(zhǔn)確的地方丐箩,還請(qǐng)大家多多指正摇邦。

介紹

什么是機(jī)器學(xué)習(xí)

在學(xué)習(xí)具體的機(jī)器學(xué)習(xí)算法之前,對(duì)機(jī)器學(xué)習(xí)的基本概念有一個(gè)清晰的認(rèn)識(shí)很重要屎勘。目前對(duì)機(jī)器學(xué)習(xí)有兩種比較流行的定義施籍。一個(gè)是美國人工智能和機(jī)器學(xué)習(xí)方面的先驅(qū)Arthur_Samuel給出的:

the Field of study that gives computers the ability to learn without being explicitly programmed

也就是說機(jī)器學(xué)習(xí)研究的是賦予計(jì)算機(jī)在沒有被明確編程的情況下一種學(xué)習(xí)的能力。這是Arthur_Samuel在1959年提出來的概漱。另一個(gè)更正式和更現(xiàn)代的定義是由Tom M. Mitchell提出來的:

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.

也就是說對(duì)于某類任務(wù)T和性能度量P丑慎,如果一個(gè)計(jì)算機(jī)程序在T上以P衡量的性能隨著經(jīng)驗(yàn)E而自我完善,那么稱這個(gè)計(jì)算機(jī)程序從經(jīng)驗(yàn)E中學(xué)習(xí)瓤摧,這種學(xué)習(xí)就是機(jī)器學(xué)習(xí)竿裂。還是有點(diǎn)抽象。舉個(gè)手寫識(shí)別系統(tǒng)的例子照弥,手寫識(shí)別系統(tǒng)的任務(wù)就是要識(shí)別和分類圖像中的手寫文字腻异,該系統(tǒng)性能好壞的評(píng)判標(biāo)準(zhǔn)就是識(shí)別的準(zhǔn)確率,一些已分類的手寫文字?jǐn)?shù)據(jù)庫就是訓(xùn)練經(jīng)驗(yàn)这揣。手寫識(shí)別系統(tǒng)內(nèi)的程序就是利用已分類的手寫文字?jǐn)?shù)據(jù)庫來訓(xùn)練悔常,來提高對(duì)手寫文字的識(shí)別率。

機(jī)器學(xué)習(xí)的分類

根據(jù)輸入的訓(xùn)練集的特征和要解決的問題的類型给赞,機(jī)器學(xué)習(xí)主要分成兩大類:監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)机打。

  • 監(jiān)督學(xué)習(xí):給定有特定輸入和對(duì)應(yīng)的正確的(或者說想要的)輸出的數(shù)據(jù)集,監(jiān)督學(xué)習(xí)就是要學(xué)習(xí)出輸入和輸出之間的一種映射片迅,找到輸入和輸出之間的關(guān)系残邀。根據(jù)輸出值的不同監(jiān)督學(xué)習(xí)問題又可分為分類問題和回歸問題。如果輸出值是一個(gè)離散的有限集合,要解決的就是分類問題罐旗,如果輸出值是連續(xù)的膳汪,那么就是回歸問題。舉個(gè)例子九秀,把機(jī)器學(xué)習(xí)應(yīng)用到股票分析上,給定一個(gè)上市公司以往的各種數(shù)據(jù)粘我,預(yù)測該公司的未來的股價(jià)鼓蜒。如果是想要預(yù)測公司股價(jià)未來具體的價(jià)格,這就是一個(gè)回歸問題征字,如果想要預(yù)測該公司股價(jià)在未來是漲還是跌都弹,這就是一個(gè)分類問題。
  • 非監(jiān)督學(xué)習(xí):給定的數(shù)據(jù)集只有特定的輸入匙姜,沒有期望的輸出畅厢。非監(jiān)督學(xué)習(xí)的任務(wù)就是要去發(fā)現(xiàn)這些數(shù)據(jù)集之間隱藏的結(jié)構(gòu)關(guān)系。一個(gè)典型的學(xué)習(xí)是聚類氮昧,就是發(fā)現(xiàn)數(shù)據(jù)集中類似的東西框杜。

為了更清楚和形象地說明監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí),舉個(gè)簡單的例子袖肥。一位老師拿了一堆蘋果和香蕉的圖片給小朋友們蔫敲,這堆圖片中包含不同場景下的蘋果和香蕉陕见,把這堆圖片叫作“訓(xùn)練集”。如果老師事先不告訴小朋友們這堆圖片是什么東西,只是讓他們自己去看袄膏,然后歸類,之后老師再單獨(dú)拿出另外一堆圖片(稱之為“測試集”)讓他們?nèi)ヅ袛噙@些圖片是不是屬于剛剛看過的圖片中的某一類乖酬。小朋友們這種學(xué)習(xí)的過程其實(shí)就是一種非監(jiān)督學(xué)習(xí)于未。如果老師事先告訴小朋友們訓(xùn)練集中的圖片哪些是蘋果,哪些是香蕉蒸苇,然后再拿出測試集磷蛹,讓小朋友辨認(rèn)哪些是蘋果,哪些是香蕉填渠,這個(gè)過程就是監(jiān)督學(xué)習(xí)弦聂。

監(jiān)督學(xué)習(xí)

線性回歸

最簡單的線性回歸模型是單變量線性回歸,也就是從單個(gè)特征變量X的輸入去預(yù)測單個(gè)輸出值氛什。構(gòu)建一個(gè)假設(shè)函數(shù)h(x)莺葫,再構(gòu)建一個(gè)代價(jià)函數(shù)J(θ)去衡量假設(shè)函數(shù)擬合的準(zhǔn)確度,這個(gè)代價(jià)函數(shù)一般也叫作“平方誤差函數(shù)”枪眉。擬合的最好的情況是所有點(diǎn)到擬合直線的垂直方向的距離的平方和的平均值最小捺檬,也就是說擬合直線盡可能穿過所有點(diǎn)。在這種情況下J(θ)的值等于0贸铜。當(dāng)輸入的特征變量不是一個(gè)堡纬,而是多個(gè)時(shí)聂受,就是多元線性回歸問題。假設(shè)函數(shù)和代價(jià)函數(shù)的構(gòu)建和單變量線性回歸相同烤镐,只是變量個(gè)數(shù)不同而已蛋济。

有了假設(shè)函數(shù)和代價(jià)函數(shù),就需要估計(jì)假設(shè)函數(shù)中的θ參數(shù)炮叶,找出使代價(jià)函數(shù)最小的θ值碗旅。這里就用到了梯度下降算法。為了便于直觀地理解梯度下降算法镜悉,我們畫出代價(jià)函數(shù)J(θ)關(guān)于θ參數(shù)的圖祟辟,單變量回歸的情況下就是曲線圖,多元回歸的情況下就是曲面圖侣肄。找出使代價(jià)函數(shù)最小時(shí)的θ值就是圖中最低點(diǎn)對(duì)應(yīng)的θ值旧困。梯度下降算法的基本思想是先確定一個(gè)初始的θ值和學(xué)習(xí)速率α,然后對(duì)代價(jià)函數(shù)J(θ)求梯度稼锅,θ值在求出的梯度的方向的指引下吼具,以學(xué)習(xí)速率和梯度大小的乘積為步長進(jìn)行迭代,直至收斂缰贝。

如果不同輸入特征變量之間的值域相差過大馍悟,就會(huì)導(dǎo)致梯度下降算法的運(yùn)行速度很慢。為了解決這個(gè)問題剩晴,常用的一種方法是特征規(guī)整锣咒,通過特征規(guī)整把輸入變量變成大致相同的范圍,一般變成(-1,1)或者(-0.5,0.5)赞弥,但也沒有一個(gè)明確的要求毅整。常用的特征規(guī)整的方法又有特征縮放均值歸一化。特征縮放就是用輸入變量值分別除以輸入值的值域區(qū)間長度绽左。而均值歸一化就是用每個(gè)輸入值減去輸入值的均值后悼嫉,除以輸入值的值域區(qū)間長度或者輸入值的標(biāo)準(zhǔn)差。調(diào)試梯度下降算法時(shí)拼窥,找到一個(gè)合適的學(xué)習(xí)速率很重要戏蔑。可以繪出J(θ)關(guān)于迭代次數(shù)的曲線鲁纠,正常情況下曲線應(yīng)該是下降的总棵,如果觀察到曲線J(θ)隨著迭代次數(shù)在上升,那么可能需要減小學(xué)習(xí)速率的值改含。也可以做自動(dòng)收斂測試情龄,也就說如果J(θ)在迭代中下降的值小于某個(gè)閾值就認(rèn)為收斂,但是這個(gè)閾值一般不好確定。

在特征的選取和假設(shè)函數(shù)的形式上有多種方法骤视。比如可以把多個(gè)特征通過相乘的方式結(jié)合成一個(gè)特征鞍爱,假設(shè)函數(shù)的形式也不必一定是線性的,比如可以是特征的平方項(xiàng)专酗、三次項(xiàng)等睹逃,這就構(gòu)成了多項(xiàng)式回歸

在尋找最優(yōu)θ參數(shù)時(shí)祷肯,也可以利用標(biāo)準(zhǔn)方程來直接求得θ的值唯卖,不需要通過梯度下降算法中的多次迭代,但由于需要求矩陣的逆躬柬,如果特征過多的話,方程的求解過程也會(huì)很慢抽减。

邏輯回歸

雖然這類問題名字叫邏輯回歸允青,這是由于歷史命名的原因,但其實(shí)這類問題是分類問題卵沉。先從簡單的二分類問題開始颠锉,也就是說輸出值是0或者1。邏輯回歸的基本思想就是將線性回歸假設(shè)函數(shù)通過Sigmoid函數(shù)映射到(0,1)區(qū)間史汗,這樣就得到了邏輯回歸的假設(shè)函數(shù)琼掠,為了得到離散的0,1分類,再將假設(shè)函數(shù)值不低于0.5的映射為1停撞,小于0.5的映射為0瓷蛙。對(duì)于代價(jià)函數(shù)的表示,就利用了log函數(shù)戈毒,代價(jià)函數(shù)由兩項(xiàng)組成——輸出為1和輸出為0艰猬,當(dāng)期望輸出為1時(shí),假設(shè)函數(shù)的預(yù)測輸出越接近1埋市,整個(gè)代價(jià)函數(shù)的值就越泄谔摇;當(dāng)期望輸出為0時(shí)道宅,假設(shè)函數(shù)的預(yù)測輸出越接近0食听,整個(gè)代價(jià)函數(shù)的值就越小。對(duì)于邏輯回歸問題的θ值的優(yōu)化求解問題污茵,仍然可以用梯度下降算法樱报,但為了更高的算法效率,可以采用更高級(jí)的算法像“共軛梯度”省咨,“BFGS”肃弟,“L-BFGS”等。

對(duì)于多分類問題,也就是輸出值是(0,1,...,n)笤受∏铉停基本思想是把多分類問題轉(zhuǎn)化為(n+1)個(gè)二分類問題,在每個(gè)二分類問題中箩兽,我們選擇一個(gè)類津肛,然后把所有其他類都?xì)w為第二類,這樣重復(fù)(n+1)次后汗贫,就得到了(n+1)個(gè)不同類的假設(shè)函數(shù)身坐,使用這(n+1)個(gè)假設(shè)函數(shù),返回最大的預(yù)測值概率的就是我們?cè)擃A(yù)測的結(jié)果落包。

神經(jīng)網(wǎng)絡(luò)(NN)

當(dāng)特征個(gè)數(shù)比較少時(shí)部蛇,用回歸模型假設(shè)可能還不是很復(fù)雜,但隨著特征數(shù)增多咐蝇,如果還用回歸模型的話涯鲁,假設(shè)函數(shù)會(huì)變得非常復(fù)雜。神經(jīng)網(wǎng)絡(luò)應(yīng)運(yùn)而生有序。神經(jīng)網(wǎng)絡(luò)的工作原理就是模仿我們的大腦的工作方式抹腿。研究發(fā)現(xiàn),大腦內(nèi)部其實(shí)只用一個(gè)學(xué)習(xí)模塊來學(xué)習(xí)不同的功能旭寿【ǎ科學(xué)家做過這樣一個(gè)實(shí)驗(yàn):他們切斷了動(dòng)物的耳朵和他們大腦中聽覺皮層之間的神經(jīng)連接,然后把聽覺皮層嫁接到視神經(jīng)上盅称,結(jié)果聽覺皮層也學(xué)會(huì)了看肩祥。

基本的神經(jīng)網(wǎng)絡(luò)主要由三層組成:輸入層、輸出層和隱藏層微渠。輸入層就是不同的特征輸入搭幻,輸出層就是假設(shè)函數(shù)的預(yù)測結(jié)果輸出,根據(jù)神經(jīng)網(wǎng)絡(luò)復(fù)雜度的不同逞盆,可以有多個(gè)隱藏層檀蹋。每層可以由多個(gè)節(jié)點(diǎn)組成。在神經(jīng)網(wǎng)絡(luò)中0參數(shù)稱之為“權(quán)重”云芦,每層都有各自的0參數(shù)俯逾,在計(jì)算下一層的輸出時(shí),都要加上偏置單元舅逸。在處理邏輯回歸問題時(shí)桌肴,也使用Sigmoid函數(shù)進(jìn)行映射。神經(jīng)網(wǎng)絡(luò)的代價(jià)函數(shù)的大體結(jié)構(gòu)和一般的邏輯回歸的代價(jià)函數(shù)一致琉历,只是加和項(xiàng)更復(fù)雜坠七。

在優(yōu)化神經(jīng)網(wǎng)絡(luò)的代價(jià)函數(shù)的過程中會(huì)用到反向傳播算法水醋。算法本身有點(diǎn)復(fù)雜,不在本文中展開彪置。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的過程中拄踪,為了保證反向傳播算法按照預(yù)想的方式工作,需要進(jìn)行“梯度檢查”拳魁。另外惶桐,θ參數(shù)不能全部初始化為0,否則在執(zhí)行反向傳播時(shí)潘懊,所有的節(jié)點(diǎn)都將更新到同一個(gè)值姚糊,為了避免這種情況,θ要進(jìn)行隨機(jī)初始化授舟。

總結(jié)一下訓(xùn)練神經(jīng)網(wǎng)絡(luò)的步驟:

  1. 隨機(jī)初始化θ參數(shù)救恨;
  2. 執(zhí)行前向傳播算法計(jì)算假設(shè)函數(shù);
  3. 計(jì)算代價(jià)函數(shù)释树;
  4. 執(zhí)行反向傳播算法計(jì)算偏導(dǎo)數(shù)忿薇;
  5. 執(zhí)行梯度檢查,確保反向傳播算法工作正常躏哩,然后關(guān)閉梯度檢查算法;
  6. 運(yùn)用梯度下降或者其他內(nèi)置的高級(jí)優(yōu)化算法來最小化代價(jià)函數(shù)揉燃,得到對(duì)應(yīng)的θ參數(shù)扫尺。

支持向量機(jī)(SVM)

課程中支持向量機(jī)的引入是通過將邏輯回歸的代價(jià)函數(shù)中的log函數(shù)換成max函數(shù)再進(jìn)行一些形式的變換后得到的。與邏輯回歸的假設(shè)函數(shù)輸出概率值不同炊汤,支持向量機(jī)的假設(shè)函數(shù)直接輸出類別正驻,比如0或1。支持向量機(jī)的代價(jià)函數(shù)的非正則項(xiàng)有一個(gè)系數(shù)C(C=1/λ),C值的作用和λ的作用正好相反抢腐。當(dāng)想避免過擬合時(shí)姑曙,減小C的值。支持向量機(jī)是一種大間距分類器(Large Margin Classifiers)迈倍。也就是說支持向量機(jī)產(chǎn)生的決策邊界盡可能地遠(yuǎn)離正樣本和負(fù)樣本伤靠。決策邊界和最近的樣本之間的距離叫作margin。

課程中還提到了核函數(shù)啼染,支持向量機(jī)可以利用不同的核函數(shù)進(jìn)行分類宴合。課程中就舉了高斯函數(shù)作為核函數(shù)的例子。

在支持向量機(jī)的使用中迹鹅,需要考慮以下的問題:

  1. 選擇一個(gè)參數(shù)C
  2. 選擇核函數(shù)(相似度函數(shù)):
  • 不用核函數(shù)(線性核函數(shù))卦洽,得到的是標(biāo)準(zhǔn)的線性分類器,這種情況適用于特征數(shù)很多而訓(xùn)練樣本數(shù)很少斜棚;
  • 使用高斯核函數(shù)阀蒂,在使用高斯核函數(shù)之前需要進(jìn)行特征縮放该窗,同時(shí)需要確定標(biāo)準(zhǔn)差的大小,這種情況適用于特征數(shù)很少而訓(xùn)練樣本很多
  1. 邏輯回歸與支持向量機(jī)的比較(n代表特征數(shù)蚤霞,m代表訓(xùn)練樣本數(shù)):
  • 如果n相對(duì)于m來說很大酗失,使用邏輯回歸或者不帶核函數(shù)的SVM;
  • 如果n很小争便,m中等大小级零,使用帶高斯核函數(shù)的SVM;
  • 如果n很小滞乙,m很大奏纪,那么就手動(dòng)創(chuàng)建一些其他的特征,再使用邏輯回歸或者不帶核函數(shù)的SVM

非監(jiān)督學(xué)習(xí)

非監(jiān)督學(xué)習(xí)僅僅給了無標(biāo)簽的數(shù)據(jù)集斩启,由非監(jiān)督學(xué)習(xí)算法去找出數(shù)據(jù)集內(nèi)部的機(jī)構(gòu)序调,非監(jiān)督學(xué)習(xí)中一個(gè)主要的類別就是聚類分析。聚類分析在市場劃分兔簇、社交網(wǎng)絡(luò)分析发绢,組織計(jì)算集群和天文數(shù)據(jù)分析中都扮演了重要的角色。

K均值算法

K均值算法的思想如下:

  1. 在數(shù)據(jù)集中隨機(jī)初始化K個(gè)點(diǎn)(K代表類的個(gè)數(shù))垄琐,這些點(diǎn)叫作聚類中心边酒;
  2. 把數(shù)據(jù)集中所有點(diǎn)分配到離它最近的聚類中心;
  3. 計(jì)算屬于每個(gè)聚類中心的點(diǎn)的平均值狸窘,將聚類中心移到這些平均值處墩朦;
  4. 重復(fù)步驟2和3,直到聚類中心穩(wěn)定翻擒。

K均值算法有時(shí)候會(huì)卡在局部最優(yōu)解上氓涣,為了防止這種情況發(fā)生,聚類中心的隨機(jī)初始化可以使用下面的算法實(shí)現(xiàn)陋气,即進(jìn)行多次隨機(jī)初始化:

for i = 1 to 100:
   randomly initialize k-means
   run k-means to get 'c' and 'm'
   compute the cost function (distortion) J(c,m)
pick the clustering that gave us the lowest cost

主成分分析(PCA)

數(shù)據(jù)降維:數(shù)據(jù)降維可以用于數(shù)據(jù)的壓縮劳吠,占用較少的存儲(chǔ)空間,同時(shí)可以加快算法的速度巩趁。另外數(shù)據(jù)降維后便于數(shù)據(jù)的可視化痒玩,因?yàn)閷?duì)于超過三維的數(shù)據(jù),數(shù)據(jù)就不便于可視化议慰。值得注意的是凰荚,數(shù)據(jù)降維,降的是數(shù)據(jù)的特征數(shù)褒脯,而不是數(shù)據(jù)集中樣本的數(shù)量便瑟。很流行的數(shù)據(jù)降維算法就是主成分分析算法。

PCA的目標(biāo)是將每個(gè)特征往一條直線或一個(gè)平面上投影番川,使得投影誤差的平均值最小到涂。比如說脊框,把數(shù)據(jù)從n維降到k維,就是找k個(gè)向量践啄,使得數(shù)據(jù)在這些向量上的投影誤差最小浇雹。在這里需要說明一下,PCA不是線性回歸屿讽,線性回歸是最小化平方誤差昭灵,是垂直(vertical)距離,而PCA是最小化最短間距伐谈,或者說正交(orthogonal)距離烂完。

主成分分析算法的主要步驟如下:

  1. 進(jìn)行數(shù)據(jù)預(yù)處理:進(jìn)行特征縮放或者均值歸一化
  2. 計(jì)算特征向量的協(xié)方差矩陣;
  3. 計(jì)算協(xié)方差矩陣的特征向量诵棵;
  4. 取求得的U矩陣的前K列抠蚣,再計(jì)算降維后的特征向量。

算法在matlab中的實(shí)現(xiàn)代碼如下:

Sigma = (1/m) * X' * X;  % compute the covariance matrix
[U,S,V] = svd(Sigma);    % compute our projected directions
Ureduce = U(:,1:k);      % take the first k directions
Z = X * Ureduce;         % compute the projected data points

降維后的維度K的選嚷陌摹:
在上面的代碼中的第二行計(jì)算特征向量時(shí)嘶窄,返回了一個(gè)S矩陣,S矩陣是一個(gè)對(duì)角矩陣距贷,選取的K值應(yīng)該滿足S矩陣對(duì)角上的前K個(gè)值的和與對(duì)角上所有值的和的商大于0.99柄冲,滿足這一條件的K值都是可以的。

異常檢測

給定一個(gè)數(shù)據(jù)集忠蝗,然后再給定一個(gè)測試樣本羊初,判斷這個(gè)樣本是否異常,這類問題就是異常檢測問題什湘。

算法
  1. 計(jì)算各個(gè)特征的平均值和方差,假設(shè)各個(gè)特征之間相互獨(dú)立晦攒,并且遵從高斯分布闽撤,建立概率預(yù)測函數(shù)P(x);
  2. 對(duì)于給定的樣本脯颜,計(jì)算P(x)的值哟旗;
  3. 若P(x)<ε,則為異常栋操。
異常檢測系統(tǒng)的開發(fā)和評(píng)估

為了評(píng)估異常檢測算法的有效性闸餐,我們?nèi)∫恍?biāo)簽的數(shù)據(jù),分為正常樣本和異常樣本兩類矾芙,正常樣本占大多數(shù)舍沙,將這個(gè)數(shù)據(jù)集分為三個(gè)子數(shù)據(jù)集:訓(xùn)練集(60%,全是正常的)剔宪,交叉驗(yàn)證集(20%拂铡,其中0.1%屬于異常數(shù)據(jù)壹无,其余為正常數(shù)據(jù)),測試集(20%感帅,其中0.1%屬于異常數(shù)據(jù)斗锭,其余為正常數(shù)據(jù))。從訓(xùn)練集中訓(xùn)練出模型P(x)失球,應(yīng)用在交叉驗(yàn)證集上來確定決策閾值ε岖是,在測試集上進(jìn)行測試。誤差評(píng)估可以采用前面討論過的準(zhǔn)確率实苞、召回率或者F值豺撑。另外說明一下,特征的選取對(duì)于異常檢測系統(tǒng)的表現(xiàn)有很大影響硬梁,我們可以通過畫一個(gè)直方圖來看看數(shù)據(jù)集的分布是不是大致符合高斯分布前硫,如果不符合,可以先對(duì)數(shù)據(jù)做一個(gè)變換荧止,像log函數(shù)屹电,平方根函數(shù)等,處理后的數(shù)據(jù)一般都會(huì)符合高斯分布跃巡。此外危号,我們還可以使用多變量高斯分布來描述P(x)。

一些應(yīng)用

機(jī)器學(xué)習(xí)的一個(gè)很重要的應(yīng)用就是推薦系統(tǒng)素邪。推薦系統(tǒng)分為兩大類:基于內(nèi)容的推薦系統(tǒng)協(xié)同過濾外莲。

基于內(nèi)容的推薦系統(tǒng)的主要思想是已知電影的特征成分表達(dá),比如說一部電影的愛情成分占多少兔朦,動(dòng)作成分占多少等偷线,將用戶對(duì)電影的評(píng)分用一個(gè)線性模型進(jìn)行擬合,對(duì)于每個(gè)用戶學(xué)習(xí)出一個(gè)對(duì)應(yīng)的參數(shù)θ沽甥。和前面討論的線性回歸模型基本一致声邦。

協(xié)同過濾算法考慮到對(duì)一部電影中的特征成分進(jìn)行標(biāo)定是一件比較難的事,所以協(xié)同過濾算法從用戶處收集他們對(duì)不同類別的電影的評(píng)分摆舟,從這些評(píng)分中去學(xué)習(xí)電影的特征成分亥曹。協(xié)同過濾算法又可以分為兩類:基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。

搭建系統(tǒng)時(shí)的評(píng)估與建議

正則化

在講正則化之前恨诱,我們先弄清楚高偏差或者欠擬合高方差或者過擬合的概念媳瞪。高偏差或者欠擬合是指假設(shè)函數(shù)對(duì)數(shù)據(jù)的擬合程度很低,不能很好地描述數(shù)據(jù)的趨勢(shì)照宝,通常是假設(shè)函數(shù)太簡單蛇受,利用的特征太少造成的。高方差或者過擬合是指假設(shè)函數(shù)對(duì)訓(xùn)練集中的數(shù)據(jù)能有很好的擬合厕鹃,但是預(yù)測新數(shù)據(jù)的準(zhǔn)確性就太差龙巨,這通常是由于選擇的特征太多笼呆,假設(shè)函數(shù)太復(fù)雜造成的。對(duì)于過擬合的問題旨别,通常有兩種解決方案诗赌,一種是減少特征的數(shù)量,另一種就是正則化秸弛。

簡單地說铭若,正則化的思想就是減小特征前的θ參數(shù)來懲罰該特征項(xiàng),而這種懲罰又是通過增加他們?cè)诖鷥r(jià)函數(shù)的代價(jià)來實(shí)現(xiàn)的递览。通常是在原本的代價(jià)函數(shù)的基礎(chǔ)上額外加上一項(xiàng)叼屠,該項(xiàng)是由一個(gè)正則參數(shù)λ和θ項(xiàng)的平方和的乘積構(gòu)成,當(dāng)選擇一個(gè)較大的λ值時(shí)绞铃,為了使代價(jià)函數(shù)值最小镜雨,θ項(xiàng)的平方和必須很小,也就說通過λ值來懲罰θ參數(shù)儿捧。λ值也不能太大荚坞,太大就會(huì)懲罰過度,造成欠擬合菲盾。另外颓影,在執(zhí)行梯度下降的迭代時(shí),也要加入正則項(xiàng)懒鉴。

模型選擇與系統(tǒng)診斷

模型選擇

首先必須明確诡挂,一個(gè)假設(shè)函數(shù)對(duì)訓(xùn)練集的擬合程度很好并不代表這是一個(gè)好的假設(shè),用從訓(xùn)練集得到的假設(shè)函數(shù)在訓(xùn)練集上進(jìn)行誤差分析临谱,得到的誤差會(huì)比把這個(gè)假設(shè)函數(shù)用在其它數(shù)據(jù)集上得到的誤差要小璃俗。模型選擇要解決的問題是:如何選擇假設(shè)函數(shù)中的多項(xiàng)式的階數(shù),哪些特征應(yīng)該放進(jìn)假設(shè)函數(shù)中悉默,如何選擇正則參數(shù)λ城豁。

為了解決這個(gè)問題,我們可以把數(shù)據(jù)集分為三個(gè)部分:60%作為訓(xùn)練集麦牺,20%作為交叉驗(yàn)證集,20%作為測試集鞭缭。對(duì)于多項(xiàng)式階數(shù)的選擇問題剖膳,大致的步驟如下:

  1. 使用訓(xùn)練集得到不同階數(shù)下的假設(shè)函數(shù)的θ參數(shù);
  2. 計(jì)算1中得到的假設(shè)函數(shù)用在交叉驗(yàn)證集上的誤差岭辣,選擇誤差最小時(shí)對(duì)應(yīng)階數(shù)的模型吱晒;
  3. 將選擇的模型應(yīng)用在測試集上,估計(jì)通用誤差沦童。
系統(tǒng)診斷

系統(tǒng)診斷需要確定是偏差還是方差導(dǎo)致不好的預(yù)測結(jié)果仑濒,確定原因后再確定采取什么樣的解決辦法叹话。

先來研究一下多項(xiàng)式的階數(shù)與偏差和方差之間的聯(lián)系。隨著多項(xiàng)式階數(shù)的增加墩瞳,訓(xùn)練集的誤差會(huì)一直減小驼壶,同時(shí)交叉驗(yàn)證集的誤差也會(huì)隨之減小,但當(dāng)階數(shù)增加到一定程度喉酌,交叉驗(yàn)證集的誤差會(huì)轉(zhuǎn)而增加热凹。所以最優(yōu)的階數(shù)應(yīng)該是在交叉驗(yàn)證集的誤差的轉(zhuǎn)折點(diǎn)對(duì)應(yīng)的階數(shù)±岬纾總結(jié)一下就是般妙,出現(xiàn)高偏差(欠擬合)時(shí),訓(xùn)練集和交叉驗(yàn)證集的誤差都很大相速,并且近似相等碟渺;出現(xiàn)高方差(過擬合)時(shí),訓(xùn)練集誤差依然很小突诬,但是交叉驗(yàn)證集的誤差會(huì)比訓(xùn)練集誤差大很多苫拍。

現(xiàn)在來研究一下正則參數(shù)λ與偏差和方差之間的聯(lián)系。λ越大攒霹,對(duì)θ參數(shù)的懲罰就越大怯疤,假設(shè)函數(shù)就會(huì)被大大簡化,從而出現(xiàn)高偏差(欠擬合)催束,此時(shí)訓(xùn)練集誤差和交叉驗(yàn)證集誤差都會(huì)很大集峦;λ較小時(shí),訓(xùn)練集的誤差會(huì)較小抠刺,交叉驗(yàn)證集的誤差會(huì)較大塔淤,出現(xiàn)高方差(過擬合)的問題。所以一個(gè)最優(yōu)的λ值是使訓(xùn)練誤差和交叉驗(yàn)證集誤差都相對(duì)較小速妖,并且近似相等高蜂。

為了選擇一個(gè)合適的模型和正則參數(shù)λ,我們可以依照下面的步驟來做:

  1. 創(chuàng)建一個(gè)λ的集合罕容;
  2. 選擇一個(gè)λ進(jìn)行計(jì)算备恤;
  3. 創(chuàng)建一個(gè)不同階數(shù)或者其他的模型集合;
  4. 選擇一個(gè)模型去學(xué)習(xí)參數(shù)θ锦秒;
  5. 利用選擇的模型露泊,使用帶有選擇的λ參數(shù)的代價(jià)函數(shù)去學(xué)習(xí)得到參數(shù)θ;
  6. 在訓(xùn)練集上旅择,利用學(xué)習(xí)得到的θ參數(shù)惭笑,使用不帶λ參數(shù)的代價(jià)函數(shù)(即誤差函數(shù))計(jì)算訓(xùn)練集誤差;
  7. 在交叉驗(yàn)證集上,利用學(xué)習(xí)得到的θ參數(shù)沉噩,使用不帶λ參數(shù)的代價(jià)函數(shù)(即誤差函數(shù))計(jì)算交叉驗(yàn)證誤差捺宗;
  8. 在所有的模型和λ參數(shù)的組合上重復(fù)以上步驟,選擇使得交叉驗(yàn)證集誤差最小的組合川蒙;
  9. 使用最佳組合的λ和θ參數(shù)蚜厉,在測試集上計(jì)算測試集誤差。

接著再來研究一下誤差和訓(xùn)練集的大小的關(guān)系派歌,也叫作學(xué)習(xí)曲線弯囊。當(dāng)一個(gè)系統(tǒng)遭受高偏差問題時(shí),訓(xùn)練集很小時(shí)胶果,訓(xùn)練集誤差會(huì)很小匾嘱,但是交叉驗(yàn)證集誤差會(huì)較大,隨著訓(xùn)練集的增大早抠,訓(xùn)練集誤差會(huì)逐漸增大霎烙,交叉驗(yàn)證集誤差會(huì)逐漸減小,訓(xùn)練集增大到一定程度時(shí)蕊连,訓(xùn)練集誤差和交叉驗(yàn)證集誤差會(huì)趨于相等悬垃,但誤差都很大。所以甘苍,當(dāng)系統(tǒng)遭受高偏差問題時(shí)尝蠕,增大訓(xùn)練集的大小幫助不大。當(dāng)一個(gè)系統(tǒng)遭受高方差問題時(shí)载庭,訓(xùn)練集很小時(shí)看彼,訓(xùn)練集誤差較小,交叉驗(yàn)證集誤差較大囚聚,隨著訓(xùn)練集的增大靖榕,訓(xùn)練集誤差和交叉驗(yàn)證集的變化趨勢(shì)和高偏差問題一樣,但是當(dāng)訓(xùn)練集增大到一定程度顽铸,交叉驗(yàn)證集誤差會(huì)大于訓(xùn)練集誤差茁计。所以,當(dāng)系統(tǒng)遭受高方差問題時(shí)谓松,增大訓(xùn)練集的大小會(huì)有幫助星压。

總結(jié)一下在系統(tǒng)診斷時(shí)應(yīng)該了解的一些原則:

  • 增大訓(xùn)練集的大小可以修復(fù)高方差的問題而不是高偏差;
  • 減少特征可以修復(fù)高方差而不是高偏差鬼譬;增加特征可以修復(fù)高偏差而不是高方差娜膘;
  • 增加多項(xiàng)式項(xiàng)可以修復(fù)高偏差而不是高方差;
  • 在使用梯度下降算法時(shí)拧簸,減小λ可以修復(fù)高偏差劲绪,增大λ可以修復(fù)高方差男窟;
  • 在使用神經(jīng)網(wǎng)絡(luò)時(shí)盆赤,簡單的神經(jīng)網(wǎng)絡(luò)更傾向于會(huì)產(chǎn)生欠擬合贾富,復(fù)雜的神經(jīng)網(wǎng)絡(luò)更傾向于產(chǎn)生過擬合。
系統(tǒng)設(shè)計(jì)

Andrew在課程中推薦的解決一個(gè)機(jī)器學(xué)習(xí)問題的步驟如下:

  1. 先從簡單的假設(shè)函數(shù)開始牺六,快速實(shí)現(xiàn)它颤枪,并作早期測試;
  2. 畫出學(xué)習(xí)曲線淑际,根據(jù)學(xué)習(xí)曲線來確定是否更多的數(shù)據(jù)或者更多的特征會(huì)對(duì)模型的改善有幫助畏纲;
  3. 在交叉驗(yàn)證集上進(jìn)行誤差分析。

說到誤差分析春缕,有時(shí)候很難確定誤差數(shù)據(jù)的減小是否代表系統(tǒng)的改進(jìn)盗胀。這種情況在偏斜類問題上很突出。所謂偏斜類锄贼,就是說我們要預(yù)測的類在整個(gè)數(shù)據(jù)集中數(shù)量很少票灰。對(duì)于偏斜類的誤差分析,我們采用準(zhǔn)確率/召回率進(jìn)行衡量宅荤。也可以把這兩種度量變?yōu)橐环N度量:F值屑迂。

參考

Tom Mitchell: 《機(jī)器學(xué)習(xí)》

wikipedia:Machine Learning

ML Wiki Page: Machine Learning Lecture Notes

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冯键,隨后出現(xiàn)的幾起案子惹盼,更是在濱河造成了極大的恐慌,老刑警劉巖惫确,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件手报,死亡現(xiàn)場離奇詭異,居然都是意外死亡雕薪,警方通過查閱死者的電腦和手機(jī)昧诱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來所袁,“玉大人盏档,你說我怎么就攤上這事≡镆” “怎么了蜈亩?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長前翎。 經(jīng)常有香客問我稚配,道長,這世上最難降的妖魔是什么港华? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任道川,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冒萄。我一直安慰自己臊岸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布尊流。 她就那樣靜靜地躺著帅戒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崖技。 梳的紋絲不亂的頭發(fā)上逻住,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音迎献,去河邊找鬼瞎访。 笑死,一個(gè)胖子當(dāng)著我的面吹牛吁恍,可吹牛的內(nèi)容都是我干的装诡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼践盼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼鸦采!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起咕幻,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤渔伯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后肄程,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锣吼,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年蓝厌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了玄叠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拓提,死狀恐怖读恃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情代态,我是刑警寧澤寺惫,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站蹦疑,受9級(jí)特大地震影響西雀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜歉摧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一艇肴、第九天 我趴在偏房一處隱蔽的房頂上張望腔呜。 院中可真熱鬧,春花似錦再悼、人聲如沸育谬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至锰镀,卻和暖如春娘侍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泳炉。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工憾筏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人花鹅。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓氧腰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刨肃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子古拴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 首頁 資訊 文章 資源 小組 相親 登錄 注冊(cè) 首頁 最新文章 IT 職場 前端 后端 移動(dòng)端 數(shù)據(jù)庫 運(yùn)維 其他...
    Helen_Cat閱讀 3,843評(píng)論 1 10
  • 偏差和方差的判別 高偏差和高方差本質(zhì)上為學(xué)習(xí)模型的欠擬合和過擬合問題。 對(duì)于高偏差和高方差問題真友,即學(xué)習(xí)模型的欠擬合...
    SmallRookie閱讀 483評(píng)論 0 0
  • AI人工智能時(shí)代黄痪,機(jī)器學(xué)習(xí),深度學(xué)習(xí)作為其核心盔然,本文主要介紹機(jī)器學(xué)習(xí)的基礎(chǔ)算法桅打,以詳細(xì)線介紹 線性回歸算法 及其 ...
    erixhao閱讀 13,827評(píng)論 0 36
  • 總有一些東西堵在胸口,說不出來愈案;總有一些東西在頭腦中閃現(xiàn)挺尾,無法描繪... 變成文字,可能是最好的方法站绪。選擇一個(gè)合適...
    燕山沉閱讀 191評(píng)論 0 0
  • 前幾天深夜.跟一個(gè)看似知世故卻純的像張白紙的朋友瞎聊遭铺。那是我來長沙的第三天.青年男女聊的話題....
    蘭桂坊的USB閱讀 4,043評(píng)論 0 0