酷播亮新聞
最棒的知識補給站

開發集和測試集應該來自同一分佈

文章摘要: (1) 美國 (2) 中國 (3) 印度 (4) 其它地區 爲了生成一個開發集和測試集開發集和測試集如果來自不同分佈還會導致另一個問題

6 開發集和測試集應該來自同一分佈

根據市場情況,由於存在不同地區的使用者,你可以把你的貓咪APP圖片資料分為四個區域:

(1) 美國

(2) 中國

(3) 印度

(4) 其它地區

爲了生成一個開發集和測試集,你可能會隨機的分配兩個地區的資料到開發集中,另外兩個作為測試集。比如:來自美國和印度的資料作為一類,來自中國和其它地區的資料作為另一類。

一旦你這樣劃分了資料集,你的團隊可能會主要關注提高在開發集的上的效能。開發集應該能夠正確的反映出你的整體情況,而不是區域性情況。比如這裏主要提升了APP在美國和印度區域的效能,而沒有考慮到中國和其他地區。

其次,開發集和測試集如果來自不同分佈還會導致另一個問題:你團隊進行開發後會發現,演算法在開發集(美國,印度)上的效果會非常好,但是到了測試集(中國,其它地區)上就會變得很差。我曾經看到過很多人都是因為這個問題導致白費了很多努力,所以我不希望這發生在你的身上。

舉一個例子,假設你團隊開發的系統在開發集上的效果非常好,但是在測試集上卻表現的非常糟糕。如果你的開發集和測試集來自於同種分佈,那麼你可以立刻判斷,你的演算法在開發集上過擬合了。比較簡單的解決辦法是輸入更多的資料進行演算法效能提升。

但是如果開發集和測試集來自不同分佈,那麼你可能就比較不好找原因了,可能會出現以下錯誤:

  1. 你的演算法在開發集上過擬合了
  2. 測試集比開發集更難識別,所以演算法輸出的結果可能就沒預期那麼好了,而且進行改進比較困難
  3. 測試集不一定比開發集更難識別,只是它們來自不同分佈。所以在開發集上表示好的演算法並不能在測試集上表現良好。(如,美國和印度貓咪的資料可能就無法反映出中國和其他區域貓咪的資料)這種情況下,你之前對演算法進行改進的努力可能都白費了。

機器學習的應用本身是非常困難的。如果開發集和測試集還沒有來自同一個分佈,那麼你將會浪費很多時間在你的演算法上。甚至你不知道你該做什麼,不該做什麼。

如果你面對的是第三方基準測試(benchmark)的問題,可能開發集和測試集來源於不同的分佈,這種時候只有運氣對你演算法產生的影響最大。當然,如果開發集和測試集在同一分佈,那麼你的演算法應該能夠很好的進行推廣和拓展。如果你開發的應用是針對特定的方向的話,我建議在選擇開發集和測試集的時候讓它們在同一分佈

如有侵權請來信告知:酷播亮新聞 » 開發集和測試集應該來自同一分佈