【问题标题】:Augmenting classification model to prediction "Unknown" instead of a wrong classfication用于预测“未知”而不是错误分类的 Augmentin 分类模型
【发布时间】:2020-11-09 00:58:37
【问题描述】:

我正在研究一个多类分类问题,它包含一些类不平衡(100 个类,其中少数只有 1 或 2 个关联样本)。

我已经能够获得一个 LinearSVC (& CalibratedClassifierCV) 模型以达到约 98% 的准确度,这很棒。

问题在于,对于所有错误分类的预测,企业都会蒙受金钱损失。也就是说,对于每个错误分类 - 我们将遭受 1,000 美元的损失。对此的解决方案是将数据点分类为“未知”而不是完全错误分类(然后这些未知数可以人工分类,每个“未知”预测的成本约为 10 美元)。显然,这比 1,000 美元/错误分类损失要便宜。

对于我是否会加入这个“未知”类有什么建议吗?

我目前有:

svm = LinearSCV()
clf = CalibratedClassifierCV(svm, cv=3)


# fit model
clf.fit(X_train, y_train)

# get probabilities for each decision

decision_probabilities = clf.predict_proba(X_test)

# get the confidence for the highest class:
confidence = [np.amax(x) for x in decision_probabilities]

我计划使用 CalibratedClassifierCV 模型中的 predict_proba 方法,对于任何低于阈值(尚未确定)的最大概率,我会将该样本分类为“未知”而不是概率实际上是相关联的。

问题是,当我检查正确预测时,置信度值低至 30%。同样,也有不正确的预测具有高达 95% 的置信度值。如果我只是创建一个阈值,比如说 50%,我的准确率会显着下降,我会有相当多的“未知”类(损失),还有一些错误分类(甚至更大的损失)。

有没有办法在这个后端分类(预测类与“未知”类)中加入另一个损失函数?

任何帮助将不胜感激!

【问题讨论】:

    标签: python machine-learning classification multilabel-classification document-classification


    【解决方案1】:

    立即提出一些建议:

    1. 准确度不是评估不平衡数据集的正确指标。例如,如果 90% 的样本属于 1 个类别,则 90% 的准确率是由始终预测哑类的哑模型实现的。对于这种情况,精度和召回率通常是更好的指标。在两者之间进行选择通常是一项业务决策。
    2. 考虑到输入信号,可能很难超过 98%,尤其是对于某些类,您将有两个样本。您可以做的是将少数群体分组在一起并给他们一个标签,例如“其他”。通过这种方式,模型有望有足够的样本来了解这些样本与所有其他类不同,并将它们归类为“其他”
    3. 当您尝试用 ML 替换手动业务流程时,通常不会完全消除人工干预。目标是在模型表现良好的案例/类/输入空间上使用模型,其余部分使用手动过程。一种方法是使用“其他”标签。一旦您的模型预测了“其他”,人类就可以手动对这些样本进行分类。另一种方法是找到预测概率的阈值,超过该阈值模型具有较高的准确性和足够的人口覆盖率。例如,假设只要输出概率高于 0.70,您就有 100%(通常为 90-100%)的准确度。如果这涵盖了足够多的输入总体,则仅在此类情况下使用 ML 模型。其他一切都遵循手动流程。

    【讨论】:

      猜你喜欢
      • 2020-04-16
      • 2021-11-30
      • 2019-04-19
      • 2016-09-04
      • 2019-02-24
      • 2014-06-04
      • 1970-01-01
      • 2018-10-23
      • 2019-03-01
      相关资源
      最近更新 更多