判斷模型是過(guò)擬合還是欠擬合--學(xué)習(xí)曲線(xiàn)

轉(zhuǎn)自 :http://blog.csdn.net/aliceyangxi1987/article/details/73598857

學(xué)習(xí)曲線(xiàn)是什么?

學(xué)習(xí)曲線(xiàn)就是通過(guò)畫(huà)出不同訓(xùn)練集大小時(shí)訓(xùn)練集和交叉驗(yàn)證的準(zhǔn)確率,可以看到模型在新數(shù)據(jù)上的表現(xiàn)两曼,進(jìn)而來(lái)判斷模型是否方差偏高或偏差過(guò)高蛙吏,以及增大訓(xùn)練集是否可以減小過(guò)擬合座哩。

怎么解讀兴革?

當(dāng)訓(xùn)練集和測(cè)試集的誤差收斂但卻很高時(shí)盐欺,為高偏差螟炫。

左上角的偏差很高波附,訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率都很低,很可能是欠擬合昼钻。

我們可以增加模型參數(shù)掸屡,比如,構(gòu)建更多的特征然评,減小正則項(xiàng)仅财。

此時(shí)通過(guò)增加數(shù)據(jù)量是不起作用的。

當(dāng)訓(xùn)練集和測(cè)試集的誤差之間有大的差距時(shí)碗淌,為高方差盏求。

當(dāng)訓(xùn)練集的準(zhǔn)確率比其他獨(dú)立數(shù)據(jù)集上的測(cè)試結(jié)果的準(zhǔn)確率要高時(shí),一般都是過(guò)擬合亿眠。

右上角方差很高碎罚,訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率相差太多,應(yīng)該是過(guò)擬合纳像。

我們可以增大訓(xùn)練集荆烈,降低模型復(fù)雜度,增大正則項(xiàng)竟趾,或者通過(guò)特征選擇減少特征數(shù)憔购。

理想情況是是找到偏差和方差都很小的情況,即收斂且誤差較小潭兽。

怎么畫(huà)倦始?

在畫(huà)學(xué)習(xí)曲線(xiàn)時(shí),橫軸為訓(xùn)練樣本的數(shù)量山卦,縱軸為準(zhǔn)確率鞋邑。

例如同樣的問(wèn)題诵次,左圖為我們用naive Bayes分類(lèi)器時(shí),效果不太好枚碗,分?jǐn)?shù)大約收斂在 0.85逾一,此時(shí)增加數(shù)據(jù)對(duì)效果沒(méi)有幫助。

右圖為SVM(RBF kernel)肮雨,訓(xùn)練集的準(zhǔn)確率很高遵堵,驗(yàn)證集的也隨著數(shù)據(jù)量增加而增加,不過(guò)因?yàn)橛?xùn)練集的還是高于驗(yàn)證集的怨规,有點(diǎn)過(guò)擬合陌宿,所以還是需要增加數(shù)據(jù)量,這時(shí)增加數(shù)據(jù)會(huì)對(duì)效果有幫助波丰。

上圖的代碼如下:

模型這里用 GaussianNB 和 SVC 做比較壳坪,

模型選擇方法中需要用到 learning_curve 和交叉驗(yàn)證方法 ShuffleSplit。

importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.naive_bayesimportGaussianNBfromsklearn.svmimportSVCfromsklearn.datasetsimportload_digitsfromsklearn.model_selectionimportlearning_curvefromsklearn.model_selectionimportShuffleSplit

首先定義畫(huà)出學(xué)習(xí)曲線(xiàn)的方法掰烟,

核心就是調(diào)用了 sklearn.model_selection 的 learning_curve爽蝴,

學(xué)習(xí)曲線(xiàn)返回的是 train_sizes, train_scores, test_scores,

畫(huà)訓(xùn)練集的曲線(xiàn)時(shí)纫骑,橫軸為 train_sizes, 縱軸為 train_scores_mean蝎亚,

畫(huà)測(cè)試集的曲線(xiàn)時(shí),橫軸為 train_sizes, 縱軸為 test_scores_mean:

defplot_learning_curve(estimator, title, X, y, ylim=None, cv=None,

? ? ? ? ? ? ? ? ? ? ? ? n_jobs=1, train_sizes=np.linspace(.1,1.0,5)):~~~? ? train_sizes, train_scores, test_scores = learning_curve(? ? ? ? estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes)? ? train_scores_mean = np.mean(train_scores, axis=1)? ? test_scores_mean = np.mean(test_scores, axis=1)? ? ? ~~~

在調(diào)用 plot_learning_curve 時(shí)先馆,首先定義交叉驗(yàn)證 cv 和學(xué)習(xí)模型 estimator发框。

這里交叉驗(yàn)證用的是 ShuffleSplit, 它首先將樣例打散磨隘,并隨機(jī)取 20% 的數(shù)據(jù)作為測(cè)試集缤底,這樣取出 100 次,最后返回的是 train_index, test_index番捂,就知道哪些數(shù)據(jù)是 train个唧,哪些數(shù)據(jù)是 test。

estimator 用的是 GaussianNB设预,對(duì)應(yīng)左圖:

cv = ShuffleSplit(n_splits=100, test_size=0.2, random_state=0)estimator = GaussianNB()

plot_learning_curve(estimator, title, X, y, ylim=(0.7, 1.01), cv=cv, n_jobs=4)

再看 estimator 是 SVC 的時(shí)候徙歼,對(duì)應(yīng)右圖:

cv = ShuffleSplit(n_splits=10, test_size=0.2, random_state=0)estimator = SVC(gamma=0.001)

plot_learning_curve(estimator, title, X, y, (0.7, 1.01), cv=cv, n_jobs=4)


分類(lèi):?Machine Learning

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鳖枕,隨后出現(xiàn)的幾起案子魄梯,更是在濱河造成了極大的恐慌,老刑警劉巖宾符,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酿秸,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡魏烫,警方通過(guò)查閱死者的電腦和手機(jī)辣苏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)肝箱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人稀蟋,你說(shuō)我怎么就攤上這事煌张。” “怎么了退客?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵骏融,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我萌狂,道長(zhǎng)档玻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任粥脚,我火速辦了婚禮窃肠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘刷允。我一直安慰自己,他們只是感情好碧囊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布树灶。 她就那樣靜靜地躺著,像睡著了一般糯而。 火紅的嫁衣襯著肌膚如雪天通。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,950評(píng)論 1 291
  • 那天熄驼,我揣著相機(jī)與錄音像寒,去河邊找鬼。 笑死瓜贾,一個(gè)胖子當(dāng)著我的面吹牛诺祸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祭芦,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼筷笨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了龟劲?” 一聲冷哼從身側(cè)響起胃夏,我...
    開(kāi)封第一講書(shū)人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎昌跌,沒(méi)想到半個(gè)月后仰禀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蚕愤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年答恶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饺蚊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亥宿,死狀恐怖卸勺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烫扼,我是刑警寧澤曙求,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站映企,受9級(jí)特大地震影響悟狱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜堰氓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一挤渐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧双絮,春花似錦浴麻、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至焚挠,卻和暖如春膏萧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蝌衔。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工榛泛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人噩斟。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓曹锨,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親亩冬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子艘希,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

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