我的理解是随机森林随机选择mtry变量来构建每个决策树。因此,如果 mtry=ncol/3 那么每个变量将平均用于 1/3 的树中。2/3 的树不会使用它们。
但是,如果我知道单个变量可能非常重要,那么手动增加在每棵树中选择该变量的概率会更好吗?R中的randomForest包是否可行?
我的理解是随机森林随机选择mtry变量来构建每个决策树。因此,如果 mtry=ncol/3 那么每个变量将平均用于 1/3 的树中。2/3 的树不会使用它们。
但是,如果我知道单个变量可能非常重要,那么手动增加在每棵树中选择该变量的概率会更好吗?R中的randomForest包是否可行?
注意mtry是在每次拆分时随机抽样作为候选者的变量数。并从这些候选者中选出最好的来执行分裂。所以你说的比例不完全满足。更重要的变量出现的频率更高,而不太重要的变量出现的频率更低。所以如果这个变量真的很重要,那么它很有可能会在树上被采摘,你不需要手动修正。但有时(很少)需要在回归中强制存在一些变量(不管其可能的重要性)。据我所知,R 包随机森林不支持这种可能性。但是,如果这个变量与其他变量没有相关性,您可以将此变量作为单项进行普通回归,然后对这个普通回归的残差运行随机森林回归。如果您仍想更正选择预先指定变量的可能性,则可以选择在下次编译时修改源代码。
自 2015 年 6 月以来,R-CRAN 上一种新的有前途的 RF 算法称为“游侠”具有此功能。使用split.select.weights 对其进行调整:“权重介于 0 和 1 之间的数字向量,表示选择用于拆分的变量的概率。”