R中RandomForest包中的RandomForest函数中的参数'classwt'代表啥?

Posted

技术标签:

【中文标题】R中RandomForest包中的RandomForest函数中的参数\'classwt\'代表啥?【英文标题】:What does the parameter 'classwt' in RandomForest function in RandomForest package in R stand for?R中RandomForest包中的RandomForest函数中的参数'classwt'代表什么? 【发布时间】:2012-04-24 03:44:26 【问题描述】:

randomforest::randomforest() 的帮助页面说:

“classwt - 类的先验值。不需要加起来。忽略回归。”

当您有大量不平衡数据时,可以设置classwt 参数帮助,即。类的先验差异很大?

当在具有 3 个类且先验向量等于 (p1,p2,p3) 的数据集上训练模型时,我应该如何设置 classwt,并且在测试集中先验是 (q1,q2,q3)?

【问题讨论】:

我不确定你的第二个问题,但classwt 我相信在从你的数据中采样时使用,这样每棵树的每个样本都是从具有这些概率的类中抽取的(在标准化之后)。 strata 产生与 classwt 相同的性能并且更易于控制,请查看此指南:stats.stackexchange.com/questions/157714/… @joran 这是你所描述的分层。 Classwt 用于在寻找节点分裂的最佳断点时对样本进行加权,并在训练期间定义节点预测。 愿我的老 cmets 四年后也困扰着我 :) 【参考方案1】:

当您有大量不平衡数据时设置 classwt 参数是否有帮助 - 类的先验差异很大?

是的,设置 classwt 的值对于不平衡的数据集可能很有​​用。我同意 joran 的观点,即这些值在采样训练数据的概率中进行了转换(根据 Breiman 在其原始文章中的论点)。

在具有 3 个类的训练数据集中,您的先验向量等于 (p1,p2,p3),而在测试集中的先验向量为 (q1,q2,q3),如何设置 classwt?

对于培训,您可以简单地指定

rf <- randomForest(x=x, y=y, classwt=c(p1,p2,p3))

对于测试集,不能使用先验:1)在randomForest包的predict方法中没有这样的选项; 2) 权重只对模型的训练有意义,对预测没有意义。

【讨论】:

据我了解,先验 (p1,p2,p3) 是一般人群的特征,而不是特定的训练数据集。如果我想预测测试数据集中的类,并且我知道集合中的类概率是 (q1,q2,q3) 而不是设置 classwt=c(q1,q2,q3) 应该有助于随机森林以更好的方式探索训练空间. 不,这些类权重仅针对训练集。例如,如果你有平衡的训练集,一般不需要使用classwt参数。但同时你可能会有不平衡的测试集,我希望在这种情况下改变类权重不会改善测试集的预测。换句话说,使用classwt,您可以提高其中一个类别的预测准确度,同时降低另一个类别的预测准确度。例如,您可以稍微使用此参数并查看 OOB 集预测统计信息。

以上是关于R中RandomForest包中的RandomForest函数中的参数'classwt'代表啥?的主要内容,如果未能解决你的问题,请参考以下文章

R 中 h2o 包中的 predict.H2OModel() 是不是为 h2o.randomForest() 模型提供 OOB 预测?

在 randomForest 包中绘制 500 棵树中的一棵

R ranger 包中的预测概率

在 R 的 randomForest 包中,因子是不是必须明确标记为因子?

并行化 rfcv() 函数以在 randomForest 包中进行特征选择

使用 randomForest 包的海量数据集