训练集与测试集分布差距
一位老鐵的說法:
第一,分布差距大是重要特征數值差距大,比如一個是 0-1,另外一個 0.5-2,如果是這種情況無解,你能做的只能擴大訓練集合,因為重要特征一旦偏離,哪怕數學上都是有交集,現實上下文都是差距極大的,這和數據采集流程和規范等非技術問題有關。
第二,重要特征數據差距不大,不太重要的差距較大,這種情況可以屏蔽這些特征,或者利用類似遷移學習 prototype 那種思路約束特征輸入不過于偏離訓練集。
第三,所有特征數值差距都不大,但是特征之間相關性統計差距大,比如訓練集當中 A 和 B 相關性更加強,但是測試集合 A 和 C 的相關性更加強,這對你模型本身高階組合就要約束,比如上DNN 的話,前期就不是明智的選擇。
第四,特征數值差距不大,特征相關性差距也不大,但是目標數值差距過大,這個好辦,改變任務設置共同的中間目標,比如你說的目標值是否可以采取相對值,增長率,夏普等,而非絕對值
劃分數據集合
假設9K張生成數據,1K張真實數據
一:可以將兩個數據集組合起來,然后隨機洗牌。并將結果數據集分割成訓練/驗證/測試集。缺點:但是在驗證集中,只有十分之一的圖片來自真實數據集。在大多數情況下,我們都在根據生成數據的分布來優化網絡模型,這顯然不符合優化模型的目的。
二:另一個方法是讓驗證/測試集來自真實數據集,分出部分真實數據與生成數據混合作為訓練集。假設像以前一樣對訓練/驗證/測試集使用96:2:2的劃分。驗證/測試集將各有2000張真實圖像數據,剩下的真實數據和全部生成數據都為訓練集。缺點:然而,訓練集現在不同于驗證/測試集。這意味著在很大程度上,我們是在生成圖像上訓練網絡模型。因此,優化模型需要花費更多更長的時間。更重要的是,當訓練集和驗證集上的損失差別較大時,我們無法判斷這是由過擬合還是數據不匹配造成的。假設訓練誤差為2%,驗證誤差為10%。鑒于這兩組數據來自不同的分布,這兩組數據之間8%的差異中有多少是由于數據不匹配造成的,有多少是由于模型過擬合造成的,我們并不能判斷。
三、修改訓練/驗證/測試集劃分。取出訓練集的一小部分,稱之為“橋集”。橋集將不用于訓練網絡模型。它是一個獨立的集合,劃分方式如下所示:
如果訓練:橋:驗證:測試集上的誤差分別為2%、9%、10%、12%。
因為橋集與訓練集來自相同的分布,排除了數據不匹配(數據分布)的影響,它們之間的誤差相差為7%,所以有7%的誤差來自方差誤差,泛化能力不足。橋集和驗證集有1%的差異,所以有1%的誤差來自數據不匹配誤差。如果訓練集橋集誤差相差小,則可能是方差所帶來的誤差。測試集與驗證集2%的誤差為方差誤差(存疑)。
參考
https://www.zhihu.com/question/265829982/answer/1770310534
https://zhuanlan.zhihu.com/p/72503153?from_voters_page=true
總結
以上是生活随笔為你收集整理的训练集与测试集分布差距的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科目3|软考高项论文写作技巧
- 下一篇: matlab随机线性微分方程,基于MAT