不平衡类别F1分数的意义

          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时我们可以真正信任这个模型(这就是精确度指标的含义),但我们真的可以吗?因为我们知道它实际上没有学到任何东西。

所以,这就是不平衡数据的问题,我们的成本分布也会变得倾斜,这阻碍了模型进行严格的学习。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注