[机器学习笔记]Note9--机器学习系统设计
繼續(xù)是機器學(xué)習(xí)課程的筆記,本節(jié)課的內(nèi)容主要是介紹如何設(shè)計一個機器學(xué)習(xí)系統(tǒng)。
首先要做什么
這節(jié)課將介紹如何設(shè)計一個機器學(xué)習(xí)系統(tǒng),首先是以設(shè)計一個垃圾郵件分類器算法作為例子。
為了解決這個問題,首先要決定的是如何選擇并表達特征向量x,然后使用y來作為分類結(jié)果,y=1表示是垃圾郵件,0則是非垃圾郵件。
然后這里的特征x,可以選擇100個最常出現(xiàn)在垃圾郵件中的詞來構(gòu)成一個向量,那么將得到一個100×1大小的特征向量x,如???????????0110?1???????????,這里每一行都表示一個詞語,0表示沒有出現(xiàn),1表示出現(xiàn)該詞語。
實踐中,一般會使用出現(xiàn)頻率最多的n個詞語(10000到50000個)作為訓(xùn)練集,而不是手動選擇100個單詞。
接下來就是考慮如何優(yōu)化算法,即提高算法的效果了。
對于垃圾郵件分類器算法,我們可以選擇下列其中一個方法來去改進算法:
這些方法很難決定應(yīng)該在哪個方法上花費時間和精力,可以任意挑選其中一個方法來專研下去,但是切記首先需要做的是列出可行的方法有哪些,然后再挑選,而不是憑著感覺想到什么方法就用什么方法。
誤差分析
誤差分析可以幫助我們系統(tǒng)化地選擇該做什么。
構(gòu)建一個學(xué)習(xí)算法的推薦方法如下:
這里還是用垃圾郵件分類器為例,誤差分析要做的是檢驗交叉驗證集中我們算法產(chǎn)生錯誤預(yù)測的所有郵件,看:
- 是否能將這些郵件按照類分組。例如醫(yī)藥品垃圾郵件,仿冒品垃圾郵件或者密碼竊取郵件等。然后看分類器對哪一組郵件的預(yù)測誤差最大,并著手優(yōu)化。
- 思考如何改進分類器。如發(fā)現(xiàn)是否缺少某些特征,記下這些特征出現(xiàn)的次數(shù)。比如記錄錯誤拼寫出現(xiàn)了多少次,異常的郵件路由情況出現(xiàn)了多少次等,然后從出現(xiàn)次數(shù)最多的情況開始著手優(yōu)化。
誤差分析并不能總幫助我們判斷應(yīng)該采取什么辦法,有時我們需要嘗試不同的模型,然后進行比較,而在模型進行比較的時候,使用數(shù)值來判斷那一個模型更好更有效,通常我們是看交叉驗證集的誤差。
比如在垃圾郵件分類器例子中,對于“我們是否應(yīng)該將discount/discounts/discounted/discounting處理成同一個詞語?”,如果這樣子可以改善我們的算法,這里看采用一些詞干提取軟件來查看單詞的前幾個字母是否相同,當(dāng)然這里可能會有誤判斷的情況,比如universe(宇宙)和university(大學(xué))這兩個單詞前面7個字母都是相同的,很有可能被認(rèn)為是同一個單詞。
但是這里一旦嘗試采用詞干提取軟件來改進算法,我們就可以通過對比使用前后的交叉驗證集誤差來判斷是否需要使用。而這就是使用數(shù)值檢驗的好處了。
類偏斜的誤差度量
類偏斜情況表現(xiàn)為訓(xùn)練集中有非常多的同一種類的實例,只有很少或沒有其他類的實例。
假設(shè)我們希望用算法來預(yù)測癌癥是否是惡性的,在訓(xùn)練集中只有0.5%的實例是惡性腫瘤。假設(shè)我們編寫一非學(xué)習(xí)而來的算法,在所有情況下都預(yù)測腫瘤是良性的,那么誤差只有0.5%。但是通過訓(xùn)練而得到的神經(jīng)網(wǎng)絡(luò)算法卻有1%的誤差,那么,此時誤差的大小是不能視為算法效果的依據(jù)的。
這里就引入查準(zhǔn)率(Precision)和查全率(Recall)。
我們將算法預(yù)測的結(jié)構(gòu)分成4種情況:
如下圖所示:
上圖左側(cè)表格就是一個比較形象的表示,行表示的是預(yù)測結(jié)果,列表示實際的結(jié)果。
所以,
- 查準(zhǔn)率=TPTP+FP,例如,在所有預(yù)測為惡性腫瘤的病人中,實際上有惡性腫瘤的病人的百分比,越高越好。
- 查全率=TPTP+FN,例如,在所有實際有惡性腫瘤的病人中,被預(yù)測為由惡性腫瘤的病人的百分比,也是越高越好。
那么對于剛剛總是預(yù)測腫瘤為良性的算法,其查全率是0,因為其正確肯定TP=0。
查全率和查準(zhǔn)率之間的平衡
這里繼續(xù)使用預(yù)測惡性腫瘤的例子。這里使用邏輯回歸算法,然后使用閾值是0.5來預(yù)測是否是惡性腫瘤。
假設(shè)我們希望只在非常確信的情況下預(yù)測為真,即腫瘤是惡性的,也就是希望更高的查準(zhǔn)率,那么可以使用比0.5更多的閾值,即0.7,0.9等,這樣的確可以減少無措預(yù)測病人為惡性腫瘤的情況,但是也會增加未能成功預(yù)測腫瘤為惡性的情況。
另一種情況,就是希望提供查全率,也就是盡可能讓所有有可能是惡性腫瘤的病人得到進一步地檢查和診斷,那么就可以使用比0.5更小的閾值,如0.3,0.1等。但是這也必然會增加錯誤預(yù)測為惡性腫瘤的數(shù)量,也就是會降低查準(zhǔn)率。
我們可以將不同閾值情況下,查全率和查準(zhǔn)率的關(guān)系繪制成圖表,如下所示:
所以我們希望有一個幫助我們選擇這個閾值的方法。一種方法是計算F1值,其計算公式如下:
我們選擇使得F1值最高的閾值。這里其實還是有很多其他方法結(jié)合考慮查準(zhǔn)率和查全率,但是出于歷史原因以及習(xí)慣原因,大多數(shù)使用的還是F1方法。
機器學(xué)習(xí)的數(shù)據(jù)
最后來探討下一個關(guān)鍵的因素,就是使用的數(shù)據(jù)集的數(shù)據(jù)量大小。
視頻中舉出一個例子,有兩個人研究一個如何對混淆的詞語進行分類的問題。這里使用的算法有如邏輯回歸算法,一種叫Winnow的算法,一種基于內(nèi)存的算法,以及樸素貝葉斯方法。而下面是這不同算法的準(zhǔn)確率隨著訓(xùn)練集數(shù)量增多而變化的曲線圖。
從上圖中可以看出,盡管數(shù)據(jù)量非常大的時候,所有算法的效果都是非常好的。
通常情況下需要思考,在使用的這些特征面前,一個真人專家是否可以有信心地預(yù)測結(jié)果。如果回答是肯定的,我們需要思考的就是我們的模型是如何的。如果算法是高偏差,即過擬合了,那么增加訓(xùn)練集的數(shù)據(jù)量就不太可能導(dǎo)致過擬合,這樣可以使得交叉驗證集誤差和訓(xùn)練集誤差的差距更小,這種情況就必須使用更多數(shù)據(jù)。
也可以這樣認(rèn)識這個問題,我們是希望我們的算法低偏倚和低偏差的,所以做法就應(yīng)該是選擇更多的特征來降低偏倚,再增加數(shù)據(jù)量來降低偏差。
小結(jié)
本節(jié)課主要是介紹如何設(shè)計一個機器學(xué)習(xí)系統(tǒng),也就是針對某個問題,如何設(shè)計一個機器學(xué)習(xí)算法來解決,包括一開始先設(shè)計一個簡單的快速實現(xiàn)方法,然后通過誤差分析,學(xué)習(xí)曲線等來繼續(xù)改進算法,提高算法的效果。然后還介紹了查全率和查準(zhǔn)率的概念。
總結(jié)
以上是生活随笔為你收集整理的[机器学习笔记]Note9--机器学习系统设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 协同办公OA业务系统数据集成(3)-基于
- 下一篇: jersey2 java_无废话Jers