【问题标题】:About how to balance imbalanced data关于如何平衡不平衡的数据
【发布时间】:2016-12-31 06:09:10
【问题描述】:

当我在 Scikit learn 中阅读决策树时,我发现:

在训练之前平衡您的数据集,以防止树被 偏向于占主导地位的阶级。类平衡可以 通过从每个类中抽取相同数量的样本来完成,或 最好通过标准化样本权重的总和 (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 learn 中哪种方式更好,第二种方式是什么意思?谁能帮我澄清一下?

【问题讨论】:

    标签: machine-learning scikit-learn imbalanced-data


    【解决方案1】:

    有很多方法可以平衡数据集:

    1. 从代表性不足的类中过度采样(抽取更多样本而不进行替换)
    2. 从过度代表的类中进行欠采样(在有/没有替换的情况下抽取更少的样本)
    3. 针对代表性不足的班级基于邻域的虚构数据(搜索 SMOTE)
    4. 基于权重的方法:虽然您需要对此进行调整,但大致可以从选择权重开始,使weight*number of observations 对于代表不足和代表过多的组均相等。

    【讨论】:

    • 非常感谢。代表不足和过度呈现的组是否意味着样本较少和样本较多?
    • 我对你的前三种方式感到困惑,你为什么不需要增加重量?第四种方法,为什么我们可以调整权重?我一直认为权重*观察次数=不同的组,这是我们需要始终遵循的约束。
    • 尝试了解为什么存在权重以及它如何影响分类中的目标函数。你会更好地了解体重。不平衡数据的问题是过度表示的数据占主导地位。随着过度/不足采样/SMOTE 数据分布变得相同(想想 100:1 -> 10:1 或 5:1)。所以你不再需要权重
    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 2019-06-18
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2022-07-17
    • 1970-01-01
    相关资源
    最近更新 更多