1.決定下一步做什么
到目前為止,我們已經(jīng)介紹了許多不同的學(xué)習(xí)算法,如果你一直跟著這些視頻的進(jìn)度學(xué)習(xí)氏堤,你會(huì)發(fā)現(xiàn)自己已經(jīng)不知不覺(jué)地成為一個(gè)了解許多先進(jìn)機(jī)器學(xué)習(xí)技術(shù)的專家了瘫拣。
然而,在懂機(jī)器學(xué)習(xí)的人當(dāng)中依然存在著很大的差距肛响,一部分人確實(shí)掌握了怎樣高效有力地運(yùn)用這些學(xué)習(xí)算法岭粤。而另一些人他們可能對(duì)我馬上要講的東西,就不是那么熟悉了特笋。他們可能沒(méi)有完全理解怎樣運(yùn)用這些算法剃浇。因此總是把時(shí)間浪費(fèi)在毫無(wú)意義的嘗試上。我想做的是確保你在設(shè)計(jì)機(jī)器學(xué)習(xí)的系統(tǒng)時(shí)猎物,你能夠明白怎樣選擇一條最合適虎囚、最正確的道路。因此蔫磨,在這節(jié)視頻和之后的幾段視頻中淘讥,我將向你介紹一些實(shí)用的建議和指導(dǎo),幫助你明白怎樣進(jìn)行選擇堤如。具體來(lái)講蒲列,我將重點(diǎn)關(guān)注的問(wèn)題是假如你在開發(fā)一個(gè)機(jī)器學(xué)習(xí)系統(tǒng)窒朋,或者想試著改進(jìn)一個(gè)機(jī)器學(xué)習(xí)系統(tǒng)的性能,你應(yīng)如何決定接下來(lái)應(yīng)該選擇哪條道路嫉嘀?為了解釋這一問(wèn)題炼邀,我想仍然使用預(yù)測(cè)房?jī)r(jià)的學(xué)習(xí)例子,假如你已經(jīng)完成了正則化線性回歸剪侮,也就是最小化代價(jià)函數(shù)的值拭宁,假如,在你得到你的學(xué)習(xí)參數(shù)以后瓣俯,如果你要將你的假設(shè)函數(shù)放到一組新的房屋樣本上進(jìn)行測(cè)試杰标,假如說(shuō)你發(fā)現(xiàn)在預(yù)測(cè)房?jī)r(jià)時(shí)產(chǎn)生了巨大的誤差,現(xiàn)在你的問(wèn)題是要想改進(jìn)這個(gè)算法彩匕,接下來(lái)應(yīng)該怎么辦腔剂?
實(shí)際上你可以想出很多種方法來(lái)改進(jìn)這個(gè)算法的性能,其中一種辦法是使用更多的訓(xùn)練樣本驼仪。具體來(lái)講掸犬,也許你能想到通過(guò)電話調(diào)查或上門調(diào)查來(lái)獲取更多的不同的房屋出售數(shù)據(jù)。遺憾的是绪爸,我看到好多人花費(fèi)了好多時(shí)間想收集更多的訓(xùn)練樣本湾碎。他們總認(rèn)為,要是我有兩倍甚至十倍數(shù)量的訓(xùn)練數(shù)據(jù)奠货,那就一定會(huì)解決問(wèn)題的是吧介褥?但有時(shí)候獲得更多的訓(xùn)練數(shù)據(jù)實(shí)際上并沒(méi)有作用。在接下來(lái)的幾段視頻中递惋,我們將解釋原因柔滔。
我們也將知道怎樣避免把過(guò)多的時(shí)間浪費(fèi)在收集更多的訓(xùn)練數(shù)據(jù)上,這實(shí)際上是于事無(wú)補(bǔ)的萍虽。另一個(gè)方法睛廊,你也許能想到的是嘗試選用更少的特征集。因此如果你有一系列特征比如x1,x2,x3等等杉编。也許有很多特征喉前,也許你可以花一點(diǎn)時(shí)間從這些特征中仔細(xì)挑選一小部分來(lái)防止過(guò)擬合⊥醪疲或者也許你需要用更多的特征,也許目前的特征集裕便,對(duì)你來(lái)講并不是很有幫助绒净。你希望從獲取更多特征的角度來(lái)收集更多的數(shù)據(jù),同樣地偿衰,你可以把這個(gè)問(wèn)題擴(kuò)展為一個(gè)很大的項(xiàng)目挂疆,比如使用電話調(diào)查來(lái)得到更多的房屋案例改览,或者再進(jìn)行土地測(cè)量來(lái)獲得更多有關(guān),這塊土地的信息等等缤言,因此這是一個(gè)復(fù)雜的問(wèn)題宝当。同樣的道理,我們非常希望在花費(fèi)大量時(shí)間完成這些工作之前胆萧,我們就能知道其效果如何庆揩。我們也可以嘗試增加多項(xiàng)式特征的方法,比如x1的平方跌穗,x2的平方订晌,x1,x2的乘積,我們可以花很多時(shí)間來(lái)考慮這一方法蚌吸,我們也可以考慮其他方法減小或增大正則化參數(shù)λ的值锈拨。我們列出的這個(gè)單子,上面的很多方法都可以擴(kuò)展開來(lái)擴(kuò)展成一個(gè)六個(gè)月或更長(zhǎng)時(shí)間的項(xiàng)目羹唠。遺憾的是奕枢,大多數(shù)人用來(lái)選擇這些方法的標(biāo)準(zhǔn)是憑感覺(jué)的,也就是說(shuō)佩微,大多數(shù)人的選擇方法是隨便從這些方法中選擇一種缝彬,比如他們會(huì)說(shuō)“噢,我們來(lái)多找點(diǎn)數(shù)據(jù)吧”喊衫,然后花上六個(gè)月的時(shí)間收集了一大堆數(shù)據(jù)跌造,然后也許另一個(gè)人說(shuō):“好吧,讓我們來(lái)從這些房子的數(shù)據(jù)中多找點(diǎn)特征吧”族购。我很遺憾不止一次地看到很多人花了至少六個(gè)月時(shí)間來(lái)完成他們隨便選擇的一種方法壳贪,而在六個(gè)月或者更長(zhǎng)時(shí)間后,他們很遺憾地發(fā)現(xiàn)自己選擇的是一條不歸路寝杖。幸運(yùn)的是违施,有一系列簡(jiǎn)單的方法能讓你事半功倍,排除掉單子上的至少一半的方法瑟幕,留下那些確實(shí)有前途的方法磕蒲,同時(shí)也有一種很簡(jiǎn)單的方法,只要你使用只盹,就能很輕松地排除掉很多選擇辣往,從而為你節(jié)省大量不必要花費(fèi)的時(shí)間。最終達(dá)到改進(jìn)機(jī)器學(xué)習(xí)系統(tǒng)性能的目的假設(shè)我們需要用一個(gè)線性回歸模型來(lái)預(yù)測(cè)房?jī)r(jià)殖卑,當(dāng)我們運(yùn)用訓(xùn)練好了的模型來(lái)預(yù)測(cè)未知數(shù)據(jù)的時(shí)候發(fā)現(xiàn)有較大的誤差站削,我們下一步可以做什么?
1.獲得更多的訓(xùn)練樣本——通常是有效的孵稽,但代價(jià)較大许起,下面的方法也可能有效十偶,可考慮先采用下面的幾種方法。
2.嘗試減少特征的數(shù)量
3.嘗試獲得更多的特征
4.嘗試增加多項(xiàng)式特征
5.嘗試減少正則化程度λ
6.嘗試增加正則化程度λ
我們不應(yīng)該隨機(jī)選擇上面的某種方法來(lái)改進(jìn)我們的算法园细,而是運(yùn)用一些機(jī)器學(xué)習(xí)診斷法來(lái)幫助我們知道上面哪些方法對(duì)我們的算法是有效的惦积。
2.評(píng)估一個(gè)假設(shè)
如何避免過(guò)擬合和欠擬合的問(wèn)題?
當(dāng)我們確定學(xué)習(xí)算法的參數(shù)時(shí)猛频,我們考慮的是選擇參數(shù)狮崩,來(lái)使訓(xùn)練誤差最小化,有人認(rèn)為伦乔,僅僅是因?yàn)檫@個(gè)函數(shù)有很小的訓(xùn)練誤差并不能說(shuō)明它一定是一個(gè)好的假設(shè)厉亏,它也有可能過(guò)擬合,即對(duì)新的數(shù)據(jù)沒(méi)有好的預(yù)測(cè)結(jié)果烈和,那么怎么判斷一個(gè)假設(shè)是否過(guò)擬合呢爱只?我們可以畫出假設(shè)函數(shù)h(x),然后觀察招刹。但一般情況下恬试,對(duì)于特征不止一個(gè)的例子,想要畫出假設(shè)函數(shù)來(lái)觀察是不可能的疯暑。
因此浮定,我們需要一種評(píng)價(jià)假設(shè)函數(shù)的方法:
首先將數(shù)據(jù)分成兩部分右蕊,第一部分成為我們的訓(xùn)練集植榕,第二部分成為我們的測(cè)試集脓钾,將所有數(shù)據(jù)分成訓(xùn)練集和測(cè)試集,其中一種 典型的分割方法是按照七比三的比例越锈。m表示訓(xùn)練樣本的總數(shù)仗嗦,mtest表示測(cè)試樣本的總數(shù)。
最后再提醒一點(diǎn)甘凭,在這里我是選擇了前70%的數(shù)據(jù)作為訓(xùn)練集稀拐,后30%的數(shù)據(jù)作為測(cè)試集,但如果這組數(shù)據(jù)有某種規(guī)律或順序的話丹弱,那么最好是隨機(jī)選擇70%作為訓(xùn)練集德撬,剩下的30%作為測(cè)試集。當(dāng)然如果你的數(shù)據(jù)已經(jīng)隨機(jī)分布了躲胳,你就可以選擇前70%和后30%蜓洪。但如果你的數(shù)據(jù)不是隨機(jī)排列的,最好還是打亂順序坯苹,或者使用一種隨機(jī)的順序來(lái)構(gòu)建你的數(shù)據(jù)隆檀。
一種典型的方法來(lái)訓(xùn)練和測(cè)試你的學(xué)習(xí)算法,比如線性回歸算法。首先你需要對(duì)訓(xùn)練集進(jìn)行學(xué)習(xí)得到參數(shù)θ刚操。具體來(lái)講,就是最小化訓(xùn)練誤差J(θ)再芋,這里的J(θ)是使用那70%數(shù)據(jù)來(lái)定義得到的菊霜,也就是僅僅是訓(xùn)練數(shù)據(jù)。接下來(lái)你要計(jì)算測(cè)試誤差济赎,用Jtest來(lái)表示測(cè)試誤差鉴逞,那么你要做的就是把從訓(xùn)練集中學(xué)習(xí)得到的參數(shù)θ放到這里來(lái)計(jì)算測(cè)試誤差。
當(dāng)然這是我們使用線性回歸和平方誤差標(biāo)準(zhǔn)時(shí)司训,測(cè)試誤差的定義构捡。如果考是考慮分類問(wèn)題邏輯回歸問(wèn)題呢?
訓(xùn)練和測(cè)試邏輯回歸的步驟和之前所說(shuō)的非常類似壳猜。首先訓(xùn)練數(shù)據(jù)勾徽,從70%的訓(xùn)練樣本中學(xué)習(xí)得到參數(shù)θ,然后計(jì)算測(cè)試誤差统扳,目標(biāo)函數(shù)和我們平常做邏輯回歸的一樣喘帚,唯一的區(qū)別是,現(xiàn)在我們使用的是mtest個(gè)測(cè)試樣本咒钟。此外還可以使用錯(cuò)誤分類誤差來(lái)檢驗(yàn)預(yù)測(cè)值和實(shí)際值之間的差距(使用0/1錯(cuò)誤分類度量來(lái)定義的測(cè)試誤差)吹由。
如何進(jìn)行諸如特征選擇一類的問(wèn)題?比如學(xué)習(xí)算法多項(xiàng)式選擇的問(wèn)題朱嘴,或者學(xué)習(xí)算法正則化參數(shù)的選擇倾鲫?
3.模型選擇和訓(xùn)練、驗(yàn)證萍嬉、測(cè)試集
對(duì)于一個(gè)數(shù)據(jù)集最合適的多項(xiàng)式次數(shù)乌昔,怎么選用正確的特征來(lái)構(gòu)造學(xué)習(xí)算法?或者如何選擇學(xué)習(xí)算法中的正則化參數(shù)lambda帚湘?
假設(shè)我們要在10個(gè)不同次數(shù)的二項(xiàng)式模型之間進(jìn)行選擇:
顯然越高次數(shù)的多項(xiàng)式模型越能夠適應(yīng)我們的訓(xùn)練數(shù)據(jù)集玫荣,但是適應(yīng)訓(xùn)練數(shù)據(jù)集并不代表著能推廣至一般情況,我們應(yīng)該選擇一個(gè)更能適應(yīng)一般情況的模型大诸。我們需要使用交叉驗(yàn)證集來(lái)幫助選擇模型捅厂。
即:使用60%的數(shù)據(jù)作為訓(xùn)練集,使用 20%的數(shù)據(jù)作為交叉驗(yàn)證集资柔,使用20%的數(shù)據(jù)作為測(cè)試集
模型選擇的方法為:
1.使用訓(xùn)練集訓(xùn)練出10個(gè)模型
2.用10個(gè)模型分別對(duì)交叉驗(yàn)證集計(jì)算得出交叉驗(yàn)證誤差(代價(jià)函數(shù)的值)
3.選取代價(jià)函數(shù)值最小的模型
4.用步驟3中選出的模型對(duì)測(cè)試集計(jì)算得出推廣誤差(代價(jià)函數(shù)的值)
當(dāng)面對(duì)這樣的模型選擇問(wèn)題時(shí)焙贷,我們要做的是用驗(yàn)證集來(lái)選擇模型,而不是用原來(lái)的測(cè)試集贿堰。
具體來(lái)講辙芍,我們首先要選取第一種假設(shè),第一個(gè)模型,然后最小化代價(jià)函數(shù)故硅,得到對(duì)應(yīng)一次模型的一個(gè)參數(shù)向量θ庶灿,一直求得各個(gè)對(duì)應(yīng)模型的參數(shù)變量。接著要做的不是像原來(lái)一樣用測(cè)試集來(lái)測(cè)試這些假設(shè)吃衅,而是用驗(yàn)證集來(lái)測(cè)試往踢,然后計(jì)算出Jcv來(lái)觀察這些假設(shè)模型在驗(yàn)證集上的效果如何。我們要做的就是用驗(yàn)證集擬合出最佳參數(shù)d徘层,這樣省下了測(cè)試集峻呕,可以用它來(lái)衡量或者估計(jì)算法選出的模型的泛化誤差。
用測(cè)試集選擇你的模型趣效,然后使用相同的測(cè)試集來(lái)計(jì)算誤差瘦癌,這不是一個(gè)好主意,通過(guò)測(cè)試集來(lái)選擇多項(xiàng)式的系數(shù)跷敬,然后仍在測(cè)試集上計(jì)算誤差讯私,把它當(dāng)做理想的泛化誤差,但是最好不要這樣做干花!分成訓(xùn)練集妄帘、驗(yàn)證集和測(cè)試集是更好地選擇。
4.診斷偏差和方差
如果你在運(yùn)行算法的時(shí)候池凄,運(yùn)行的不是很理想抡驼,多半是出現(xiàn)了偏差或方差過(guò)大的問(wèn)題,換句話說(shuō)要么是過(guò)擬合問(wèn)題肿仑,要么是欠擬合問(wèn)題致盟,這種情況下,搞清楚是偏差問(wèn)題還是方差問(wèn)題或者兩者都有關(guān)是很重要的尤慰,因?yàn)檫@有利于我們找到有效的方法和途徑來(lái)改進(jìn)算法馏锡。
如何觀察算法然后判斷是偏差問(wèn)題還是方差問(wèn)題?這對(duì)于改進(jìn)你的學(xué)習(xí)算法的效果非常重要伟端!
我們沿用之前所使用的訓(xùn)練誤差和驗(yàn)證誤差的定義杯道,分別是用訓(xùn)練集計(jì)算的,和利用驗(yàn)證集計(jì)算的均方誤差责蝠,可以利用下面的函數(shù)圖像來(lái)分析出最佳d值党巾。
具體來(lái)說(shuō),假設(shè)你得出了一個(gè)學(xué)習(xí)算法霜医,而這個(gè)算法并沒(méi)有表現(xiàn)地像你期望的那么好齿拂,如果你的交叉驗(yàn)證誤差或者測(cè)試集誤差都非常大,那么怎么判斷此時(shí)的學(xué)習(xí)算法出現(xiàn)了高偏差的問(wèn)題還是高方差問(wèn)題肴敛。
如果你的算法處于高偏差的情況署海,那么你的訓(xùn)練集誤差會(huì)很大吗购,因?yàn)槟愕募僭O(shè)不能很好地?cái)M合訓(xùn)練集數(shù)據(jù)。而你處于高方差的問(wèn)題時(shí)砸狞,你的訓(xùn)練誤差通常都會(huì)很小捻勉,并且遠(yuǎn)遠(yuǎn)小于交叉驗(yàn)證誤差。
即:
對(duì)于訓(xùn)練集刀森,當(dāng) d 較小時(shí)贯底,模型擬合程度更低,誤差較大撒强;隨著 d 的增長(zhǎng),擬合程度提高笙什,誤差減小飘哨。
對(duì)于交叉驗(yàn)證集,當(dāng) d較小時(shí)琐凭,模型擬合程度低芽隆,誤差較大;但是隨著 d 的增長(zhǎng)统屈,誤差呈現(xiàn)先減小后增大的趨勢(shì)胚吁,轉(zhuǎn)折點(diǎn)是我們的模型開始過(guò)擬合訓(xùn)練數(shù)據(jù)集的時(shí)候。
如果我們的交叉驗(yàn)證集誤差較大愁憔,我們?nèi)绾闻袛嗍欠讲钸€是偏差呢腕扶?根據(jù)上面的圖表,我們知道:
1.訓(xùn)練集誤差和交叉驗(yàn)證集誤差近似時(shí):偏差/欠擬合
2.交叉驗(yàn)證集誤差遠(yuǎn)大于訓(xùn)練集誤差時(shí):方差/過(guò)擬合
采取什么措施來(lái)應(yīng)對(duì)高方差和高偏差吨掌?
5. 正則化和偏差/方差
在我們?cè)谟?xùn)練模型的過(guò)程中半抱,一般會(huì)使用一些正則化方法來(lái)防止過(guò)擬合。但是我們可能會(huì)正則化的程度太高或太小了膜宋,即我們?cè)谶x擇λ的值時(shí)也需要思考與剛才選擇多項(xiàng)式模型次數(shù)類似的問(wèn)題窿侈。
我們選擇一系列的想要測(cè)試的λ值,通常是 0-10之間的呈現(xiàn)2倍關(guān)系的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10共12個(gè))秋茫。 我們同樣把數(shù)據(jù)分為訓(xùn)練集史简、交叉驗(yàn)證集和測(cè)試集。
選擇λ的方法為:
1.使用訓(xùn)練集訓(xùn)練出12個(gè)不同程度正則化的模型
2.用12個(gè)模型分別對(duì)交叉驗(yàn)證集計(jì)算的出交叉驗(yàn)證誤差
3.選擇得出交叉驗(yàn)證誤差最小的模型
4.運(yùn)用步驟3中選出模型對(duì)測(cè)試集計(jì)算得出推廣誤差肛著,我們也可以同時(shí)將訓(xùn)練集和交叉驗(yàn)證集模型的代價(jià)函數(shù)誤差與λ的值繪制在一張圖表上:
- 當(dāng) λ較小時(shí)圆兵,訓(xùn)練集誤差較小(過(guò)擬合)而交叉驗(yàn)證集誤差較大
- 隨著 λ的增加策泣,訓(xùn)練集誤差不斷增加(欠擬合)衙傀,而交叉驗(yàn)證集誤差則是先減小后增加
6.學(xué)習(xí)曲線
學(xué)習(xí)曲線就是一種很好的工具,我經(jīng)常使用學(xué)習(xí)曲線來(lái)判斷某一個(gè)學(xué)習(xí)算法是否處于偏差萨咕、方差問(wèn)題统抬。學(xué)習(xí)曲線是學(xué)習(xí)算法的一個(gè)很好的合理檢驗(yàn)(sanity check)。學(xué)習(xí)曲線是將訓(xùn)練集誤差和交叉驗(yàn)證集誤差作為訓(xùn)練集樣本數(shù)量()的函數(shù)繪制的圖表。
即聪建,如果我們有100行數(shù)據(jù)钙畔,我們從1行數(shù)據(jù)開始,逐漸學(xué)習(xí)更多行的數(shù)據(jù)金麸。思想是:當(dāng)訓(xùn)練較少行數(shù)據(jù)的時(shí)候擎析,訓(xùn)練的模型將能夠非常完美地適應(yīng)較少的訓(xùn)練數(shù)據(jù),但是訓(xùn)練出來(lái)的模型卻不能很好地適應(yīng)交叉驗(yàn)證集數(shù)據(jù)或測(cè)試集數(shù)據(jù)挥下。
如何利用學(xué)習(xí)曲線識(shí)別高偏差/欠擬合:作為例子揍魂,我們嘗試用一條直線來(lái)適應(yīng)下面的數(shù)據(jù),可以看出棚瘟,無(wú)論訓(xùn)練集有多么大誤差都不會(huì)有太大改觀:也就是說(shuō)在高偏差/欠擬合的情況下现斋,增加數(shù)據(jù)到訓(xùn)練集不一定能有幫助。
如何利用學(xué)習(xí)曲線識(shí)別高方差/過(guò)擬合:假設(shè)我們使用一個(gè)非常高次的多項(xiàng)式模型偎蘸,并且正則化非常小庄蹋,可以看出,當(dāng)交叉驗(yàn)證集誤差遠(yuǎn)大于訓(xùn)練集誤差時(shí)迷雪,往訓(xùn)練集增加更多數(shù)據(jù)可以提高模型的效果限书。
也就是說(shuō)在高方差/過(guò)擬合的情況下,增加更多數(shù)據(jù)到訓(xùn)練集可能可以提高算法效果章咧。
7.決定下一步做什么
我們已經(jīng)介紹了怎樣評(píng)價(jià)一個(gè)學(xué)習(xí)算法倦西,我們討論了模型選擇問(wèn)題,偏差和方差的問(wèn)題赁严。那么這些診斷法則怎樣幫助我們判斷调限,哪些方法可能有助于改進(jìn)學(xué)習(xí)算法的效果,而哪些可能是徒勞的呢误澳?
讓我們?cè)俅位氐阶铋_始的例子耻矮,在那里尋找答案,這就是我們之前的例子忆谓●勺埃回顧 1.1 中提出的六種可選的下一步,讓我們來(lái)看一看我們?cè)谑裁辞闆r下應(yīng)該怎樣選擇:
1.獲得更多的訓(xùn)練樣本——解決高方差
2.嘗試減少特征的數(shù)量——解決高方差
3.嘗試獲得更多的特征——解決高偏差
4.嘗試增加多項(xiàng)式特征——解決高偏差
5.嘗試減少正則化程度λ——解決高偏差
6.嘗試增加正則化程度λ——解決高方差
神經(jīng)網(wǎng)絡(luò)的方差和偏差:
使用較小的神經(jīng)網(wǎng)絡(luò)倡缠,類似于參數(shù)較少的情況哨免,容易導(dǎo)致高偏差和欠擬合,但計(jì)算代價(jià)較小使用較大的神經(jīng)網(wǎng)絡(luò)昙沦,類似于參數(shù)較多的情況琢唾,容易導(dǎo)致高方差和過(guò)擬合,雖然計(jì)算代價(jià)比較大盾饮,但是可以通過(guò)正則化手段來(lái)調(diào)整而更加適應(yīng)數(shù)據(jù)采桃。
通常選擇較大的神經(jīng)網(wǎng)絡(luò)并采用正則化處理會(huì)比采用較小的神經(jīng)網(wǎng)絡(luò)效果要好懒熙。
對(duì)于神經(jīng)網(wǎng)絡(luò)中的隱藏層的層數(shù)的選擇,通常從一層開始逐漸增加層數(shù)普办,為了更好地作選擇工扎,可以把數(shù)據(jù)分為訓(xùn)練集、交叉驗(yàn)證集和測(cè)試集衔蹲,針對(duì)不同隱藏層層數(shù)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練神經(jīng)網(wǎng)絡(luò)肢娘,
然后選擇交叉驗(yàn)證集代價(jià)最小的神經(jīng)網(wǎng)絡(luò)。
好的舆驶,以上就是我們介紹的偏差和方差問(wèn)題橱健,以及診斷該問(wèn)題的學(xué)習(xí)曲線方法。在改進(jìn)學(xué)習(xí)算法的表現(xiàn)時(shí)沙廉,你可以充分運(yùn)用以上這些內(nèi)容來(lái)判斷哪些途徑可能是有幫助的畴博。而哪些方法可能是無(wú)意義的。如果你理解了以上幾節(jié)視頻中介紹的內(nèi)容蓝仲,并且懂得如何運(yùn)用。那么你已經(jīng)可以使用機(jī)器學(xué)習(xí)方法有效的解決實(shí)際問(wèn)題了官疲。你也能像硅谷的大部分機(jī)器學(xué)習(xí)從業(yè)者一樣袱结,他們每天的工作就是使用這些學(xué)習(xí)算法來(lái)解決眾多實(shí)際問(wèn)題。我希望這幾節(jié)中提到的一些技巧途凫,關(guān)于方差垢夹、偏差,以及學(xué)習(xí)曲線為代表的診斷法能夠真正幫助你更有效率地應(yīng)用機(jī)器學(xué)習(xí)维费,讓它們高效地工作果元。
機(jī)器學(xué)習(xí)系統(tǒng)的設(shè)計(jì)
8.首先要做什么
在接下來(lái)的視頻中,我將談到機(jī)器學(xué)習(xí)系統(tǒng)的設(shè)計(jì)犀盟。這些視頻將談及在設(shè)計(jì)復(fù)雜的機(jī)器學(xué)習(xí)系統(tǒng)時(shí)而晒,你將遇到的主要問(wèn)題。同時(shí)我們會(huì)試著給出一些關(guān)于如何巧妙構(gòu)建一個(gè)復(fù)雜的機(jī)器學(xué)習(xí)系統(tǒng)的建議阅畴。下面的課程的的數(shù)學(xué)性可能不是那么強(qiáng)倡怎,但是我認(rèn)為我們將要講到的這些東西是非常有用的,可能在構(gòu)建大型的機(jī)器學(xué)習(xí)系統(tǒng)時(shí)贱枣,節(jié)省大量的時(shí)間监署。
本周以一個(gè)垃圾郵件分類器算法為例進(jìn)行討論。
為了解決這樣一個(gè)問(wèn)題纽哥,我們首先要做的決定是如何選擇并表達(dá)特征向量x钠乏。我們可以選擇一個(gè)由100個(gè)最常出現(xiàn)在垃圾郵件中的詞所構(gòu)成的列表,根據(jù)這些詞是否有在郵件中出現(xiàn)春塌,來(lái)獲得我們的特征向量(出現(xiàn)為1晓避,不出現(xiàn)為0)簇捍,尺寸為100×1。
為了構(gòu)建這個(gè)分類器算法够滑,我們可以做很多事垦写,例如:
1.收集更多的數(shù)據(jù),讓我們有更多的垃圾郵件和非垃圾郵件的樣本
2.基于郵件的路由信息開發(fā)一系列復(fù)雜的特征
3.基于郵件的正文信息開發(fā)一系列復(fù)雜的特征彰触,包括考慮截詞的處理
4.為探測(cè)刻意的拼寫錯(cuò)誤(把watch 寫成w4tch)開發(fā)復(fù)雜的算法
在上面這些選項(xiàng)中梯投,非常難決定應(yīng)該在哪一項(xiàng)上花費(fèi)時(shí)間和精力,作出明智的選擇况毅,比隨著感覺(jué)走要更好分蓖。當(dāng)我們使用機(jī)器學(xué)習(xí)時(shí),總是可以“頭腦風(fēng)暴”一下尔许,想出一堆方法來(lái)試試么鹤。實(shí)際上,當(dāng)你需要通過(guò)頭腦風(fēng)暴來(lái)想出不同方法來(lái)嘗試去提高精度的時(shí)候味廊,你可能已經(jīng)超越了很多人了蒸甜。大部分人并不嘗試著列出可能的方法,他們做的只是某天早上醒來(lái)余佛,因?yàn)槟承┰蛴辛艘粋€(gè)突發(fā)奇想:"讓我們來(lái)試試用Honey Pot項(xiàng)目收集大量的數(shù)據(jù)吧柠新。"
我們將在隨后的課程中講誤差分析,我會(huì)告訴你怎樣用一個(gè)更加系統(tǒng)性的方法辉巡,從一堆不同的方法中恨憎,選取合適的那一個(gè)。因此郊楣,你更有可能選擇一個(gè)真正的好方法憔恳,能讓你花上幾天幾周,甚至是幾個(gè)月去進(jìn)行深入的研究净蚤。
9.誤差分析
在本次課程中钥组,我們將會(huì)講到誤差分析(Error Analysis)的概念。這會(huì)幫助你更系統(tǒng)地做出決定今瀑。如果你準(zhǔn)備研究機(jī)器學(xué)習(xí)的東西者铜,或者構(gòu)造機(jī)器學(xué)習(xí)應(yīng)用程序,最好的實(shí)踐方法不是建立一個(gè)非常復(fù)雜的系統(tǒng)放椰,擁有多么復(fù)雜的變量作烟;而是構(gòu)建一個(gè)簡(jiǎn)單的算法,這樣你可以很快地實(shí)現(xiàn)它砾医。
每當(dāng)我研究機(jī)器學(xué)習(xí)的問(wèn)題時(shí)拿撩,我最多只會(huì)花一天的時(shí)間,就是字面意義上的24小時(shí)如蚜,來(lái)試圖很快的把結(jié)果搞出來(lái)压恒,即便效果不好影暴。坦白的說(shuō),就是根本沒(méi)有用復(fù)雜的系統(tǒng)探赫,但是只是很快的得到的結(jié)果型宙。即便運(yùn)行得不完美,但是也把它運(yùn)行一遍伦吠,最后通過(guò)交叉驗(yàn)證來(lái)檢驗(yàn)數(shù)據(jù)妆兑。一旦做完,你可以畫出學(xué)習(xí)曲線毛仪,通過(guò)畫出學(xué)習(xí)曲線搁嗓,以及檢驗(yàn)誤差,來(lái)找出你的算法是否有高偏差和高方差的問(wèn)題箱靴,或者別的問(wèn)題腺逛。在這樣分析之后,再來(lái)決定用更多的數(shù)據(jù)訓(xùn)練衡怀,或者加入更多的特征變量是否有用棍矛。這么做的原因是:這在你剛接觸機(jī)器學(xué)習(xí)問(wèn)題時(shí)是一個(gè)很好的方法,你并不能提前知道你是否需要復(fù)雜的特征變量抛杨,或者你是否需要更多的數(shù)據(jù)够委,還是別的什么。提前知道你應(yīng)該做什么蝶桶,是非常難的,因?yàn)槟闳鄙僮C據(jù)掉冶,缺少學(xué)習(xí)曲線真竖。因此,你很難知道你應(yīng)該把時(shí)間花在什么地方來(lái)提高算法的表現(xiàn)厌小。但是當(dāng)你實(shí)踐一個(gè)非常簡(jiǎn)單即便不完美的方法時(shí)恢共,你可以通過(guò)畫出學(xué)習(xí)曲線來(lái)做出進(jìn)一步的選擇。你可以用這種方式來(lái)避免一種電腦編程里的過(guò)早優(yōu)化問(wèn)題璧亚,這種理念是:我們必須用證據(jù)來(lái)領(lǐng)導(dǎo)我們的決策讨韭,怎樣分配自己的時(shí)間來(lái)優(yōu)化算法,而不是僅僅憑直覺(jué)癣蟋,憑直覺(jué)得出的東西一般總是錯(cuò)誤的透硝。除了畫出學(xué)習(xí)曲線之外,一件非常有用的事是誤差分析疯搅,我的意思是說(shuō):當(dāng)我們?cè)跇?gòu)造垃圾郵件分類器時(shí)濒生,我會(huì)看一看我的交叉驗(yàn)證數(shù)據(jù)集,然后親自看一看哪些郵件被算法錯(cuò)誤地分類幔欧。因此罪治,通過(guò)這些被算法錯(cuò)誤分類的垃圾郵件與非垃圾郵件丽声,你可以發(fā)現(xiàn)某些系統(tǒng)性的規(guī)律:什么類型的郵件總是被錯(cuò)誤分類。經(jīng)常地這樣做之后觉义,這個(gè)過(guò)程能啟發(fā)你構(gòu)造新的特征變量雁社,或者告訴你:現(xiàn)在這個(gè)系統(tǒng)的短處,然后啟發(fā)你如何去提高它晒骇。
構(gòu)建一個(gè)學(xué)習(xí)算法的推薦方法為:
- 從一個(gè)簡(jiǎn)單的能快速實(shí)現(xiàn)的算法開始霉撵,實(shí)現(xiàn)該算法并用交叉驗(yàn)證集數(shù)據(jù)測(cè)試這個(gè)算法
2.繪制學(xué)習(xí)曲線,決定是增加更多數(shù)據(jù)厉碟,或者添加更多特征喊巍,還是其他選擇
3.進(jìn)行誤差分析:人工檢查交叉驗(yàn)證集中我們算法中產(chǎn)生預(yù)測(cè)誤差的樣本,看看這些樣本是否有某種系統(tǒng)化的趨勢(shì)
以我們的垃圾郵件過(guò)濾器為例箍鼓,誤差分析要做的既是檢驗(yàn)交叉驗(yàn)證集中我們的算法產(chǎn)生錯(cuò)誤預(yù)測(cè)的所有郵件崭参,看:是否能將這些郵件按照類分組。例如醫(yī)藥品垃圾郵件款咖,仿冒品垃圾郵件或者密碼竊取郵件等何暮。然后看分類器對(duì)哪一組郵件的預(yù)測(cè)誤差最大,并著手優(yōu)化铐殃。
思考怎樣能改進(jìn)分類器海洼。例如,發(fā)現(xiàn)是否缺少某些特征富腊,記下這些特征出現(xiàn)的次數(shù)坏逢。
例如記錄下錯(cuò)誤拼寫出現(xiàn)了多少次,異常的郵件路由情況出現(xiàn)了多少次等等赘被,然后從出現(xiàn)次數(shù)最多的情況開始著手優(yōu)化是整。
誤差分析并不總能幫助我們判斷應(yīng)該采取怎樣的行動(dòng)。有時(shí)我們需要嘗試不同的模型民假,然后進(jìn)行比較浮入,在模型比較時(shí),用數(shù)值來(lái)判斷哪一個(gè)模型更好更有效羊异,通常我們是看交叉驗(yàn)證集的誤差事秀。
在我們的垃圾郵件分類器例子中,對(duì)于“我們是否應(yīng)該將discount/discounts/discounted/discounting處理成同一個(gè)詞野舶?”如果這樣做可以改善我們算法易迹,我們會(huì)采用一些截詞軟件。誤差分析不能幫助我們做出這類判斷平道,我們只能嘗試采用和不采用截詞軟件這兩種不同方案赴蝇,然后根據(jù)數(shù)值檢驗(yàn)的結(jié)果來(lái)判斷哪一種更好。
因此巢掺,當(dāng)你在構(gòu)造學(xué)習(xí)算法的時(shí)候句伶,你總是會(huì)去嘗試很多新的想法劲蜻,實(shí)現(xiàn)出很多版本的學(xué)習(xí)算法,如果每一次你實(shí)踐新想法的時(shí)候考余,你都要手動(dòng)地檢測(cè)這些例子先嬉,去看看是表現(xiàn)差還是表現(xiàn)好,那么這很難讓你做出決定楚堤。到底是否使用詞干提取疫蔓,是否區(qū)分大小寫。但是通過(guò)一個(gè)量化的數(shù)值評(píng)估身冬,你可以看看這個(gè)數(shù)字衅胀,誤差是變大還是變小了。你可以通過(guò)它更快地實(shí)踐你的新想法酥筝,它基本上非常直觀地告訴你:你的想法是提高了算法表現(xiàn)滚躯,還是讓它變得更壞,這會(huì)大大提高你實(shí)踐算法時(shí)的速度嘿歌。所以我強(qiáng)烈推薦在交叉驗(yàn)證集上來(lái)實(shí)施誤差分析掸掏,而不是在測(cè)試集上。但是宙帝,還是有一些人會(huì)在測(cè)試集上來(lái)做誤差分析丧凤。即使這從數(shù)學(xué)上講是不合適的。所以我還是推薦你在交叉驗(yàn)證向量上來(lái)做誤差分析步脓。
總結(jié)一下愿待,當(dāng)你在研究一個(gè)新的機(jī)器學(xué)習(xí)問(wèn)題時(shí),我總是推薦你實(shí)現(xiàn)一個(gè)較為簡(jiǎn)單快速靴患、即便不是那么完美的算法仍侥。我?guī)缀鯊奈匆娺^(guò)人們這樣做。大家經(jīng)常干的事情是:花費(fèi)大量的時(shí)間在構(gòu)造算法上蚁廓,構(gòu)造他們以為的簡(jiǎn)單的方法访圃。因此厨幻,不要擔(dān)心你的算法太簡(jiǎn)單相嵌,或者太不完美,而是盡可能快地實(shí)現(xiàn)你的算法况脆。當(dāng)你有了初始的實(shí)現(xiàn)之后饭宾,它會(huì)變成一個(gè)非常有力的工具,來(lái)幫助你決定下一步的做法格了。因?yàn)槲覀兛梢韵瓤纯此惴ㄔ斐傻腻e(cuò)誤看铆,通過(guò)誤差分析,來(lái)看看他犯了什么錯(cuò)盛末,然后來(lái)決定優(yōu)化的方式弹惦。另一件事是:假設(shè)你有了一個(gè)快速而不完美的算法實(shí)現(xiàn)否淤,又有一個(gè)數(shù)值的評(píng)估數(shù)據(jù),這會(huì)幫助你嘗試新的想法棠隐,快速地發(fā)現(xiàn)你嘗試的這些想法是否能夠提高算法的表現(xiàn)石抡,從而你會(huì)更快地做出決定,在算法中放棄什么助泽,吸收什么誤差分析可以幫助我們系統(tǒng)化地選擇該做什么啰扛。
10.類偏斜的誤差度量
在前面的課程中,我提到了誤差分析嗡贺,以及設(shè)定誤差度量值的重要性隐解。那就是,設(shè)定某個(gè)實(shí)數(shù)來(lái)評(píng)估你的學(xué)習(xí)算法诫睬,并衡量它的表現(xiàn)煞茫,有了算法的評(píng)估和誤差度量值。有一件重要的事情要注意岩臣,就是使用一個(gè)合適的誤差度量值溜嗜,這有時(shí)會(huì)對(duì)于你的學(xué)習(xí)算法造成非常微妙的影響,這件重要的事情就是偏斜類(skewed classes)的問(wèn)題架谎。類偏斜情況表現(xiàn)為我們的訓(xùn)練集中有非常多的同一種類的樣本炸宵,只有很少或沒(méi)有其他類的樣本。
例如我們希望用算法來(lái)預(yù)測(cè)癌癥是否是惡性的谷扣,在我們的訓(xùn)練集中土全,只有0.5%的實(shí)例是惡性腫瘤。假設(shè)我們編寫一個(gè)非學(xué)習(xí)而來(lái)的算法会涎,在所有情況下都預(yù)測(cè)腫瘤是良性的裹匙,那么誤差只有0.5%飘弧。然而我們通過(guò)訓(xùn)練而得到的神經(jīng)網(wǎng)絡(luò)算法卻有1%的誤差其兴。這時(shí),誤差的大小是不能視為評(píng)判算法效果的依據(jù)的肢执。
查準(zhǔn)率(Precision)和查全率(Recall) 我們將算法預(yù)測(cè)的結(jié)果分成四種情況:
-
正確肯定(True Positive,TP):預(yù)測(cè)為真练慕,實(shí)際為真
2.正確否定(True Negative,TN):預(yù)測(cè)為假惰匙,實(shí)際為假
3.錯(cuò)誤肯定(False Positive,FP):預(yù)測(cè)為真,實(shí)際為假
4.錯(cuò)誤否定(False Negative,FN):預(yù)測(cè)為假铃将,實(shí)際為真
則:查準(zhǔn)率=TP/(TP+FP)项鬼。例,在所有我們預(yù)測(cè)有惡性腫瘤的病人中劲阎,實(shí)際上有惡性腫瘤的病人的百分比绘盟,越高越好。
查全率=TP/(TP+FN)。例龄毡,在所有實(shí)際上有惡性腫瘤的病人中吠卷,成功預(yù)測(cè)有惡性腫瘤的病人的百分比,越高越好沦零。
這樣撤嫩,對(duì)于我們剛才那個(gè)總是預(yù)測(cè)病人腫瘤為良性的算法,其查全率是0蠢终。
12.查準(zhǔn)率和查全率之間的權(quán)衡
在之前的課程中序攘,我們談到查準(zhǔn)率和召回率,作為遇到偏斜類問(wèn)題的評(píng)估度量值寻拂。在很多應(yīng)用中程奠,我們希望能夠保證查準(zhǔn)率和召回率的相對(duì)平衡。
在這節(jié)課中祭钉,我將告訴你應(yīng)該怎么做瞄沙,同時(shí)也向你展示一些查準(zhǔn)率和召回率作為算法評(píng)估度量值的更有效的方式。繼續(xù)沿用剛才預(yù)測(cè)腫瘤性質(zhì)的例子慌核。假使距境,我們的算法輸出的結(jié)果在0-1 之間,我們使用閥值0.5 來(lái)預(yù)測(cè)真和假垮卓。
查準(zhǔn)率(Precision)=TP/(TP+FP)
例垫桂,在所有我們預(yù)測(cè)有惡性腫瘤的病人中,實(shí)際上有惡性腫瘤的病人的百分比粟按,越高越好诬滩。
查全率(Recall)=TP/(TP+FN)例,在所有實(shí)際上有惡性腫瘤的病人中灭将,成功預(yù)測(cè)有惡性腫瘤的病人的百分比疼鸟,越高越好。
如果我們希望只在非常確信的情況下預(yù)測(cè)為真(腫瘤為惡性)庙曙,即我們希望更高的查準(zhǔn)率空镜,我們可以使用比0.5更大的閥值,如0.7捌朴,0.9吴攒。這樣做我們會(huì)減少錯(cuò)誤預(yù)測(cè)病人為惡性腫瘤的情況,同時(shí)卻會(huì)增加未能成功預(yù)測(cè)腫瘤為惡性的情況男旗。
如果我們希望提高查全率舶斧,盡可能地讓所有有可能是惡性腫瘤的病人都得到進(jìn)一步地檢查欣鳖、診斷察皇,我們可以使用比0.5更小的閥值,如0.3。
我們可以將不同閥值情況下什荣,查全率與查準(zhǔn)率的關(guān)系繪制成圖表矾缓,曲線的形狀根據(jù)數(shù)據(jù)的不同而不同:
我們希望有一個(gè)幫助我們選擇這個(gè)閥值的方法。一種方法是計(jì)算F1 值(F1 Score)稻爬,其計(jì)算公式為:
我們選擇使得F1值最高的閥值嗜闻。
13.機(jī)器學(xué)習(xí)的數(shù)據(jù)
在之前的視頻中,我們討論了評(píng)價(jià)指標(biāo)桅锄。在這個(gè)視頻中琉雳,我要稍微轉(zhuǎn)換一下,討論一下機(jī)器學(xué)習(xí)系統(tǒng)設(shè)計(jì)中另一個(gè)重要的方面友瘤,這往往涉及到用來(lái)訓(xùn)練的數(shù)據(jù)有多少翠肘。在之前的一些視頻中,我曾告誡大家不要盲目地開始辫秧,而是花大量的時(shí)間來(lái)收集大量的數(shù)據(jù)束倍,因?yàn)閿?shù)據(jù)有時(shí)是唯一能實(shí)際起到作用的。但事實(shí)證明盟戏,在一定條件下绪妹,我會(huì)在這個(gè)視頻里講到這些條件是什么。得到大量的數(shù)據(jù)并在某種類型的學(xué)習(xí)算法中進(jìn)行訓(xùn)練柿究,可以是一種有效的方法來(lái)獲得一個(gè)具有良好性能的學(xué)習(xí)算法邮旷。而這種情況往往出現(xiàn)在這些條件對(duì)于你的問(wèn)題都成立。
并且你能夠得到大量數(shù)據(jù)的情況下蝇摸。這可以是一個(gè)很好的方式來(lái)獲得非常高性能的學(xué)習(xí)算法廊移。
很多很多年前,我認(rèn)識(shí)的兩位研究人員Michele Banko 和Eric Brill進(jìn)行了一項(xiàng)有趣的研究探入,他們嘗試通過(guò)機(jī)器學(xué)習(xí)算法來(lái)區(qū)分常見的易混淆的單詞狡孔,他們嘗試了許多種不同的算法,并發(fā)現(xiàn)數(shù)據(jù)量非常大時(shí)蜂嗽,這些不同類型的算法效果都很好苗膝。
比如,在這樣的句子中:早餐我吃了__個(gè)雞蛋(to,two,too)植旧,在這個(gè)例子中辱揭,“早餐我吃了2個(gè)雞蛋”,這是一個(gè)易混淆的單詞的例子病附。于是他們把諸如這樣的機(jī)器學(xué)習(xí)問(wèn)題问窃,當(dāng)做一類監(jiān)督學(xué)習(xí)問(wèn)題,并嘗試將其分類完沪,什么樣的詞域庇,在一個(gè)英文句子特定的位置嵌戈,才是合適的。他們用了幾種不同的學(xué)習(xí)算法听皿,這些算法都是在他們2001年進(jìn)行研究的時(shí)候熟呛,都已經(jīng)被公認(rèn)是比較領(lǐng)先的。因此他們使用了一個(gè)方差尉姨,用于邏輯回歸上的一個(gè)方差庵朝,被稱作"感知器"(perceptron)。他們也采取了一些過(guò)去常用又厉,但是現(xiàn)在比較少用的算法九府,比如 Winnow算法,很類似于回歸問(wèn)題覆致,但在一些方面又有所不同昔逗,過(guò)去用得比較多,但現(xiàn)在用得不太多篷朵。還有一種基于內(nèi)存的學(xué)習(xí)算法勾怒,現(xiàn)在也用得比較少了,但是我稍后會(huì)討論一點(diǎn)声旺,而且他們用了一個(gè)樸素算法笔链。這些具體算法的細(xì)節(jié)不那么重要,我們下面希望探討腮猖,什么時(shí)候我們會(huì)希望獲得更多數(shù)據(jù)鉴扫,而非修改算法。他們所做的就是改變了訓(xùn)練數(shù)據(jù)集的大小澈缺,并嘗試將這些學(xué)習(xí)算法用于不同大小的訓(xùn)練數(shù)據(jù)集中坪创,這就是他們得到的結(jié)果。
這些趨勢(shì)非常明顯姐赡,首先大部分算法莱预,都具有相似的性能,其次项滑,隨著訓(xùn)練數(shù)據(jù)集的增大依沮,在橫軸上代表以百萬(wàn)為單位的訓(xùn)練集大小,從0.1個(gè)百萬(wàn)到1000百萬(wàn)枪狂,也就是到了10億規(guī)模的訓(xùn)練集的樣本危喉,這些算法的性能也都對(duì)應(yīng)地增強(qiáng)了。
事實(shí)上州疾,如果你選擇任意一個(gè)算法辜限,可能是選擇了一個(gè)"劣等的"算法,如果你給這個(gè)劣等算法更多的數(shù)據(jù)严蓖,那么從這些例子中看起來(lái)的話薄嫡,它看上去很有可能會(huì)其他算法更好氧急,甚至?xí)?優(yōu)等算法"更好。由于這項(xiàng)原始的研究非常具有影響力岂座,因此已經(jīng)有一系列許多不同的研究顯示了類似的結(jié)果。這些結(jié)果表明杭措,許多不同的學(xué)習(xí)算法有時(shí)傾向于表現(xiàn)出非常相似的表現(xiàn)费什,這還取決于一些細(xì)節(jié),但是真正能提高性能的手素,是你能夠給一個(gè)算法大量的訓(xùn)練數(shù)據(jù)鸳址。像這樣的結(jié)果,引起了一種在機(jī)器學(xué)習(xí)中的普遍共識(shí):"取得成功的人不是擁有最好算法的人泉懦,而是擁有最多數(shù)據(jù)的人"稿黍。
那么這種說(shuō)法在什么時(shí)候是真,什么時(shí)候是假呢崩哩?因?yàn)槿绻覀冇幸粋€(gè)學(xué)習(xí)算法巡球,并且如果這種說(shuō)法是真的,那么得到大量的數(shù)據(jù)通常是保證我們具有一個(gè)高性能算法的最佳方式邓嘹,而不是去爭(zhēng)辯應(yīng)該用什么樣的算法酣栈。
假如有這樣一些假設(shè),在這些假設(shè)下有大量我們認(rèn)為有用的訓(xùn)練集汹押,我們假設(shè)在我們的機(jī)器學(xué)習(xí)問(wèn)題中矿筝,特征值x包含了足夠的信息,這些信息可以幫助我們用來(lái)準(zhǔn)確地預(yù)測(cè)y棚贾,例如窖维,如果我們采用了一些容易混淆的詞,如:two妙痹、to铸史、too,假如說(shuō)它能夠描述x怯伊,捕捉到需要填寫的空白處周圍的詞語(yǔ)沛贪,那么特征捕捉到之后,我們就希望有對(duì)于“早飯我吃了__雞蛋”震贵,那么這就有大量的信息來(lái)告訴我中間我需要填的詞是“兩個(gè)”(two)利赋,而不是單詞 to 或too,因此特征捕捉猩系,哪怕是周圍詞語(yǔ)中的一個(gè)詞媚送,就能夠給我足夠的信息來(lái)確定出標(biāo)簽 y是什么。換句話說(shuō)寇甸,從這三組易混淆的詞中塘偎,我應(yīng)該選什么詞來(lái)填空疗涉。
那么讓我們來(lái)看一看,大量的數(shù)據(jù)是有幫助的情況吟秩。假設(shè)特征值有足夠的信息來(lái)預(yù)測(cè)y值咱扣,假設(shè)我們使用一種需要大量參數(shù)的學(xué)習(xí)算法,比如有很多特征的邏輯回歸或線性回歸涵防,或者用帶有許多隱藏單元的神經(jīng)網(wǎng)絡(luò)闹伪,那又是另外一種帶有很多參數(shù)的學(xué)習(xí)算法,這些都是非常強(qiáng)大的學(xué)習(xí)算法壮池,它們有很多參數(shù)偏瓤,這些參數(shù)可以擬合非常復(fù)雜的函數(shù),因此我要調(diào)用這些椰憋,我將把這些算法想象成低偏差算法厅克,因?yàn)槲覀兡軌驍M合非常復(fù)雜的函數(shù),而且因?yàn)槲覀冇蟹浅?qiáng)大的學(xué)習(xí)算法橙依,這些學(xué)習(xí)算法能夠擬合非常復(fù)雜的函數(shù)证舟。很有可能,如果我們用這些數(shù)據(jù)運(yùn)行這些算法窗骑,這種算法能很好地?cái)M合訓(xùn)練集褪储,因此,訓(xùn)練誤差就會(huì)很低了慧域。
現(xiàn)在假設(shè)我們使用了非常非常大的訓(xùn)練集鲤竹,在這種情況下,盡管我們希望有很多參數(shù)昔榴,但是如果訓(xùn)練集比參數(shù)的數(shù)量還大辛藻,甚至是更多,那么這些算法就不太可能會(huì)過(guò)度擬合互订。也就是說(shuō)訓(xùn)練誤差有希望接近測(cè)試誤差吱肌。
另一種考慮這個(gè)問(wèn)題的角度是為了有一個(gè)高性能的學(xué)習(xí)算法,我們希望它不要有高的偏差和方差仰禽。
因此偏差問(wèn)題氮墨,我么將通過(guò)確保有一個(gè)具有很多參數(shù)的學(xué)習(xí)算法來(lái)解決,以便我們能夠得到一個(gè)較低偏差的算法吐葵,并且通過(guò)用非常大的訓(xùn)練集來(lái)保證规揪。
我們?cè)诖藳](méi)有方差問(wèn)題,我們的算法將沒(méi)有方差温峭,并且通過(guò)將這兩個(gè)值放在一起猛铅,我們最終可以得到一個(gè)低誤差和低方差的學(xué)習(xí)算法。這使得我們能夠很好地測(cè)試測(cè)試數(shù)據(jù)集凤藏。從根本上來(lái)說(shuō)奸忽,這是一個(gè)關(guān)鍵的假設(shè):特征值有足夠的信息量堕伪,且我們有一類很好的函數(shù),這是為什么能保證低誤差的關(guān)鍵所在栗菜。它有大量的訓(xùn)練數(shù)據(jù)集欠雌,這能保證得到更多的方差值,因此這給我們提出了一些可能的條件疙筹,如果你有大量的數(shù)據(jù)富俄,而且你訓(xùn)練了一種帶有很多參數(shù)的學(xué)習(xí)算法,那么這將會(huì)是一個(gè)很好的方式腌歉,來(lái)提供一個(gè)高性能的學(xué)習(xí)算法齐苛。
我覺(jué)得關(guān)鍵的測(cè)試:首先翘盖,一個(gè)人類專家看到了特征值 x,能很有信心的預(yù)測(cè)出y值嗎凹蜂?因?yàn)檫@可以證明 y可以根據(jù)特征值x被準(zhǔn)確地預(yù)測(cè)出來(lái)馍驯。其次,我們實(shí)際上能得到一組龐大的訓(xùn)練集玛痊,并且在這個(gè)訓(xùn)練集中訓(xùn)練一個(gè)有很多參數(shù)的學(xué)習(xí)算法嗎汰瘫?如果你不能做到這兩者,那么更多時(shí)候擂煞,你會(huì)得到一個(gè)性能很好的學(xué)習(xí)算法混弥。