Classification
針對不平衡數據訓練決策樹
我是數據挖掘的新手,我正在嘗試針對高度不平衡的數據集訓練決策樹。但是,我遇到了預測準確性差的問題。
數據由學習課程的學生組成,類變量是課程狀態,具有兩個值 - 已退出或當前。
- 年齡
- 種族
- 性別
- 課程
…
- 課程狀態
在數據集中,當前的實例多於撤回的實例。撤回的實例僅佔總實例的 2%。
我希望能夠建立一個模型來預測一個人將來退出的概率。然而,當針對訓練數據測試模型時,模型的準確性很糟糕。
我在決策樹上遇到過類似的問題,其中數據由一兩個類控制。
我可以使用什麼方法來解決這個問題並構建更準確的分類器?
這是分類中一個有趣且非常常見的問題——不僅在決策樹中,而且在幾乎所有分類算法中。
正如您根據經驗發現的那樣,由來自任一類的不同數量的代表組成的訓練集可能會導致分類器偏向於多數類。當應用於類似不平衡的測試集時,該分類器會產生樂觀的準確度估計。在極端情況下,分類器可能會將每個測試用例分配給多數類,從而達到與屬於多數類的測試用例的比例相等的準確度。這是二元分類中眾所周知的現象(它自然地擴展到多類設置)。
這是一個重要的問題,因為不平衡的數據集可能會導致性能估計膨脹。反過來,這可能會導致關於算法表現優於偶然性的重要性的錯誤結論。
關於這個主題的機器學習文獻基本上已經開發了三種解決方案策略。
- 您可以通過對大類進行欠採樣或對小類進行**過採樣來恢復訓練集的平衡,以防止出現偏差。
- 或者,您可以修改錯誤分類的成本,如之前的回復中所述,再次防止偏差。
- 另一個保障是用所謂的平衡精度代替精度。它被定義為類特定精度的算術平均值,在哪裡和分別表示在正例和負例上獲得的準確度。如果分類器在任一類上的表現都一樣好,則該術語會降低到常規準確度(即,正確預測的數量除以預測的總數)。相反,如果僅因為分類器利用了不平衡的測試集,傳統的準確度高於偶然性,那麼平衡的準確度將酌情下降到偶然性(見下圖)。
我建議至少結合考慮上述兩種方法。例如,您可以對少數類進行過採樣,以防止您的分類器偏向多數類。在此之後,在評估分類器的性能時,您可以用平衡的準確度代替準確度。這兩種方法是互補的。當一起應用時,它們應該可以幫助您防止最初的問題並避免由此產生的錯誤結論。
如果您想對此進行跟進,我很樂意發布一些額外的文獻參考。