首页 文章

关于如何 balancer 不 balancer 数据

提问于
浏览
1

当我在Scikit中阅读Decision Tree时,我发现:

在训练之前 balancer 数据集,以防止树偏向主导的类 . 可以通过从每个类中采样相等数量的样本来完成类 balancer ,或者优选地通过将每个类的样本权重(sample_weight)的总和归一化为相同的值来完成 .

在链接中:http://scikit-learn.org/stable/modules/tree.html

我很迷惑 .

(1)

可以通过从每个类中抽取相同数量的样本来完成类 balancer

如果我喜欢这样,我应该为每个类中的每个样本添加适当的样本权重(或添加类样本......) .

例如,如果我有两个类:A和B,包含样本数

A:100 B:10000

我可以为每个输入10000个样本并设置权重:

输入样品A:10000,输入样品B:10000重量A:0.01,重量B:1.0

(2)

但它仍然说:

优选地,通过将每个类的样本权重(sample_weight)的总和归一化为相同的值

我完全被它弄糊涂了 . 这是否意味着我应该输入100个A样本和10000个B样本然后设置权重:

输入样品A:100,输入样品B:10000重量A:1.0,重量B:1.0

但似乎我没有采取任何措施来 balancer 不 balancer 的数据 .

哪种方式更好,Scikit第二种方式的含义是什么?任何人都可以帮我澄清一下吗?

1 回答

  • 1

    balancer 数据集的方法有很多种:

    • 过度采样(从代码不足的类中抽取更多样本而无需替换)

    • 从过度代表的类中进行欠采样(使用/不使用替换绘制较少的样本)

    • 基于邻域的未充分代表类的伪造数据(搜索SMOTE)

    • 基于权重的方法:虽然您需要对此进行调整,但粗略地说,您可以从选择权重开始,这使得 weight*number of observations 在表示和过度表示的组下均相等 .

相关问题