【问题标题】:Why classification models don't work on class imbalanced setting?为什么分类模型不适用于类不平衡设置?
【发布时间】:2018-07-18 07:38:07
【问题描述】:

有很多关于如何解决类不平衡问题的帖子和资源,即对少数类进行过度采样或对多数类进行欠采样。

我也明白,使用准确性来评估模型在不平衡问题上的表现是错误的。

但是,我并没有找到很多资源首先讨论为什么 ML 模型会在类不平衡问题中失败。仅仅是因为损失函数通常是所有数据点的总和,所以模型会倾向于更强调多数类数据而不是少数类数据?

其次,在实际应用中,例如欺诈检测或点击预测(发生类别不平衡的情况),为什么通过训练集的过(欠)采样来改变分布是一件好事?难道我们不希望分类器反映真实的分布(本质上是不平衡的)吗?假设我有一个经过训练的逻辑回归模型来预测欺诈,假设欺诈率为 2%。对欺诈事件进行过采样本质上告诉模型欺诈率不是 2%,而是 50%(比如说)。这是好事吗?

总结一下。两个问题:

  1. 为什么 ML 模型会在类不平衡设置中失败?是不是因为损失函数通常是由单个数据点的损失之和组成的?

  2. 为什么过(欠)采样(从根本上改变了模型看待问题的方式)是一种好方法?为什么不让模型真实地反映类的分布呢?

【问题讨论】:

    标签: machine-learning statistics classification


    【解决方案1】:

    TL;DR:类不平衡的“诅咒”是一种神话,仅与某些类型的问题相关。

    1. 并非所有 ML 模型在类不平衡设置中都失败。大多数概率模型不会受到类不平衡的严重影响。当我们切换到非概率或多类预测时,通常会出现问题。

    逻辑回归(及其泛化 - 神经网络)中,类不平衡对截距有很大影响,但对斜率系数的影响很小。直观地说,当我们改变类的先验概率时,二元逻辑回归预测的优势比log(p(y=1)/p(y=0)) = a+x*b会发生固定的变化,这种影响被截距a捕获。

    决策树(及其泛化 - 随机森林和梯度提升树)中,类不平衡会影响叶子杂质指标,但这种影响对于所有候选分裂大致相等,因此通常不会影响分裂的选择很多(the details)。

    另一方面,像 SVM 这样的非概率模型可能会受到类不平衡的严重影响。 SVM 以这样一种方式学习其分离超平面,即大致相同数量的正负样本(支持观察)位于边界或错误一侧。因此,重采样可以显着改变这些数字和边界的位置。

    当我们将概率模型用于二元分类时,一切正常:在训练时,模型不太依赖于不平衡,而对于测试,我们可以使用不平衡不敏感的指标,例如ROC AUC,它依赖于预测的类概率,而不是“硬”离散分类。

    然而,这些指标不能轻易推广到多类分类,我们通常利用简单的准确度来评估多类问题。准确率已经知道类别不平衡的问题:它基于硬分类,这可能会完全忽略稀有类别。大多数从业者转向过采样时就是这种情况。但是,如果您坚持概率预测并使用 log loss(也称为交叉熵)来衡量性能,您仍然可以在类别不平衡中幸存下来。

    1. 当您不希望进行概率分类时,过采样非常有用。在这种情况下,“类的分布”是无关紧要的。

    想象一个应用程序,当您不需要图片上有猫的概率时,您只想知道这张图片是否更相似猫的图片而不是狗的图片.在这种情况下,可能希望猫和狗拥有相同数量的“投票”,即使在原始训练样本中猫占多数。

    在其他应用程序(如欺诈检测、点击预测或我最喜欢的信用评分)中,您真正需要的不是“硬”分类,而是排名:哪些客户更有可能 欺骗、点击或默认其他人?在这种情况下,样本是否不平衡并不重要,因为截止值通常是手动设置的(出于经济考虑,例如成本分析)。然而,在这样的应用程序中,预测欺诈(或点击或默认)的“真实”概率可能会有所帮助,因此不需要上采样。

    【讨论】:

    • 谢谢。这是非常有帮助和有见地的(至少对我来说)。
    • 当你预测概率并且有类不平衡时,为什么对数损失很好?
    • 因为如果你将概率乘以任何固定数字,它的梯度不会改变,所以模型继续训练得很好。想象一下,对于某些观察,真实标签的预测概率是p(w),其中w 是模型的参数,那么log loss 是log(p(w))。如果乘以 100,则 log loss 为log(100*p(w))=log(100)+log(p(w)),当我们将其与w 进行微分时,第一部分无关紧要。因此,无论类别概率如何缩放,对数损失参数都将以相同的方式更新。
    【解决方案2】:

    我用一个例子来解释你的问题:

    如果存在由以下交易组成的数据集:

    1. 10000正品
    2. 10 欺诈

    分类器将倾向于将欺诈交易分类为真实交易。

    假设机器学习算法有两个可能的输出如下:

    模型 1

    分类交易:

    1. 10000 个真品中的 10 个是欺诈性的
    2. 十分之七是真品

    模型 2

    分类交易:

    1. 10000 人中有 100 人是真品为欺诈
    2. 十分之二的欺诈行为是真品

    如果分类器的性能由错误次数决定:

    模型 1:17 个错误。

    模型 2:102 个错误。

    模型 1 更好。

    但是,由于我们希望尽量减少欺诈发生的次数:

    模型 1:7 个错误。

    模型 2:2 个错误。

    模型 2 更好。

    回答问题 1一般的机器学习算法只会挑选 模型 1 模型 2,这是一个问题。在实践中,这意味着我们将让 尽管我们可以进行很多欺诈交易 使用模型 2 阻止了他们。

    欠采样

    通过欠采样,我们可以冒险删除一些更具代表性的多数类实例,从而丢弃有用的信息。

    这可以说明如下:

    绿线:我们希望拥有的理想决策边界。 蓝色是实际结果。

    左图:仅应用通用机器学习算法没有欠采样的结果。

    右图:仅应用通用机器学习算法欠采样的结果。

    过采样

    通过过采样,仅复制少数类可能会导致分类器过度拟合几个示例,如下所示:

    左图:仅应用通用机器学习算法没有欠采样的结果。

    右图:仅应用通用机器学习算法过采样的结果。

    回答问题2:在欠采样中,我们对负类进行了欠采样,但去除了一些信息量大的负类,导致了蓝色决策边界 倾斜,导致一些负类被归类为 正类错误。

    在过采样中,粗正号表示存在多个重复副本 该数据实例的。然后机器学习算法会看到这些 案例很多次,因此设计过拟合这些例子 具体来说,就是上面的蓝线边界。

    更多信息请见this

    【讨论】:

    • 感谢图片说明。
    猜你喜欢
    • 2012-01-22
    • 2020-05-05
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多