这是一个一般性问题,在这里多次被间接问到,但缺少一个权威性的答案。对此有详细的答案将是很棒的参考。
准确度(正确分类在所有分类中所占的比例)是非常简单且非常“直观”的度量,但是对于不平衡的数据而言可能不是一个很好的度量。为什么我们的直觉会误导我们,并且此措施还有其他问题?
这是一个一般性问题,在这里多次被间接问到,但缺少一个权威性的答案。对此有详细的答案将是很棒的参考。
准确度(正确分类在所有分类中所占的比例)是非常简单且非常“直观”的度量,但是对于不平衡的数据而言可能不是一个很好的度量。为什么我们的直觉会误导我们,并且此措施还有其他问题?
Answers:
其他大多数答案都集中在不平衡类的示例上。是的,这很重要。但是,我认为即使使用平衡的类,准确性也存在问题。
弗兰克·哈雷尔(Frank Harrell)在他的博客上写过:分类与预测以及分类准确性和其他不连续的不正确准确性评分规则所造成的损害。
本质上,他的观点是,当您为新样本的每个类别输出概率时,练习的统计组成部分结束。映射这些预测概率以一个0-1的分类,通过选择超出要划分一个新的观察为1比0的阈值不是的一部分统计任何更。它是决策组件的一部分。在这里,您需要模型的概率输出-还需要考虑以下因素:
根据决定的结果,您将使用不同的阈值来做出决定。如果采取的是侵入性手术,则与推荐使用两种阿司匹林的情况相比,将患者分类为患有某种疾病的可能性更高。或者,你甚至可能有3个不同的决定,尽管只有2类(患病与健康):“回家,不用担心”与“运行另一个测试,因为一个我们尚无定论”与“立即运行” 。
评估预测概率的正确方法是不将它们与阈值进行比较,基于阈值将它们映射到,然后评估转换后的分类。相反,应该使用适当的计分规则。这些是将预测的概率和相应的观察结果映射到损失值的损失函数,期望值由真实概率最小化。想法是,我们将对多个(最佳:许多)观察到的结果以及相应的预测班级成员资格所评估的评分规则的平均值作为对评分规则预期的估计。(0 ,1 )(0 ,1 )(p ,1 - p )
请注意,此处的“正确”具有精确定义的含义-有不正确的评分规则,正确的评分规则,最后是严格正确的评分规则。这样的评分规则是预测密度和结果的损失函数。适当的评分规则是在预测密度为真实密度的情况下将期望最小化的评分规则。严格正确的评分规则是仅在预测密度为真实密度的情况下才将期望最小化的评分规则。
正如弗兰克·哈雷尔(Frank Harrell)指出的那样,准确性是不正确的评分规则。(更确切地说,准确性甚至根本不是一个评分规则:请参见我对“准确性是否是二进制分类设置中不正确的评分规则?”的回答)。例如,如果我们根本没有预测变量而只是一个倒数具有概率的不公平硬币。如果我们将所有分类都归为第一类,并且完全忽略任何结果可能属于第二类的40%概率,则准确性将达到最高。(在这里,我们发现即使对于平衡的班级,准确性也是有问题的。)正确的评分规则将首选预测,而不是(0.6 ,0.4 )(1 ,0 )期望中的一个。特别是,阈值的准确性是不连续的:将阈值移动一点点可能会使一个(或多个)预测更改类别,并使整个准确性离散量。这毫无意义。
可以在上面链接的Frank的两个博客文章以及Frank Harrell的Regression Modeling Strategies的第10章中找到更多信息。
编辑。我对“ 示例”的回答(使用准确性作为结果度量会导致错误的结论)给出了一个有希望的说明性示例,其中即使对于平衡的类,最大化准确性也可能导致错误的决策。
当我们使用准确性时,我们将相等的成本分配给误报和误报。当该数据集不平衡时-假设它在一类中有99%的实例,而另一类中只有1%的实例-有降低成本的好方法。预测每个实例都属于多数类别,准确度达到99%并尽早回家。
当我们分配给每个错误的实际成本不相等时,问题就开始了。如果我们处理的是罕见但致命的疾病,则无法诊断出患病者的疾病的成本要比派遣健康人进行更多检查的成本高得多。
通常,没有一般的最佳措施。最佳方法来自您的需求。从某种意义上说,这不是机器学习问题,而是业务问题。通常两个人会使用相同的数据集,但由于目标不同而选择不同的指标。
准确性是一个很好的指标。实际上,大多数指标都很出色,我喜欢评估许多指标。但是,有时需要在使用模型A或模型B之间做出选择。在那里,您应该使用最适合您需求的单个指标。
要获得额外的信用,请在分析之前选择此指标,这样您在做决定时就不会分心。
标准精度定义为正确分类与完成分类的数量之比。
因此,这是对所有类的总体度量,并且我们很快就会看到,除了实际有用的测试之外,告诉oracle不是一个好方法。oracle是一个分类函数,它为每个样本返回随机猜测。同样,我们希望能够对分类函数的分类性能进行评分。如果我们每个类中有相同数量的样本,但是如果我们的样本集不平衡,则\ textit {精度}可能是有用的度量,准确性根本没有用。更重要的是,测试可能具有较高的准确性,但实际上比具有较低准确性的测试的性能差。
在医学测试中,灵敏度定义为正确识别为患有疾病的人数与实际患有疾病的人数之间的比率。特异性定义为正确识别为健康的人与实际健康的人之间的比率。实际患病的人数是真实阳性测试结果的数量加上虚假阴性测试结果的数量。实际健康的人的数量是真实阴性测试结果的数量加上虚假阳性测试结果的数量。
。这意味着如果我们只有两个类别,则不需要每个类别的敏感性和特异性。
如果只有两个类别,则每个类别的灵敏度和特异性都没有用,但是我们可以将其扩展到多个类别。敏感性和特异性定义为:
代表所有错误的分类。由此,我们必须减去的情况下输入类是这意味着我们必须减去为假阴性这是,但我们也必须减为误报因为它们是假阳性而不是假阴性,所以我们还必须减去最终得到 。作为总结,我们有:
数据集中的类不平衡
简而言之:假设数据集中有一个类别(例如苹果)的99%和另一个类别的1%(例如香蕉)。我的超级duper算法对该数据集的准确性达到了惊人的99%,请检查一下:
return "it's an apple"
他将在99%的时间内正确,因此获得了99%的准确性。我可以卖给我我的算法吗?
解决方案:不要使用绝对度量(准确性),而是要使用相对于每个类的度量(那里有很多东西,例如ROC AUC)
DaL的答案就是这样。我将通过一个有关出售鸡蛋的非常简单的示例来说明这一点。
如果您的分类器没有记错,那么您将获得最大的收益。如果它不是完美的,则:
然后,分类器的准确度就是您离最大收益的距离。这是完美的措施。
例如,如果分类器要在数据库中查找相关文档,则可以将读取无关文档的“浪费”时间与查找相关文档进行比较。
正如其他人指出的那样,准确性的另一个问题是对失败代价的内在漠视-即所有错误分类均相等的假设。实际上,它们并非如此,获得错误分类的成本在很大程度上取决于主题,并且您可能更愿意使特定类型的错误最小化,而不是使准确性最大化。