R
如何使隨機森林樹投票十進製而不是二進制
我的問題是關於二元分類,比如區分好客戶和壞客戶,而不是回歸或非二元分類。在這種情況下,隨機森林是分類樹的集合。對於每次觀察,每棵樹都投一個“是”或“否”,所有樹的平均投票就是最終的森林概率。
我的問題是關於修改底層樹的行為:我們如何修改 randomForest 函數(R 的 randomForest 包),以便每棵樹投票一個十進製而不是二進制是/否。為了更好地理解我所說的十進制,讓我們考慮一下決策樹是如何工作的。
一棵成熟的決策樹在其終端節點中有 1 個好實例或 1 個壞實例。假設我將終端節點大小限制為 100。那麼終端節點將如下所示:
節點 1 = 80 壞,20 好
Node2 = 51 壞,49 好
Node3 = 10 壞,90 好
請注意,即使 Node1 和 Node2 投票“差”,它們的“差的強度”也大不相同。這就是我所追求的。不是讓他們產生 1 或 0(這是默認行為),而是可以修改 R 包,以便他們投票 80/100、51/100、10/100 等?
這是一個微妙的點,因軟件而異。我知道有兩種主要方法:
- 二進制葉子 - 每個葉子都以多數票投票。這就是
randomForest
R 中的工作原理,即使在使用時也是如此predict(..., type="prob")
- 比例葉子 - 每個葉子返回屬於每個類的訓練樣本的比例。這是如何
sklearn.ensemble.RandomForestClassifier.predict_proba
工作的。在另一個答案中,@usεr11852 指出 R 的ranger
包也提供了這個功能。令人高興的是,我可以證明,從我有限的使用情況來看,ranger
它也比randomForest
.我不認為有一種簡單的方法可以
randomForest
使用比例葉法,因為 R 軟件實際上只是 C 和 FORTRAN 程序的一個掛鉤。除非你喜歡修改別人的代碼,否則你要么自己寫,要么找其他軟件實現。