机器学习性能度量-----查全率和查准率

算法改进过程中,设定某个数值评估你的学习算法,并衡量它的表现,有了算法的评估和误差度量值。对算法的改进是十分重要的。但是有一件重要的事情要注意,就是使用一个合适的误差度量值,这有时会对于你的学习算法造成非常微妙的影响。

性能度量

对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评估标准,这就是性能度量(performance measure).
性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果:这意味着模型的“好坏”是相对的,什么样的模型是好的,不仅取决于算法和数据,还决定于任务需求。
回归任务最常用的性能度量是“均方误差”(mean squared rror)

分类任务中常用的性能度量.

错误率与精度

错误率和精度,这是分类任务中最常用的两种性能度量,既适用于二分类任务,也适用于多分类任务.
错误率是分类错误的样本数占样本总数的比例,精度则是分类正确的样本数占样本总数的比例、对样例集D、分类错误率定义为:
机器学习性能度量-----查全率和查准率
机器学习性能度量-----查全率和查准率
更一般的,对于数据分布D和概率密度函数P().错误率与精度可分别描述为:
机器学习性能度量-----查全率和查准率
机器学习性能度量-----查全率和查准率

查准率、查全率与F1

错误率与精度虽然常用,但并不能满足所有任务需求,
例如我们希望用算法来预测癌症是否是恶性的,在我们的训练集中,只有 0.5%的实例是恶性肿瘤。假设我们编写一个非学习而来的算法,在所有情况下都预测肿瘤是良性的,那么误差只有 0.5%。然而我们通过训练而得到的神经网络算法却有 1%的误差。这时,误差的大小是不能视为评判算法效果的依据的。
类似的在挑选西瓜的时候,我们更关心的是“挑出的西瓜有多少比例是好瓜”或者“所有好瓜中有多少比例被挑了出来”,此时显然错误率也不能作为性能度量。还有web搜索等,我们更关心的是“检索出来的信息中有多少比例是用户感兴趣的”。
“查准率”(precision)与“查全率”(recall)是更适用于此类需求的性能度量
查准率(Precision)和 查全率(Recall) 我们将算法预测的结果分成四种情况:

  1. 正确肯定(True Positive,TP):预测为真,实际为真
  2. 正确否定(True Negative,TN):预测为假,实际为假
  3. 错误肯定(False Positive,FP):预测为真,实际为假
  4. 错误否定(False Negative,FN):预测为假,实际为真
    则:
    查准率 P=TP/(TP+FP)。例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。
    查全率 R=TP/(TP+FN)。例,在所有实际上有恶性肿瘤的病人中,成功预测有恶性肿瘤的病人的百分比,越高越好。
    这样对于上面的例子中,预测所有肿瘤都是良性的来说,虽然错误率可以达到很低,但是查全率就等于0;
    机器学习性能度量-----查全率和查准率
    查准率和查全率是一对矛盾的度量。一般来说,查准率高时,查全率往往偏低;而查全率高时,查准率往往偏低。
    在很多应用中,我们希望能够保证查准率和召回率的相对平衡。常用的是F1度量:
    机器学习性能度量-----查全率和查准率
    在一些应用中,对查全率和查准率的重视程度有所不同。例如在商品推荐系统中,为了少打扰用户,更希望推荐的内容是用户感兴趣的,此时更注重查准率。而在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时查全率更重要。F1F1的一般形式FβF_\beta:
    Fβ=(1+β)PR(β2P)+RF_\beta=\frac {(1+\beta)*P*R}{(\beta^2*P)+R}
    其中β>0\beta>0度量了查全率对查准率的相对重要性,β=1\beta=1就是标准的F1,β>1\beta>1时查全率有更大影响,β<1\beta<1查准率有更大影响。

参考:
《机器学习》周志华著。
吴恩达 coursera机器学习课程