機器學(xué)習(xí)筆記10: 應(yīng)用機器學(xué)習(xí)的建議

這一節(jié)我們主要討論機器學(xué)習(xí)具體應(yīng)用中的一些建議辣往,大部分內(nèi)容都不會涉及到數(shù)學(xué)市栗,但卻可能是最難理解的一部分。另外本文的部分內(nèi)容可能有一些爭議项棠,部分內(nèi)容也不適用于學(xué)術(shù)研究。

機器學(xué)習(xí)算法的診斷

我們來思考如下這個問題:在垃圾郵件分類問題中挎峦,我們從50000+的詞匯表中選擇了100個單詞作為特征香追,然后選擇貝葉斯邏輯回歸(Bayesian logistic regression)模型,利用梯度下降法進行訓(xùn)練坦胶,但是訓(xùn)練得到的結(jié)果有20%的誤差透典,這顯然是不能接受的。

這個模型的目標(biāo)函數(shù)如下:

那么我們下一步應(yīng)該如何優(yōu)化呢顿苇?通常我們可以有如下多個改進方式:

  • 增加訓(xùn)練數(shù)據(jù)
  • 嘗試更小的特征集合
  • 嘗試更大的特征集合
  • 嘗試改變特征(比如使用郵件的標(biāo)題和正文部分)
  • 增加梯度下降的迭代次數(shù)
  • 嘗試用牛頓方法
  • 改變正則化參數(shù)λ
  • 嘗試其他模型峭咒,比如SVM

這些方法都可能有用,但是挨個進行實驗非常耗時纪岁,如果碰巧解決問題也可能只是運氣好凑队。因此更好的方法是我們對算法進行診斷,并根據(jù)診斷結(jié)果進行針對性的改進幔翰。

第一個的診斷方法是判斷算法是過擬合還是欠擬合漩氨。過擬合意味著高方差,欠擬合意味著高偏差遗增。我們可以通過學(xué)習(xí)曲線(learning curve)來診斷模型到底是高方差還是高偏差的叫惊。

下圖展示的是高偏差模型的學(xué)習(xí)曲線:

可以看出,當(dāng)訓(xùn)練集個數(shù)增加時做修,測試誤差逐步減少霍狰,但是測試誤差和訓(xùn)練誤差之間仍存在較大的間隔抡草。因此增加訓(xùn)練數(shù)據(jù)可以改善模型。

下圖展示的是高方差模型的學(xué)習(xí)曲線:

可以看出蔗坯,測試誤差和訓(xùn)練誤差之間的間隔很小康震,但是它們的誤差率與理想值相差很遠。

第二個診斷方法是關(guān)于優(yōu)化算法和優(yōu)化目標(biāo)宾濒。這里我們繼續(xù)接著剛才的例子討論:假設(shè)通過BLR(貝葉斯邏輯回歸)算法在垃圾郵件上的誤差是2%签杈,在正常郵件上的誤差也是2%(對于正常郵件來說,這個誤差是不可接受的)鼎兽,而通過SVM算法在垃圾郵件上的誤差是10%,在正常郵件上的誤差是0.01%(對于正常郵件來說铣除,這個誤差是可以接受的)谚咬,但是我們傾向于使用BLR算法,因為BLR的計算效率更高尚粘。我們接下來應(yīng)該怎么辦择卦?

令SVM的參數(shù)為θSVM,BLR的參數(shù)為θBLR郎嫁。其實我們真正在乎的是加權(quán)準(zhǔn)確率(weighted accuracy):

在上面的例子中秉继,我們有:a(θSVM) > a(θBLR)

BLR的優(yōu)化目標(biāo)J(θ)是:

所以我們接下來診斷的方法就是比較J(θSVM)和J(θBLR)的大小。

第一種情況:a(θSVM) > a(θBLR)泽铛,J(θSVM) > J(θBLR)尚辑。BLR的目標(biāo)是最大化J(θ),但是現(xiàn)在BLR沒能做到這點盔腔,因此問題在于優(yōu)化算法杠茬,有可能算法還沒有達到收斂。

第二種情況:a(θSVM) > a(θBLR)弛随,J(θSVM) <= J(θBLR)瓢喉。BLR確實做到了最大化J(θ),但是BLR的加權(quán)準(zhǔn)確率不如SVM舀透,因此問題在于優(yōu)化目標(biāo)栓票,J(θ)并不能很好地代表a(θ)。

因此回過頭來看之前列的改進方式愕够,每個改進方式其實都是在優(yōu)化某一方面走贪,具體描述如下:

  • 增加訓(xùn)練數(shù)據(jù):解決高方差
  • 嘗試更小的特征集合:解決高方差
  • 嘗試更大的特征集合:解決高偏差
  • 嘗試改變特征(比如使用郵件的標(biāo)題和正文部分):解決高偏差
  • 增加梯度下降的迭代次數(shù):解決優(yōu)化算法問題
  • 嘗試用牛頓方法:解決優(yōu)化算法問題
  • 改變正則化參數(shù)λ:解決優(yōu)化目標(biāo)問題
  • 嘗試其他模型,比如SVM:解決優(yōu)化目標(biāo)問題

通過對算法進行診斷惑芭,我們可以有針對性地提出解決方案厉斟,從而避免無意義地進行錯誤的嘗試。

誤差分析和銷蝕分析

很多機器學(xué)習(xí)應(yīng)用中會包含多個組成部分强衡,各個部分之間形成一個整體的“管道(pipeline)”擦秽。比如下圖展示了一個從圖像中進行面部識別的管道圖:

那么我們?nèi)绾沃谰烤鼓膫€組件(component)對整體的貢獻率最大呢?

我們可以使用兩種方法來分析這個問題。第一個方法是誤差分析(error analysis)感挥,誤差分析是指從最基礎(chǔ)的模型開始缩搅,依次增加一個組件,看每個組件對準(zhǔn)確率的提升情況触幼。比如對這個例子來說硼瓣,我們可以分析如下:

組件 準(zhǔn)確率
整體系統(tǒng) 85%
預(yù)處理(去除背景) 85.1%
面部識別 91%
分割眼睛 95%
分割鼻子 96%
分割嘴巴 97%
邏輯回歸 100%

由此可見,面部識別和分割眼睛這兩個組件對整體的貢獻率較大置谦。

第二個方法是銷蝕分析(ablative analysis)堂鲤。銷蝕分析的步驟剛好相反,每次從完整系統(tǒng)中去除一個組件媒峡,看每個組件對準(zhǔn)確率的降低情況瘟栖。比如在一個垃圾郵件分類系統(tǒng)里,我們可以做如下分析:

組件 準(zhǔn)確率
整體系統(tǒng) 99.9%
拼寫檢查 99.0%
發(fā)送方主機特征 98.9%
郵件頭部特征 98.9%
郵件文本解析器特征 95%
Javascript解析器 94.5%
圖像特征 94%

由此可見谅阿,郵件文本解析器特征極大地提升了準(zhǔn)確率半哟,而郵件頭部特征則對準(zhǔn)確率幾乎沒有什么幫助。

如何上手一個機器學(xué)習(xí)問題

通常我們面對一個機器學(xué)習(xí)問題签餐,可以有如下兩種思路:

思路1:仔細設(shè)計(Careful design)

  • 花較長的時間設(shè)計出最好的特征寓涨,收集到最好的數(shù)據(jù),建造出最好的算法架構(gòu)
  • 實現(xiàn)這個算法并希望它可以成功
  • 優(yōu)點:可能找到更新氯檐,更優(yōu)雅的學(xué)習(xí)算法戒良;適合用于學(xué)術(shù)研究

思路2:快速迭代(Build-and-fix)

  • 先快速做一個可用版本
  • 對算法進行誤差分析和診斷,找到優(yōu)化的方向并進行優(yōu)化
  • 優(yōu)點:可以更快地將算法應(yīng)用到實際場景中

另外還有一個建議:在項目的早期階段冠摄,我們通常并不清楚系統(tǒng)每個部分的實現(xiàn)難度蔬墩,因此我們需要避免進行過早優(yōu)化(premature optimization)。

總結(jié)

  • 通過對算法進行診斷耗拓,可以幫助我們確定優(yōu)化方向拇颅,從而避免無意義地進行錯誤的嘗試
  • 誤差分析和銷蝕分析可以幫助我們確定一個系統(tǒng)中哪個組件的貢獻率最大
  • 應(yīng)用機器學(xué)習(xí)的兩種方法:仔細設(shè)計和快速迭代;仔細設(shè)計適合用于學(xué)術(shù)研究乔询,但是要避免過早優(yōu)化的風(fēng)險

參考資料

  • 斯坦福大學(xué)機器學(xué)習(xí)課CS229講義 pdf
  • 網(wǎng)易公開課:機器學(xué)習(xí)課程 雙語字幕視頻
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末樟插,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竿刁,更是在濱河造成了極大的恐慌黄锤,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件食拜,死亡現(xiàn)場離奇詭異鸵熟,居然都是意外死亡,警方通過查閱死者的電腦和手機负甸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門流强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痹届,“玉大人,你說我怎么就攤上這事打月《痈” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵奏篙,是天一觀的道長柴淘。 經(jīng)常有香客問我,道長秘通,這世上最難降的妖魔是什么为严? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮肺稀,結(jié)果婚禮上第股,老公的妹妹穿的比我還像新娘。我一直安慰自己盹靴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布瑞妇。 她就那樣靜靜地躺著稿静,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辕狰。 梳的紋絲不亂的頭發(fā)上改备,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音蔓倍,去河邊找鬼悬钳。 笑死,一個胖子當(dāng)著我的面吹牛偶翅,可吹牛的內(nèi)容都是我干的默勾。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼聚谁,長吁一口氣:“原來是場噩夢啊……” “哼母剥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起形导,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤环疼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后朵耕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炫隶,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年阎曹,在試婚紗的時候發(fā)現(xiàn)自己被綠了伪阶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煞檩。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖望门,靈堂內(nèi)的尸體忽然破棺而出形娇,到底是詐尸還是另有隱情,我是刑警寧澤筹误,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布桐早,位于F島的核電站,受9級特大地震影響厨剪,放射性物質(zhì)發(fā)生泄漏哄酝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一祷膳、第九天 我趴在偏房一處隱蔽的房頂上張望陶衅。 院中可真熱鬧,春花似錦直晨、人聲如沸搀军。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罩句。三九已至,卻和暖如春敛摘,著一層夾襖步出監(jiān)牢的瞬間门烂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工兄淫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留屯远,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓捕虽,卻偏偏與公主長得像慨丐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子泄私,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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