從零開始機(jī)器學(xué)習(xí)-7 訓(xùn)練集和測試集

本文由 沈慶陽 所有,轉(zhuǎn)載請與作者取得聯(lián)系!
在繼續(xù)下去之前,我們需要提一下泛化。

泛化和過擬合

泛化(Generalization),指的是模型可以很好地擬合新的數(shù)據(jù)(以前不曾出現(xiàn)過的)。針對某些問題,我們可以僅僅使用一條直線來分類。雖然有一些數(shù)據(jù)可能不會很好地將所有的樣本都正確分類,但我們提倡這樣做。
如果將樣本用十分復(fù)雜的模型進(jìn)行分類,也許會產(chǎn)生十分復(fù)雜的曲線,這些曲線可以做到百分百地將樣本中的所有樣本進(jìn)行正確的分類。但這樣就是最好的么?當(dāng)我們對新的數(shù)據(jù)進(jìn)行預(yù)測的時候,往往會發(fā)現(xiàn)并不如此。這個復(fù)雜的模型對新的數(shù)據(jù)預(yù)測或許會十分糟糕,這就是過擬合。
機(jī)器學(xué)習(xí)的目標(biāo)是對真實(shí)的概率分布做出正確的預(yù)測。我們在訓(xùn)練的過程中,這個概率分布是未知的。在機(jī)器學(xué)習(xí)領(lǐng)域,奧卡姆剃刀定律解釋如下:
機(jī)器學(xué)習(xí)模型越簡單,良好的結(jié)果就越可能不僅僅基于樣本的特性。


奧卡姆剃刀定律

對于機(jī)器學(xué)習(xí)來說,我們需要使用以前從未見過的數(shù)據(jù)來進(jìn)行預(yù)測。那么如何獲得這些數(shù)據(jù)呢?目前通常采用的方法是將數(shù)據(jù)集劃分為訓(xùn)練集和測試集。

訓(xùn)練集和測試集

我們在前面完成Object Detection的項目,訓(xùn)練自己的模型的時候獲取過大量的照片,這些照片就是我們的數(shù)據(jù)集(DataSet)。同時,我們將數(shù)據(jù)集分為了訓(xùn)練集(Training Set)和測試集(Test Set)。讓我們再來回顧一下訓(xùn)練集和測試集的概念。


數(shù)據(jù)集的劃分
訓(xùn)練集:用于訓(xùn)練模型的子集。
測試集:用于測試訓(xùn)練后模型的子集。

當(dāng)把數(shù)據(jù)集劃分為訓(xùn)練集和測試集的時候,我們的模型訓(xùn)練的流程是這樣的。在每一次迭代的過程中,我們先通過訓(xùn)練集的數(shù)據(jù)對模型進(jìn)行訓(xùn)練,而后通過測試集來對該模型進(jìn)行測試,并以測試結(jié)果作為指導(dǎo)來調(diào)整模型的各種超參數(shù)。
請大家根據(jù)這個流程思考一下該流程可能存在哪些問題?還有沒有可以改進(jìn)的空間?


劃分訓(xùn)練集和測試集的工作流程

對于訓(xùn)練集,訓(xùn)練集的規(guī)模越大,我們訓(xùn)練的模型的學(xué)習(xí)效果就越好。對于測試集,測試集的規(guī)模越大,我們對于評估指標(biāo)的信息就越充足。通常,測試集與訓(xùn)練集的比例在1:9左右。但這個比例僅僅提供參考,在實(shí)際應(yīng)用中仍然要應(yīng)變。
對于測試集的選擇有如下要求:1、規(guī)模足夠大 2、能代表整個數(shù)據(jù)集
此外,千萬不要將測試集的數(shù)據(jù)混入訓(xùn)練集當(dāng)中,也就是說錯誤地對測試集進(jìn)行了訓(xùn)練。如果發(fā)現(xiàn)訓(xùn)練模型測試的準(zhǔn)確度達(dá)到了100%,請不要開始慶祝,先找一下你的訓(xùn)練集中是不是混入了測試集的數(shù)據(jù)吧。

驗(yàn)證:另一種劃分

對于僅僅將數(shù)據(jù)集分為訓(xùn)練集和測試集的流程,我們可以發(fā)現(xiàn),通過一次次的使用測試集對模型進(jìn)行測試,會造成不自覺地過擬合測試集數(shù)據(jù)的風(fēng)險(畢竟是以測試集的測試結(jié)果來作為參考調(diào)整模型的超參數(shù))。那么有沒有一種更好的劃分方法呢?
有!那就是引入另一個名為驗(yàn)證集的數(shù)據(jù)集,這些數(shù)據(jù)成為驗(yàn)證數(shù)據(jù)。


加入驗(yàn)證集的劃分方法

在這個流程中,我們暫且不使用任何測試數(shù)據(jù)。在每一次迭代的時候,每一次驗(yàn)證的時候,每一次調(diào)整超參數(shù)的時候僅根據(jù)驗(yàn)證數(shù)據(jù)來得到較好的結(jié)果。此時再根據(jù)驗(yàn)證集得到的模型來代入測試集的數(shù)據(jù)進(jìn)行測試。如果這時候模型通過了測試集的測試(與驗(yàn)證集測試的結(jié)果同樣好)。那么這次訓(xùn)練便是成功地。如果通過了驗(yàn)證集的測試,卻沒有通過測試集的測試,那么便可知我們對驗(yàn)證集進(jìn)行了過擬合。


引入了驗(yàn)證集的工作流程

后繼

在后續(xù)的幾篇文章中,我們將通過Tensorflow的實(shí)戰(zhàn),從頭開始幾個機(jī)器學(xué)習(xí)的小項目,并在實(shí)戰(zhàn)中講解前幾堂課所學(xué)習(xí)的知識。

覺得寫的不錯的朋友可以點(diǎn)一個 喜歡? ~
謝謝你的支持!

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

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

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