【发布时间】: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