当我在Scikit中阅读Decision Tree时,我发现:
在训练前平衡数据集,以防止树木出现 偏向于占主导地位的阶级。类平衡可以 通过从每个类中抽取相同数量的样本来完成,或 优选地,通过归一化样本权重的总和 (sample_weight)为每个类赋予相同的值。
在链接中:http://scikit-learn.org/stable/modules/tree.html
我很困惑。
(1)
可以通过对相同数量的样本进行采样来完成类平衡 来自每个班级
如果我喜欢这样,我应该为每个类中的每个样本添加适当的样本权重(或添加类样本......)。
例如,如果我有两个类: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
但似乎我没有采取任何措施来平衡不平衡的数据。
哪种方式更好,Scikit第二种方式的含义是什么?任何人都可以帮我澄清一下吗?
答案 0 :(得分:1)
有很多方法可以平衡数据集:
weight*number of observations
在代表和代表过多的群组中都相等。