機器學習為什么要打亂數據?


機器學習為什么要打亂數據?

打亂數據至少分兩種情況:

第一種比較好理解也比較容易達成共識: 打亂全量數據,這樣做 train/dev/test 測試的時候每一部分的數據比較有代表性(representativeness)。極端情況就是訓練數據跟測試數據完全不一樣,這樣訓練數據上學到的模型就很難用於預測測試數據了,所以需要避免這種情況。

第二種比較tricky和難回答的情況是:在確定train/test,train/dev/val 各部分數據都有代表性的情況下,為什么要強調訓練數據內部必須是打亂的呢?一個極端的例子就是,全量數據打亂之后,做訓練測試切分,切分完之后,把訓練數據按照某順序重新排列一下,再送進模型訓練,這樣可以嗎?

個人覺得這應該是依算法而定的,比如就是一個邏輯回歸模型預測房型,把打亂的訓練數據按照真實房型排列送進模型訓練,vs 保持打亂的狀態送進模型訓練,得到的模型有本質差別嗎?剛用模擬數據測了下,貌似沒差別。

但假設我們是用神經網絡模型去預測,由於NN參數多,學習能力強,優化函數都是隨機梯度下降(或者其他隨機函數),需要避免 stuck in a local minimum, 所以就對數據的 randomness 要求比較高。而且假設送進去的數據是按照某個規律去排列的,這個規律本身極大可能也會被NN學習到,但這個規律是一個本來不應該被學到的規律,模型中包含這個順序的規律會干擾后來的預測。

簡單說,對於那種對隨機性比較敏感的模型,典型的就是 NN,打亂數據很重要。對於那種對隨機性不太敏感的模型,理論上說可以不打亂。但敏感不敏感也跟數據量級,復雜度,算法內部計算機制都有關,目前並沒有一個經緯分明的算法隨機度敏感度列表。既然打亂數據並不會得到一個更差的結果,一般推薦的做法就是打亂全量數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM