可以默认输出类吗?

数据挖掘 分类 预测建模 多标签分类
2022-03-14 22:48:29

在我的多类分类用例中,我的数据分布如下: 在此处输入图像描述

问这个可能太傻了(而且可能是严重错误),但是是否有规定将一个 o/p 类默认为一个安全的值,而不是预测一个完全错误的结果。

前任。假设这样一种情况,其中一封传入的电子邮件本来是发给“硬件”部门的,但预计是发给“公司领导”部门的,因此会发送给公司的所有高级成员。在这种情况下,由于整个输出类的预测准确度低于 20% 的准确度,我想将整个类默认为“服务台”组,并让他们手动对其进行排序。

希望我把我的问题说清楚了(也可能令人困惑!)。如果需要任何澄清,请告诉我。我很乐意修改措辞。

谢谢。:)

2个回答

我认为没有标准的方法可以做到这一点。但是,如果您使用概率模型,则可以将预测概率与每个类别的阈值一起使用,以仅允许您认为足够确定的分类。然后,如果概率最高的类不满足阈值,您可以将其设置为默认类。

我用 sklearn 和 numpy 对其进行了测试,这可能是一种方法:

# Train probabilistic classifier
clf.fit(X_train, y_train)

# Get probabilities
probas = clf.predict_proba(X_test)

# Get the class with highest probability
highest_proba_class = np.argmax(probas, axis=1)

# Set different thresholds per class
thresholds = np.array([0.9, 0.2, 0.5])

# Init our prediction array
predictions = np.zeros_like(highest_proba_class)

# Set a default class to set if we don't reach threshold
default_class = 2

# Loop over predictions
for idx, highest_class in enumerate(highest_proba_class):

    # Threshold check if threshold was met, otherwise set default
    if probas[idx][highest_class] >= thresholds[highest_class]:
        predictions[idx] = highest_class
    else:
        predictions[idx] = default_class

python 中的 scikitlearn 中有一个有趣的模块,它可以为您尝试做的事情提供很多帮助:

scikitlearn 中的虚拟分类器

非常易于使用,您可以选择不同的方法。