也许这太啰嗦了。关于sklearn的随机森林的简单问题:
对于真/假分类问题,在sklearn的随机森林中是否有一种方法可以指定用于训练每棵树的样本大小,以及真假观察的比例?
更多详情如下:
在随机森林的R实现中,名为randomForest,有一个选项sampsize()
。这允许您根据结果平衡用于训练每棵树的样本。
例如,如果您试图预测结果是真还是假,并且训练集中90%的结果都是假的,您可以设置sampsize(500, 500)
。这意味着每棵树将在训练集中随机抽样(替换)进行训练,其中500真实和500错误观察。在这些情况下,我发现模型在使用50%截止值时可以更好地预测真实结果,从而产生更高的kappas。
在sklearn实现中似乎没有这样的选项。
答案 0 :(得分:3)
在版本0.16-dev中,您现在可以使用class_weight="auto"
来接近您想要做的事情。这仍将使用所有样本,但它会重新加权,以便类平衡。
答案 1 :(得分:2)
阅读完文档后,我认为答案肯定是否定的。感谢任何增加功能的人。如上所述,R包randomForest包含此功能。
答案 2 :(得分:0)
据我所知,scikit-learn森林采用自举,即每个树训练的样本集大小总是大小相同,并通过随机抽样替换原始训练集。
假设你有足够多的训练样本,为什么不平衡它本身以保持50/50阳性/阴性样本,你将达到预期的效果。 scikit-learn为此提供了功能。