machine-learning - 如何计算随机分类器的准确率分数?

标签 machine-learning classification evaluation

例如,数据集包含"is"类的 60% 实例和“否”类的 30% 实例。 在这种情况下,随机分类器的精度、召回率分别为

精度=60%

召回率=50%

那么,在这种情况下随机分类器的准确率是多少?

最佳答案

这里需要谨慎一些,因为随机分类器的定义有些不明确;这在数据不平衡的情况下得到了最好的说明。

根据定义,二元分类器的准确度为

acc = P(class=0) * P(prediction=0) + P(class=1) * P(prediction=1)

哪里P代表概率。

事实上,如果我们坚持随机二元分类器的直观定义为给出

P(prediction=0) = P(prediction=1) = 0.5

那么,无论类别分布如何(即 P(class=0)P(class=1) 的值),通过上述公式计算的准确度始终为 0.5。

但是,在这个定义中,有一个隐含的假设,即我们的类是平衡的,每个类都包含我们数据集的 50%。

这种假设(以及相应的直觉)在类别不平衡的情况下会失效:如果我们有一个数据集,其中 90% 的样本属于 0 类(即 P(class=0)=0.9 ),那么使用上述随机二元分类器的定义就没有多大意义;相反,我们应该使用类分布本身的百分比作为随机分类器的概率,即:

P(prediction=0) = P(class=0) = 0.9
P(prediction=1) = P(class=1) = 0.1

现在,将这些值代入定义准确度的公式中,我们得到:

acc = P(class=0) * P(prediction=0) + P(class=1) * P(prediction=1)
    = (0.9 * 0.9) + (0.1 * 0.1)
    = 0.82

这与 0.5 的初始值相差甚远...

正如我已经说过的,据我所知,文献中没有随机分类器的明确定义。 Sometimes “朴素”随机分类器(总是掷一枚公平硬币)被称为“随机猜测”分类器,而我所描述的被称为“加权猜测”分类器,但仍然是这样远未被接受为标准......

这里的底线如下:由于使用随机分类器的主要原因是作为基线,因此仅在相对平衡数据集中这样做才有意义。在 60-40 平衡的情况下,结果是 0.52,这与 0.5 的天真值相差不远;但对于高度不平衡的数据集(例如 90-10),随机分类器作为基线的有用性本身已不复存在,因为正确的基线已变为“始终预测多数类”,这里将给出 90% 的准确率,而随机分类器的准确率仅为 82%(更不用说朴素方法的 50% 准确率了)...

关于machine-learning - 如何计算随机分类器的准确率分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53182709/

相关文章:

php - 什么会导致 isset() 和 in_array() 都错误地计算?

python:如何从 feature_importances 中获取真实的特征名称

algorithm - 大数据集中文本重复检测的高效算法

git - 机器学习模型的版本控制(约250 MB)

python - 使用Python提取医疗信息

java - 为简单阈值分类器寻找多类阈值

python - 图片分类: Best approach to training the model

javascript - 如何在javascript中终止父函数的执行?

python-3.x - 如何在 Python 中使用 Keras 使用 scikit-learn 评估指标函数?

python - XGBoost 预测输出不是二进制的?