隨機森林是不平衡數據分類的好選擇嗎?[關閉]
儘管有類似的和其他不斷增加的數據可變性方法,但隨機森林“作為一種算法”是否可以被認為是不平衡數據分類的好選擇?
注意:這篇文章相當古老,可能不正確。僅將其用作起點,而不是權威答案。
隨機森林模型建立在決策樹之上,決策樹對類不平衡很敏感。每棵樹都建立在一個“袋子”上,每個袋子都是來自數據的均勻隨機樣本(有放回)。因此,每棵樹都會因類別不平衡而偏向相同的方向和幅度(平均而言)。
然而,有幾種技術可以減輕分類任務中的不平衡。
其中一些是通用的,適用於各種情況。搜索
unbalanced-classes
此 SE 網站上的class-imbalance
標籤,以及Data Science SE 網站上的標籤。此外,隨機森林至少適用於兩種類權重。第一種技術是加權樹分裂標準(有關其工作原理的信息,請參閱https://datascience.stackexchange.com/a/56260/1156)。另一種技術是在自舉採樣過程中對數據點進行過採樣或欠採樣。
在 Python 中,加權樹分裂是在Scikit-learn類中實現的
RandomForestClassifier
,作為class_weight
參數。加權引導採樣在Imbalanced-learn類中實現BalancedRandomForestClassifier
。請注意,Imbalanced-learnBalancedRandomForestClassifier
也支持與class_weight
Scikit-learn 相同的參數RandomForestClassifier
。在 R 中,這兩種技術都在Ranger中實現,在 main
ranger
函數中,作為class.weights
、case.weights
和sample.fraction
參數。有關使用示例,請參見https://stats.stackexchange.com/a/287849/36229 ;關於同一問題的其他答案中也有有用的信息。顯然,在類不平衡的每個極端情況下,您可能需要調整最小節點大小或其他“詳細”參數以使模型完全正常工作。參見,例如https://stackoverflow.com/a/8704882/2954547。