1.6 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
| 1.5 訓練/開發/測試集劃分 | 回到目錄 | 1.7 什么時候該改變開發_測試集和指標 |
開發集和測試集的大小 (Size of Dev and Test Sets)
在上一個視頻中你們知道了你的開發集和測試集為什么必須來自同一分布,但它們規模應該多大?在深度學習時代,設立開發集和測試集的方針也在變化,我們來看看一些最佳做法。
你可能聽說過一條經驗法則,在機器學習中,把你取得的全部數據用70/30比例分成訓練集和測試集?;蛘呷绻惚仨氃O立訓練集、開發集和測試集,你會這么分60%訓練集,20%開發集,20%測試集。在機器學習的早期,這樣分是相當合理的,特別是以前的數據集大小要小得多。所以如果你總共有100個樣本,這樣70/30或者60/20/20分的經驗法則是相當合理的。如果你有幾千個樣本或者有一萬個樣本,這些做法也還是合理的。
但在現代機器學習中,我們更習慣操作規模大得多的數據集,比如說你有1百萬個訓練樣本,這樣分可能更合理,98%作為訓練集,1%開發集,1%測試集,我們用 DDD 和 TTT 縮寫來表示開發集和測試集。因為如果你有1百萬個樣本,那么1%就是10,000個樣本,這對于開發集和測試集來說可能已經夠了。所以在現代深度學習時代,有時我們擁有大得多的數據集,所以使用小于20%的比例或者小于30%比例的數據作為開發集和測試集也是合理的。而且因為深度學習算法對數據的胃口很大,我們可以看到那些有海量數據集的問題,有更高比例的數據劃分到訓練集里,那么測試集呢?
要記住,測試集的目的是完成系統開發之后,測試集可以幫你評估投產系統的性能。方針就是,令你的測試集足夠大,能夠以高置信度評估系統整體性能。所以除非你需要對最終投產系統有一個很精確的指標,一般來說測試集不需要上百萬個例子。對于你的應用程序,也許你想,有10,000個例子就能給你足夠的置信度來給出性能指標了,也許100,000個之類的可能就夠了,這數目可能遠遠小于比如說整體數據集的30%,取決于你有多少數據。
對于某些應用,你也許不需要對系統性能有置信度很高的評估,也許你只需要訓練集和開發集。我認為,不單獨分出一個測試集也是可以的。事實上,有時在實踐中有些人會只分成訓練集和測試集,他們實際上在測試集上迭代,所以這里沒有測試集,他們有的是訓練集和開發集,但沒有測試集。如果你真的在調試這個集,這個開發集或這個測試集,這最好稱為開發集。
不過在機器學習的歷史里,不是每個人都把術語定義分得很清的,有時人們說的開發集,其實應該看作測試集。但如果你只要有數據去訓練,有數據去調試就夠了。你打算不管測試集,直接部署最終系統,所以不用太擔心它的實際表現,我覺得這也是很好的,就將它們稱為訓練集、開發集就好。然后說清楚你沒有測試集,這是不是有點不正常?我絕對不建議在搭建系統時省略測試集,因為有個單獨的測試集比較令我安心。因為你可以使用這組不帶偏差的數據來測量系統的性能。但如果你的開發集非常大,這樣你就不會對開發集過擬合得太厲害,這種情況,只有訓練集和測試集也不是完全不合理的。不過我一般不建議這么做。
總結一下,在大數據時代舊的經驗規則,這個70/30不再適用了?,F在流行的是把大量數據分到訓練集,然后少量數據分到開發集和測試集,特別是當你有一個非常大的數據集時。以前的經驗法則其實是為了確保開發集足夠大,能夠達到它的目的,就是幫你評估不同的想法,然后選出 AAA 還是 BBB 更好。測試集的目的是評估你最終的成本偏差,你只需要設立足夠大的測試集,可以用來這么評估就行了,可能只需要遠遠小于總體數據量的30%。
所以我希望本視頻能給你們一點指導和建議,讓你們知道如何在深度學習時代設立開發和測試集。接下來,有時候在研究機器學習的問題途中,你可能需要更改評估指標,或者改動你的開發集和測試集,我們會講什么時候需要這樣做。
課程板書
| 1.5 訓練/開發/測試集劃分 | 回到目錄 | 1.7 什么時候該改變開發_測試集和指標 |
總結
以上是生活随笔為你收集整理的1.6 开发集和测试集的大小-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.5 训练/开发/测试集划分-深度学习
- 下一篇: 1.7 开发集和测试集的大小-深度学习第