1.5 训练/开发/测试集划分-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
| 1.4 滿足和優化指標 | 回到目錄 | 1.6 開發集合測試集的大小 |
訓練/開發/測試集劃分 (Train/Dev/Test Distribution)
設立訓練集,開發集和測試集的方式大大影響了你或者你的團隊在建立機器學習應用方面取得進展的速度。同樣的團隊,即使是大公司里的團隊,在設立這些數據集的方式,真的會讓團隊的進展變慢而不是加快,我們看看應該如何設立這些數據集,讓你的團隊效率最大化。
在這個視頻中,我想集中討論如何設立開發集和測試集,開發(dev)集也叫做開發集(development set),有時稱為保留交叉驗證集(hold out cross validation set)。然后,機器學習中的工作流程是,你嘗試很多思路,用訓練集訓練不同的模型,然后使用開發集來評估不同的思路,然后選擇一個,然后不斷迭代去改善開發集的性能,直到最后你可以得到一個令你滿意的成本,然后你再用測試集去評估。
現在,舉個例子,你要開發一個貓分類器,然后你在這些區域里運營,美國、英國、其他歐洲國家,南美洲、印度、中國,其他亞洲國家和澳大利亞,那么你應該如何設立開發集和測試集呢?
其中一種做法是,你可以選擇其中4個區域,我打算使用這四個(前四個),但也可以是隨機選的區域,然后說,來自這四個區域的數據構成開發集。然后其他四個區域,我打算用這四個(后四個),也可以隨機選擇4個,這些數據構成測試集。
事實證明,這個想法非常糟糕,因為這個例子中,你的開發集和測試集來自不同的分布。我建議你們不要這樣,而是讓你的開發集和測試集來自同一分布。我的意思是這樣,你們要記住,我想就是設立你的開發集加上一個單實數評估指標,這就是像是定下目標,然后告訴你的團隊,那就是你要瞄準的靶心,因為你一旦建立了這樣的開發集和指標,團隊就可以快速迭代,嘗試不同的想法,跑實驗,可以很快地使用開發集和指標去評估不同分類器,然后嘗試選出最好的那個。所以,機器學習團隊一般都很擅長使用不同方法去逼近目標,然后不斷迭代,不斷逼近靶心。所以,針對開發集上的指標優化。
然后在左邊的例子中,設立開發集和測試集時存在一個問題,你的團隊可能會花上幾個月時間在開發集上迭代優化,結果發現,當你們最終在測試集上測試系統時,來自這四個國家或者說下面這四個地區的數據(即測試集數據)和開發集里的數據可能差異很大,所以你可能會收獲"意外驚喜",并發現,花了那么多個月的時間去針對開發集優化,在測試集上的表現卻不佳。所以,如果你的開發集和測試集來自不同的分布,就像你設了一個目標,讓你的團隊花幾個月嘗試逼近靶心,結果在幾個月工作之后發現,你說“等等”,測試的時候,“我要把目標移到這里”,然后團隊可能會說"好吧,為什么你讓我們花那么多個月的時間去逼近那個靶心,然后突然間你可以把靶心移到不同的位置?"。
所以,為了避免這種情況,我建議的是你將所有數據隨機洗牌,放入開發集和測試集,所以開發集和測試集都有來自八個地區的數據,并且開發集和測試集都來自同一分布,這分布就是你的所有數據混在一起。
這里有另一個例子,這是個真實的故事,但有一些細節變了。所以我知道有一個機器學習團隊,花了好幾個月在開發集上優化,開發集里面有中等收入郵政編碼的貸款審批數據。那么具體的機器學習問題是,輸入 xxx 為貸款申請,你是否可以預測輸出 yyy , yyy 是他們有沒有還貸能力?所以這系統能幫助銀行判斷是否批準貸款。所以開發集來自貸款申請,這些貸款申請來自中等收入郵政編碼,zip code就是美國的郵政編碼。但是在這上面訓練了幾個月之后,團隊突然決定要在,低收入郵政編碼數據上測試一下。當然了,這個分布數據里面中等收入和低收入郵政編碼數據是很不一樣的,而且他們花了大量時間針對前面那組數據優化分類器,導致系統在后面那組數據中效果很差。所以這個特定團隊實際上浪費了3個月的時間,不得不退回去重新做很多工作。
課程PPT
| 1.4 滿足和優化指標 | 回到目錄 | 1.6 開發集合測試集的大小 |
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的1.5 训练/开发/测试集划分-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.4 满足和优化指标-深度学习第三课《
- 下一篇: 1.6 开发集和测试集的大小-深度学习第