我有一个类不平衡问题,并且正在使用scikit-learn(> = 0.16)中的实现进行加权随机森林实验。

我注意到,该实现在树构造函数中使用class_weight参数,在fit方法中采用sample_weight参数来帮助解决类不平衡问题。尽管这两个决定最终的权重,但两者似乎相乘。

我无法理解以下内容:

  • 在树的构造/训练/预测的哪些阶段使用这些权重?我看过一些有关加权树的论文,但是我不确定scikit会实现什么。
  • class_weight和sample_weight之间到底有什么区别?
  • 最佳答案

    RandomForests建立在很好的树上。检查树木如何使用样本权重:

  • User guide on decision trees-准确说明使用了哪种算法
  • Decision tree API-解释树木如何使用sample_weight(如您所确定的,对于随机森林,它是class_weight和sample_weight的乘积)。

  • 至于class_weightsample_weight之间的区别:可以简单地通过它们的数据类型的性质来确定它们。 sample_weight是长度为n_samples的一维数组,为用于训练的每个示例分配显式权重。 class_weight是每个类别的字典,具有该类别的统一权重(例如{1:.9, 2:.5, 3:.01}),或者是一个字符串,告诉sklearn如何自动确定该字典。

    因此,给定示例的训练权重是它的显式名称sample_weight(如果未提供1,则为sample_weight)和class_weight(如果未提供1,则为class_weight)的乘积。

    关于python - scikit-learn:随机森林的class_weight和sample_weight参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30805192/

    10-11 20:30