吳恩達(dá)機(jī)器學(xué)習(xí)—機(jī)器學(xué)習(xí)系統(tǒng)的構(gòu)建

引例——垃圾郵件分類

我們?nèi)绾螌⒗]件和普通郵件分開呢,將垃圾郵件標(biāo)記為1,普通郵件標(biāo)記為0。我們首先要做的就是定義一下特征x,有了這些特征,我們就可以通過訓(xùn)練分類器,將垃圾郵件識(shí)別出來。那么我們又如何選擇郵件的特征向量呢?一種方法是我們可以提出一個(gè)可能包含100個(gè)單詞的列表,比如,如果郵件中包含單詞deal,buy,discount他可能就是一份垃圾郵件。首先列出這一百個(gè)單詞,并按照字母順序排序,檢查這些單詞是否在郵件中出現(xiàn),建立一個(gè)特征向量x,當(dāng)某個(gè)單詞在郵件中出現(xiàn)時(shí),對(duì)應(yīng)的坐標(biāo)為1,沒有出現(xiàn),則對(duì)應(yīng)為0,這樣就形成了一個(gè)向量,向量的維度就是單詞的個(gè)數(shù)。

郵件分類的特征向量選擇
改進(jìn)垃圾郵件分類器的方法

在進(jìn)行算法改進(jìn)的時(shí)候,一定要盡力想清楚這些解決辦法,然后盡力選擇合適的方法,而不是隨意的決定使用哪種方法。在后面的內(nèi)容中我們會(huì)介紹一些方法,幫助你更好的在眾多方法中做出選擇。

誤差分析:

建議方法

在進(jìn)行機(jī)器學(xué)習(xí)系統(tǒng)涉及的時(shí)候,首先應(yīng)該從建立一個(gè)簡單的算法開始,而不是具有很多特征的復(fù)雜系統(tǒng),然后再慢慢改進(jìn),這樣能防止過早優(yōu)化。在建立模型之后,畫出學(xué)習(xí)曲線,有效的判斷模型是高偏差(欠擬合)還是高方差(過擬合),從而通過調(diào)整特征個(gè)數(shù),改變數(shù)據(jù)量,改變正則參數(shù)等方法進(jìn)行改進(jìn)。誤差分析也很重要,以郵件分類為例,在出現(xiàn)誤差的時(shí)候(交叉驗(yàn)證集),要分析錯(cuò)誤分類的郵件的共同特征,將這些特征作為特征變量能有效地提高分類器的表現(xiàn)。如下例:

手動(dòng)誤差分析

在進(jìn)行郵件分類錯(cuò)誤時(shí),對(duì)于驗(yàn)證集中的數(shù)據(jù),我們要進(jìn)行進(jìn)一步分析。上例表示在郵件分類的時(shí)候,錯(cuò)誤分類的數(shù)量有100,錯(cuò)誤率較高,此時(shí),我們可以從兩方面分析:一方面區(qū)分郵件的類型,如醫(yī)藥公司的郵件,賣假貨的郵件,釣魚郵件等,通過分類,我們可以看出對(duì)于那種類型的郵件,分類器的識(shí)別能力較差,然后進(jìn)一步提取這類郵件的共同特征,提高分類器的表現(xiàn);另一方面,我們可以區(qū)分錯(cuò)誤分類郵件具有哪些特征,如故意的錯(cuò)誤拼寫,異常的額郵件來源,異常的標(biāo)點(diǎn)符號(hào)的使用等,我們可以將這些特征加入到分類器特征變量中,提高算法。

????????通常不同的算法,其可能遇到的困難是相似的,通過建立一個(gè)簡單粗暴的算法,你可以很快的找到算法的不足和難以識(shí)別的樣本,然后將精力集中在他們身上。

????????另一種改進(jìn)算法的技巧就是保證你對(duì)算法有一種數(shù)值估計(jì)的方法,即在改進(jìn)算法的時(shí)候,有一個(gè)數(shù)值的指標(biāo)來評(píng)估算法執(zhí)行的效果。

算法數(shù)值評(píng)價(jià)

如,對(duì)于上例,在進(jìn)行算法改進(jìn)的時(shí)候,是否應(yīng)該將幾個(gè)不同格式的單詞認(rèn)作同一個(gè)單詞?是否需要區(qū)分大小寫?對(duì)于這些問題,可以通過進(jìn)行兩次對(duì)比試驗(yàn),比較兩次實(shí)驗(yàn)的驗(yàn)證誤差,選擇驗(yàn)證誤差較小的那一種方法。此時(shí),這個(gè)驗(yàn)證誤差就是一個(gè)數(shù)值評(píng)價(jià)指標(biāo)。

進(jìn)行算法改進(jìn)的時(shí)候,你通常會(huì)嘗試很過不同的新想法和新算法,在每次進(jìn)行是的實(shí)驗(yàn)的時(shí)候,通過單以規(guī)則的數(shù)值評(píng)價(jià)指標(biāo)可以幫助你快速的判斷分類效果是夠變高,這能夠幫你快速的判斷新算法的優(yōu)劣。這些判斷都是在交叉驗(yàn)證集上進(jìn)行的

不對(duì)稱性分類的誤差評(píng)估skewed class :

一個(gè)skewed class的例子

假設(shè)假設(shè)我們要進(jìn)行一個(gè)腫瘤分類算法,評(píng)估腫瘤是惡性的還是良性的,我們發(fā)現(xiàn)模型的特使誤差是1%,即診斷正確的概率是99%。這看起來似乎是一個(gè)不錯(cuò)的模型,但是我們發(fā)現(xiàn),在我們的樣本中只有0.5%是惡性腫瘤。就算利用上面藍(lán)色的代碼,一個(gè)普通的非機(jī)器學(xué)習(xí)的算法,我們的成功率也只有0.5%的誤差。這種情況出現(xiàn)在正樣例和負(fù)樣例的比例非常接近一個(gè)極端情況下的時(shí)候,此時(shí)稱這種分類問題為偏斜類。這種情況下,靠單一數(shù)值指標(biāo)的評(píng)估方法可能不太適用??梢圆捎靡砸幌碌脑u(píng)估指標(biāo):

Precision/Recall:查準(zhǔn)率或召回率

查準(zhǔn)率與召回率

查準(zhǔn)率值的是,在模型分類為正樣例的數(shù)據(jù)中,真正的正樣例占多少,這體現(xiàn)出模型分類的準(zhǔn)確度,因此,在數(shù)值上,查準(zhǔn)率=模型正確識(shí)別的正例數(shù)量/模型識(shí)別出總的正例的數(shù)量;

召回率值的是,在實(shí)際為為正例的數(shù)據(jù)中,我們準(zhǔn)確判別出來的數(shù)量,即有多少正樣例真的被我們找出來了,因此,在數(shù)值上,召回率=模型正確識(shí)別為正例的數(shù)量/真正的正例數(shù)量;

查準(zhǔn)率與召回率的權(quán)衡

對(duì)于癌癥預(yù)測(cè)問題,如果你想只有在可信度非常高的情況下才判定患者確實(shí)患有癌癥,你可以將概率的閾值提高,如提高到0.7或0.9,只有在概率大于0.9的時(shí)候才判定為y=1,此時(shí)可能會(huì)使查準(zhǔn)率提高而召回率降低,因?yàn)樵谶@種情況下只有概率大于0.9才會(huì)判定為癌癥患者,測(cè)判定為患者的人當(dāng)中,真正的患者數(shù)肯定很多。同時(shí),由于概率閾值提高,會(huì)漏掉一部分真正的癌癥患者,因此召回率降低。另一方面,如果你想盡量避免錯(cuò)誤的負(fù)樣例出現(xiàn),即避免漏掉真正的患者,則要把概率閾值降低,這樣只要概率稍高,就會(huì)被判定為癌癥患者,此時(shí)召回率會(huì)提高,但是查準(zhǔn)率會(huì)降低,因?yàn)榕卸檎龢永娜酥?,非患者的?shù)量也會(huì)提高。因此,在進(jìn)行模型評(píng)估和選擇的時(shí)候,要根據(jù)需要設(shè)定合適的閾值。


評(píng)估指標(biāo)的選擇

由于存在兩個(gè)數(shù)值指標(biāo)來判斷模型的好壞,那如果將這兩個(gè)指標(biāo)結(jié)合起來呢,一個(gè)自然的想法就是進(jìn)行平均,但這并不是好的方法,因?yàn)榭赡艽嬖谒惴ㄈ岬降那闆r。目前常使用的方法是計(jì)算F值,F(xiàn)值越大,說明模型效果越好。

在實(shí)際實(shí)驗(yàn)中,為了對(duì)概率閾值進(jìn)行調(diào)整,我們首先根據(jù)不同的閾值計(jì)算查準(zhǔn)率和召回率,然后計(jì)算不同閾值下的F-score,最終選擇F值最小的閾值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容