提高模型識別率——偏差、方差問題

轉載自:https://blog.csdn.net/sqiu_11/article/details/75772116

 

本篇是針對當憑直覺做完一個Baseline以後,如何提高現有的識別率?依然憑直覺有以下幾種方法:
1、增加訓練數據集
2、挑選出更少的特徵
3、增加其他特徵
4、增加多項式x1*x2
5、減少或增加懲罰係數
然而,事實上雖然花了大量時間完成上述工作,效果不一定好(以上一篇Titanic爲例,事實證明,三天的優化,識別率下降了。。。。)。再思考一下,識別率低的原因是什麼?——欠擬合或者過擬合。因此,解決欠擬合和過擬合的方法就是提高識別率的方法。
Method
一、首先什麼是欠擬合,過擬合?


      過擬合會導致,訓練集損失函數小,測試集損失函數大,該假設不能很好的擬合測試集數據

從偏差(bias)和方差(variance)角度來說兩種狀態特點,欠擬合狀態下,訓練集和測試集誤差都高;
過擬合狀態下,訓練集誤差極低,測試集誤差極高。下圖,橫座標爲模型最高次數,縱座標爲誤差值


二、那麼如何判斷此時模型是欠擬合還是過擬合?
採用交叉驗證法:

正則化係數
正則化方法防止過擬合,但如何選擇懲罰係數?懲罰係數爲多少時,驗證集誤差率最低?


很明顯可以看出,懲罰係數太小,容易過擬合即高方差;懲罰係數太大,欠擬合即高偏差。
藍線是訓練集誤差,紫色線是驗證集誤差,橫座標是懲罰係數,縱座標是誤差值。
學習曲線
學習算法偏差、方差的檢驗方法,描述了訓練集數量與訓練集和驗證集誤差的關係圖。
欠擬合狀態下:增加數據不一定有太大幫助

過擬合狀態下:訓練數據少容易過擬合,增加訓練集可能會減少誤差

綜合以上內容:
上述手段的適應範圍如下:


但是,你的模型並非只是單純的擬合問題,即便擬合的很好,誤差依然不令人滿意。怎麼辦?
可以進行誤差分析
誤差分析
其實就是親自去看看,到底哪些樣本被算法分錯了?從中找到規律並尋找新的特徵。
強烈推薦在訓練集上進行誤差分析,而非測試集。因此,最好先用簡單的算法做一個不太完美的模型,通過上述方法不斷優化你的模型,在交叉驗證集上驗證。最後再在測試集上運用。同時運用評估方法,幫助你 評價此時的模型的好壞。
(數據不平衡)偏斜類誤差度量問題

以癌症預測問題爲例,1%的錯誤率對於只有0.5%實例是惡性腫瘤的測試集而言,問題依然很嚴峻。換句話說,這個模型並不是很好。所以,錯誤率作爲模型評價標準已經不可靠了。


Precision = 真陽性/預陽性=TP/(TP+FP);
Recall = 真陽性/實陽性 = TP/(TP+FN);
以上都是數量之比,都爲正實數
陽性表示(y=1),數量少的那一類型。
此案例而言,查準率:在所有預測爲惡性腫瘤的病人中,實際上有惡性腫瘤的百分比。當然是越高越好
                      查全率:在所有實際上有惡性腫瘤的病人中,成功預測有惡性腫瘤的病人百分比。當然是越高越好
存在的問題:
一山不能容二虎,除非一公和一母!
如果P高,R低:非常確信的情況下才認爲是癌症,會存在一些是癌症患者被確診爲不是的風險。
如果P低,R高:比較保守,看似像癌症的情況確認爲癌症,會存在誤診的風險。
如果P, R都高,當然最好。但是往往,一個算法得到的曲線是下圖:

那麼有沒有一個指標平衡他們的關係?

這個指標越高說明分類效果越好!!尤其是這種斜偏類問題!!

大數據問題
先來看一個圖:

上圖特點:
橫座標是訓練集規模,縱座標是準確度。這四種算法都有相似性能,隨着訓練數據集增大,
算法性能對應增強。給一個劣質算法更多的數據,效果可能比優質算法還好。因此,幾個普遍共識是:“取得成功的人不是擁有最好算法 的人,而是擁有最多數據的人”。
這種情況什麼時候是真的?
滿足下面情況:
這個算法擁有很多參數來避免高偏差,也就是說在此算法下會得到低偏差的訓練誤差。
其次,擁有足夠多的數據,使得避免模型過擬合,也就是說在“大數據”下會得到低方差模型。
此時,測試誤差會接近訓練誤差,最終使得測試誤差變小。


總結一下:
上述給出瞭如何評價一個模型好壞的幾種方法以及相關指標;同時給出了針對不同的問題(偏差、方差)給出了相應的解決方案;最後特別指出,大數據的作用!這也是大數據成爲主流的原因!
下一步實踐!多參加比賽,多做項目!纔是王道!
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章