吴恩达《机器学习》学习笔记十二——机器学习系统
吳恩達《機器學(xué)習(xí)》學(xué)習(xí)筆記十二——機器學(xué)習(xí)系統(tǒng)
- 一、設(shè)計機器學(xué)習(xí)系統(tǒng)的思想
- 1.快速實現(xiàn)+繪制學(xué)習(xí)曲線——尋找重點優(yōu)化的方向
- 2.誤差分析
- 3.數(shù)值估計
- 二、偏斜類問題(類別不均衡)
- 三、查準率P與召回率R——代替準確率的評估指標
- 四、查準率與召回率的權(quán)衡——F1-Score
上次筆記主要介紹評估機器學(xué)習(xí)模型的方法,從偏差、方差來分析模型可能擁有的問題,從而應(yīng)該采取什么相應(yīng)的措施。介紹了偏差、方差與欠擬合、過擬合之間的關(guān)系,以及正則化對偏差、方差的影響,還介紹了一些曲線圖幫助分析,這些都是實踐中很重要的建議,相比毫無目的地隨便選擇優(yōu)化方法,通過評估分析之后可以排除一些無意義的選項,節(jié)省了大量寶貴的時間。
上次筆記鏈接:https://blog.csdn.net/qq_40467656/article/details/107525426
這次筆記繼續(xù)介紹一些機器學(xué)習(xí)系統(tǒng)實際使用時會遇到的一些問題,以及相應(yīng)的解決方案。
一、設(shè)計機器學(xué)習(xí)系統(tǒng)的思想
1.快速實現(xiàn)+繪制學(xué)習(xí)曲線——尋找重點優(yōu)化的方向
當要開始做一個機器學(xué)習(xí)的系統(tǒng)時,一般來說最好的辦法,不是一開始就建立一個很復(fù)雜的有許多復(fù)雜特征的系統(tǒng),而是通過一個簡單的算法來快速地實現(xiàn)它,即使這個簡單的東西不是很完美;然后通過交叉驗證集來測試數(shù)據(jù)。
做完上述的之后,就可以畫出相應(yīng)的學(xué)習(xí)曲線,通過學(xué)習(xí)曲線以及檢驗誤差來找出你的算法是否存在高偏差或高方差或其他一些的問題,在作出這些分析之后,再來決定是否使用更多的數(shù)據(jù)或者特征等等。這種方法在你剛剛開始解決一個機器學(xué)習(xí)的問題的時候能起到很好的作用,因為你并不能預(yù)知,你是需要更多的特征還是更多的數(shù)據(jù)或者是別的東西,在缺乏各種證據(jù)的情況下,很難提前知道這些信息,因為你沒有畫出學(xué)習(xí)曲線所以很難決定把時間花在哪里。
所以很多時候,一開始應(yīng)當先進行一次簡單快速地實現(xiàn),然后畫出學(xué)習(xí)曲線來幫助你進行之后的判斷。可以把它想成是在你編程的時候,你要避免出現(xiàn)過早優(yōu)化的問題,這種思想告訴我們,應(yīng)該用實際的證據(jù)來指導(dǎo)我們的決策,來決定把時間花在哪里,而不是僅憑直覺。上述思想如下圖所示:
2.誤差分析
當實現(xiàn)比如一個垃圾郵件分類器的時候,會經(jīng)常觀察交叉驗證集的情況,然后看一看那些被錯誤分類的文件。通過查看這些被錯誤分類的垃圾郵件和非垃圾郵件,有什么共同的特征和規(guī)律,這樣做多了以后,這個過程就會啟發(fā)你應(yīng)該設(shè)計怎樣的新特征或是告訴你現(xiàn)在的系統(tǒng)有什么優(yōu)點和缺點,然后指導(dǎo)你想出辦法來改進它。
舉一個具體的例子:假如在做一個垃圾郵件分類器,然后在你的交叉驗證集中有500個樣本,假如在這個例子中錯誤率較高,它錯誤分類了100個交叉驗證樣本,如下圖所示:
那么現(xiàn)在要做的就是手動核查著100個錯誤,然后手工為它們分類,同時要考慮這些郵件是什么類型的郵件,有什么線索或者特征能幫助算法正確的進行分類。比如經(jīng)過手動核查后發(fā)現(xiàn)錯誤分類的郵件是以下的情況:
對于錯誤比較多的類別,就應(yīng)該多關(guān)注一下,多找一些特征來區(qū)別它們,進而進行改進。
因此,這樣的誤差分析,是一種手動地去檢查算法所出現(xiàn)的失誤的過程,它能引導(dǎo)你走向最有成效的道路。這也是為什么要先通過一種比較簡單的算法先實現(xiàn)的原因,我們要做的是找到一些最難以分類的類別,而對于不同的學(xué)習(xí)算法來說,對它們造成困難的樣本總是相似的,通過一個簡單粗暴的算法實現(xiàn),你可以很快的找到算法的不足所在和難以處理的樣本的類型,然后把精力集中在它們身上。
3.數(shù)值估計
在改進學(xué)習(xí)算法時,另一個技巧是保證自己對學(xué)習(xí)算法有一種數(shù)值估計的方法。當改進學(xué)習(xí)算法時,如果你的算法能夠返回一個數(shù)值評價指標來估計算法執(zhí)行的效果,將會很有幫助。
可能算法是準確的,也可能是錯誤的,但這個數(shù)字能告訴你你的學(xué)習(xí)算法效果有多好,先看一個例子:
當遇到是否應(yīng)該把discount、discounts、discounted和discounting這幾個單詞當作有相同的含義時,可能會考慮是否使用stemming軟件(一種詞干提取軟件),那么我們就可以通過比較使用前后系統(tǒng)的錯誤率的變化來判斷是否應(yīng)該使用。圖中所示,不使用的錯誤率是5%,使用后的錯誤率是3%,顯然有了這樣的數(shù)值比較,抉擇起來會很容易。
當你改進學(xué)習(xí)算法時,你總是要去嘗試很多新主意和新版本的算法,如果你每次試用新方法都手動地去檢測這些例子看看表現(xiàn)的好不好,會讓你很難去決定到底應(yīng)不應(yīng)該這么做。但是通過一個單一規(guī)則的數(shù)值評價指標,你可以觀察誤差率是變大了還是變小了,你可以通過它更快地實踐你的新想法,它能直接告訴你你的想法能提高還是降低學(xué)習(xí)算法的表現(xiàn),這會大大加速你的進程。
二、偏斜類問題(類別不均衡)
從一個例子來理解偏斜類問題:
訓(xùn)練一個邏輯回歸模型來判斷患者是否患有癌癥,假設(shè)我們訓(xùn)練的這個模型在測試集上的錯誤率只有1%。但是如果只有0.5%的患者是有癌癥的,這時即使不用任何算法,直接將所有患者都預(yù)測為無癌癥,錯誤率也只有0.5%,比使用了機器學(xué)習(xí)算法后獲得的錯誤率還要低。
這種情況經(jīng)常發(fā)生在正例和負例的比率非常接近于一個極端情況的時候。在本例中,正樣本的數(shù)量與負樣本的數(shù)量相比非常非常少,把這種情況叫做偏斜類。一個類的數(shù)據(jù)與另一個類相比多很多,此時使用分類誤差或分類精確度來作為評估度量可能會產(chǎn)生如下問題:有時候只看準確率無法衡量一個算法的好壞,無法確定真的提升了算法的質(zhì)量。
三、查準率P與召回率R——代替準確率的評估指標
所以在遇到偏斜類問題時,我們希望有一個不同的誤差度量值或評估度量值。下面介紹兩種評估度量值:查準率與召回率。
首先要定義一些概念:
當真實類別與預(yù)測的類別都為1時的數(shù)據(jù),我們稱之為真陽性(True Positive),真實類別為1,預(yù)測類別為0的,稱之為假陽性(False Positive),真實類別為0,預(yù)測類別為1的,稱之為假陰性(False Negative),真實類別與預(yù)測類別都為0的,稱之為真陰性(True Negative),如上圖所示。
然后再來看查準率與召回率的定義:
查準率(Precision)是指,在所有預(yù)測為真的數(shù)據(jù)中真實標簽為真的數(shù)據(jù)的比例,公式如下圖所示,可以看出,查準率越高越好。
而召回率(Recall)是指,在所有真實標簽為真的數(shù)據(jù)中,被預(yù)測正確(即也為真)的比例,公式如下圖所示,自然也是越高越好。
通過計算查準率與召回率,我們就可以更好地知道分類模型到底好不好,針對上述提及的癌癥分類的偏斜類問題,如果我們將所有的數(shù)據(jù)全都預(yù)測為無癌癥(0/假),那么召回率就變成0,由此得知這不是一個好的算法。
擁有高查準率和高召回率的模型是一個好的分類模型,這給予了我們一個更好的評估值,給予了一種更直接的方法來評估模型的好壞。
四、查準率與召回率的權(quán)衡——F1-Score
在很多應(yīng)用中,我們希望能夠保證查準率與召回率的相對平衡。先來看一下查準率與召回率有什么聯(lián)系:
還是在這個癌癥分類的邏輯回歸模型上,如果我們的目標是盡可能的減少患者的心理負擔,即只有很確定時才宣布患有癌癥(y=1),不然不判定為癌癥(y=0)。
當我們將分類的閾值從0.5改為0.7或者是0.9時,這就意味著在概率達到90%時才判定為有癌癥,這樣的話判斷有癌癥的數(shù)據(jù)中真的有癌癥的比例就會變大,即查準率會變大;而與此同時,所有真實有癌癥的數(shù)據(jù)中被預(yù)測為有癌癥的可能性就有所下降(畢竟概率要求變高,原本一些低概率的現(xiàn)在被預(yù)測為無癌癥了),即召回率會變小。
考慮另外一種情況,假設(shè)我們希望避免遺漏掉患有癌癥的患者,即希望避免假陰性。換句話說,如果一個患者確實患有癌癥,但是我們沒有告訴他患有癌癥,那這可能造成嚴重的后果。
這時的分類閾值將會設(shè)置的小一些,比如0.3,因為希望更多的患者被預(yù)測為有癌癥,從而進一步接受治療。那么與上一個情況相反,這將擁有高召回率,低查準率。
所以對于大多數(shù)的回歸模型,你得權(quán)衡查準率與召回率,通過改變“閾值”來得到想要的高查準率或是高召回率,它們之間的關(guān)系如下圖所示,一個高一個就低:
那么現(xiàn)在又有一個問題,當你有幾個算法時,或者同一個算法但是“閾值”不同時,得到的查準率與召回率都是不一樣的,我們怎樣決定哪一個是最好的呢?當只有一個評價度量時可以直接比較,但是現(xiàn)在有兩個,該怎么綜合考慮呢?
有一種結(jié)合查準率和召回率的的方式,叫做F值(F-Score),公式如下圖所示,分值越高則說明該模型最好:
總結(jié)
以上是生活随笔為你收集整理的吴恩达《机器学习》学习笔记十二——机器学习系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建立带头结点的双向链表_尾插法
- 下一篇: 二叉树的一些leetcode题目+pyt