precision recall f1-score supportClass 0 1.00 0.98 0.99 125000Class 1 0.33 0.84 0.47 1500
大家好,
在这个模型中,对于少数类别(类别1)的预测,F1分数表现得不是很好。
我的想法是,如果模型对类别0的预测如此出色,为什么我们不把问题反过来,预测类别0呢?因为只有两个类别,如果不是类别0,就是类别1。
换句话说,如果模型能识别某个数据为类别0,那么它肯定不是类别1(特别是当类别0的精确度为1时)。这意味着模型仍然表现良好。
这样做行得通吗?为什么不行呢?
先行感谢大家。
回答:
你是在凭直觉认为模型真正学会了类别0。在这种数据不平衡的情况下,这些分数(高召回率/高精确度)可能有些决定性,意义较小。
让我举个例子。如果你让一个盲人来分类红苹果和橙苹果(你的数据例如有99个红苹果和1个绿苹果)。现在当你给他一个红苹果(他不知道是什么颜色)时,他只是随机说“红”,你很高兴并给了他奖励(在机器学习的角度来看,产生了较低的损失)。现在他知道说“红”会得到奖励,所以他利用这种行为,总是说“红”(尽管对于一个“绿”苹果他会错过,但这并不会影响他得到的所有奖励)。现在,如果你不知道这个人是盲人,你可能会说“我可以用他作为苹果分类器,因为他非常了解‘红’苹果,我可以在他不是‘红’苹果时反转他的分类”。但你知道这是个盲人,他并不知道一个“红”苹果是否真的是“红”苹果。
我们可以这样看待我们的模型,当我们给它一个任务时,它的任务是减少损失,所以为了做到这一点,它会利用任何和每一个漏洞如果它有机会。因此,当它得到不平衡的数据时,它知道总是预测类别0(多数类别)会减少损失,所以这就是它所做的。如果你从几何角度考虑,你有这些不同颜色的点(不同类别),现在你有一条线来分隔它们(决策边界),如果你把线画得远一些,并说在右边的点(数据集的所有点所在的地方)是类别0(多数类别),而左边的所有点是类别1(少数类别)。那么这个模型也会为类别0产生高精确度的分数,这告诉我们当它预测类别0时我们可以真正信任这个模型(这就是精确度指标的含义),但我们真的可以吗?因为我们知道它实际上没有学到任何东西。
所以,这就是不平衡数据的问题,我们的成本分布也会变得倾斜,这阻碍了模型进行严格的学习。