不平衡和有序分类的评估指标

数据挖掘 scikit-学习 阶级失衡 多类分类 评估 模型评估
2022-03-01 01:08:13

我正在寻找一个可以很好地处理不平衡和有序多类数据集的 ML 评估指标:

想象一下,您想预测具有 4 个严重程度的疾病的严重程度,其中 1 表示轻度,4 表示更差的结果。现在,这个数据集实际上将有绝大多数患者在温和区(1 或 2 类),而在 3 和 4 类中则更少。(不平衡/偏斜数据集)。

现在在示例中,将 4 级预测为 1 级的分类器应该比将 4 级预测为 3 级等的分类器受到更多的惩罚(序数类)。

如果我使用 MCC、Cohen's K 等。我将能够解释数据集中的不平衡,但不能解释其类的序数性质。您是否知道是否有一个指标可以同时考虑两者,或者是否有办法修改/组合指标以便将数据集的两个方面都考虑在内?(如果可能的话,可以使用 Python,但也可以使用其他语言或数学解释)

2个回答

我会考虑使用回归评估度量,例如 RMSE:

  • 它考虑了值的序数性质,因为它基于预测值和真实值之间的误差。这意味着 2 到 4 之间的错误比 2 到 3 之间的错误受到的惩罚更大。
  • 它还会考虑不平衡,但仅限于 1,2 和 3,4 类之间的错误更可能很大,因此它可能并不完美。

如果需要更多的细化,一个解决方案是定义错误的自定义度量,即定义每个可能错误的惩罚。例如:

  • 错误 1->2、2->1、2->3、3->4 计为 1(小错误)
  • 错误 1->3、2->4、3->2、4->3 计为 5(中度错误)
  • 错误 1->4、4->2、3->1 计为 10(严重错误)
  • 错误 4->1 计为 20(严重错误)

上面我的符号“x->y”表示真值 x 被错误地预测为 y

当然,我正在编造这些值,这只是为了表明可以根据任务的需要尽可能细粒度。

Cohens Kappa 有多种变体,旨在应用于序数音阶。Sklearn cohen_kappa 有线性和二次选项。