2012-02-17 28 views
1

我的問題如下。我有6個數據集(從不同的日子收集),我想建立一個決策樹分類器。我需要找到最佳的樹深度參數,以避免過度擬合,並對新數據有良好的預測。即使有培訓/驗證/測試數據的決策樹過度配合

我的第一次嘗試是將每個數據集分成50%/ 25%/ 25%進行培訓/驗證/測試,並將它們合併爲三個大文件。我製作了一個精度vs樹深度圖,使用大型訓練集進行訓練,並從大型驗證集計算精度。但是,我注意到驗證集的準確性隨着樹深度的增加而不斷增加,並且從未下降!

準確度達到99%左右,樹深度爲20。即使是測試集的準確度也在99%左右。根據我對數據的瞭解,我認爲它必須過於合適。我通過刪除其中一個數據集來確認這一點,只剩下5個。我使用上述相同的程序對剩下的5個數據集進行了訓練,分成了訓練/驗證/測試和深度爲20的訓練。這次我測試了它我遺漏了數據集並且產生了非常差的結果,在低50%的準確性。

事實證明,我的數據集有很多'重複'的數據,因爲它的時間序列性質。至於抽樣25-50%的任何數據集可能相當於抽樣100%,因此過度擬合。我決定嘗試一種不同的策略,方法是隨機洗牌6個數據集,並通過3/3將它們分成訓練/驗證,重複20次,並平均結果以找到最佳樹深度。我仍然在等待結果,應該在幾天內完成...

所以我的問題(最後!)是我做的是一個合理的方法嗎?還有什麼其他的搞笑數據我應該知道嗎?看起來好像我的數據集有一個'gotcha',我已經在任何地方看到過。

+0

最好設置每個葉子的最小樣本數而不是最大樹高。 – usr 2013-07-29 16:18:46

回答

1

原來問題很微妙。長話短說,不要上傳您的數據(針對不平衡數據集)並進行交叉驗證!

長話短說。我有一個不平衡的數據集,我有更多的負樣本比正數大約7-10倍。我的選擇是要麼通過重複對正面進行抽樣,要麼對負面進行抽樣。我跟着抽樣了。這意味着在交叉驗證期間,每次摺疊都有非常高的選擇所有原始正樣本的可能性,從而過度配合正樣本。我現在正在對負樣本進行抽樣,幾次進行交叉驗證並對數據進行混洗。似乎現在工作。