使用數據集,Weka和J48分類器我有以下樹:我可以防止J48分類器在同一個字段上分裂超過x次嗎?
而且它在右側的'NumTweets'上分裂了很多。我能阻止J48在一個字段上進行超過指定數量的分割嗎?因爲這顯然是過度配合我的數據在一個特定的領域。理想情況下,我希望它只能在分支中重複使用3-4次相同的字段。有什麼辦法可以做到這一點?
在此先感謝!
使用數據集,Weka和J48分類器我有以下樹:我可以防止J48分類器在同一個字段上分裂超過x次嗎?
而且它在右側的'NumTweets'上分裂了很多。我能阻止J48在一個字段上進行超過指定數量的分割嗎?因爲這顯然是過度配合我的數據在一個特定的領域。理想情況下,我希望它只能在分支中重複使用3-4次相同的字段。有什麼辦法可以做到這一點?
在此先感謝!
要回答你的第一個問題:不,WEKA瀏覽器不提供特定屬性的拆分限制。這隻能在代碼中手動完成。
說了這麼多,你可以在這裏嘗試限制樹大小/減少過度擬合。
您可以嘗試REPTree而不是J48。它使用與J48相同的拆分標準 ,但使用減少的錯誤修剪。它有一個 選項來限制樹的深度。
降低J48修剪置信度(-C參數)將導致更多的修剪,從而導致更小的樹大小。
您可以嘗試使用minNumObj(達到每個葉子的最小數量的實例)參數。
不,但您可以將J48 minNumObj
配置參數設置得更高。 (默認值爲2.)這對每個葉節點必須包含的最小數據元素數量設置約束。
通過這種方式(通過反覆試驗),您可以在某種程度上平衡和/或簡化決策樹。
也許你可以放棄或忽略惱人的屬性。也許將NumTweets
分成不同的分類(例如<每天1條推文,<每日10條推文,更多> 10條推文日)也有幫助?這可以通過預處理選項卡上的Discretizing Filter來完成。
我已經玩過'minNumObj'配置,但幾乎所有的設置都會導致屬性播放不好。刪除某些屬性也是同樣的事情。我會嘗試離散化的功能,我正在計劃這樣做,但知道一個預處理過濾器是很好的知道,謝謝! – user3394131
好吧,不好意思看REPTree,謝謝! – user3394131