评价指标是机器学习任务中非常重要的一环。不同的机器学习任务有着不同的评价指标,同时同一种机器学习任务也有着不同的评价指标,每个指标的着重点不一样。如分类、回归、排序、聚类、热门主题模型、推荐等。并且很多指标可以对多种不同的机器学习模型进行评价,如精确率-召回率(precision-recall),可以用在分类、推荐、排序等
在这里我分享均方误差(MSE)、精确率-召回率(precision-recall)和归一化折损累计增益(NDCG)三个不同用处的评价指标。
一、均方误差(MSE)
均方误差(MSE),检测模型预测值和真实值的偏差,可用在回归任务
对于回归任务,我们得到的是结果是数值,不能像分类任务一样要求与真实值完全一致,只能是比较与真实值的偏差
比如,一个人实际身高173.5,有人说他174,他也不会否认,因为与实际身高只差0.5而已
式子:
范围[0,+∞),当预测值与真实值完全吻合时等于0,即完美模型;误差越大,该值越大
二、 精确率-召回率(precision-recall)
精确率-召回率(precision-recall),可以用在分类、推荐、排序任务等
如上图所示,要了解各个评价指标,首先需要知道混淆矩阵,混淆矩阵中的P表示Positive,即正例或者阳性,N表示Negative,即负例或者阴性,T表示预测正确的,F表示预测错误的
为比较精确率和召回率的区别,我们举一个识别垃圾邮件的例子
2.1 召回率=TP/(TP+FN):正确判为垃圾邮件占所有垃圾邮件的比例
我们可以想象一种情况:
如果我们把所有邮件都判为垃圾邮件,那真正的垃圾邮件确实会被百分百预测正确,所有垃圾邮件都被删除了,召回率就为100%!但我们凭直觉看,这不能是一个好的模型,因为如果按照这个识别,你等于一辈子收不到邮件
2.2 精确率=TP(TP+FP):所有判为垃圾邮件中,真正的垃圾邮件的比例
如果像上面判定所有都是垃圾邮件,那精确率就是为0的情况,精确率低的时候我们会失去重要的邮件,这就有点本末倒置了
如果把仅把一封邮件正确判定为垃圾邮件,精确率为1,召回率就为0。但因为实际上还存在其他许多垃圾邮件,就相当于没解决识别垃圾邮件的任务,这样也不好
2.3 精确度和召回率权衡
不难发现,精度和召回率成负相关,我们不能仅追求其中一个的指标,此时就需要根据任务需求权衡精度—召回率
例如在逃犯信息检索系统中,更希望尽可能少漏掉逃犯,此时召回率更重要。可使用F1和Fβ度量调和平均,使用ROC和AUC曲线可视化
三、归一化折损累计增益(NDCG)
这个指标通常用来衡量和评价搜索结果算法,可也用于排序、推荐任务等
3.1 累计增量(CG)
它是一个搜索结果相关性分数的总和
[原因]:
我们搜索都希望能找到想要的东西,于是把我们期望结果和实际结果的相关性数值化
[式子]:
即为单个的相关性分数,分数越大,相关性越大
3.2 折损累计增益(DCG)
Discounted的CG,就是在每一个CG的结果上处以一个折损值
[原因]:
对于搜索来说,都是优先先查看前面几个,前面的相关性大小很大影响我们能否找到期望结果
[式子]:
即为折损值,排序越往后,价值越低
3.3 归一化折损累计增益(NDCG)
Normalized的DCG,就是每一个DCG结果除以一个IDCG
[原因]:
搜索时,我们搜索词不一样,搜索结果的数量是不一样的,使得DCG之间无法比较,于是需要归一化处理,使得所有nDCG在[0,1]之间比较
[式子]:
IDCG就是理想的DCG,即把最相关的排到最前面的情况
IDCG为排序的最大值,所以分子一定不大于分母,使得不同结果能在[0,1]之间比较,nDCG越大越好
3.4 例子
查询一:淘宝搜索飞机模型,出现四个搜索结果(取两位小数)
[1] 衡量搜索算法结果的相关性
[2] 强调排序在前的更被关注
[3] 比较搜索引擎在一个查询和下一个查询中的性能
查询二:淘宝搜索牛仔裤,出现三个搜索结果
同理可得
因为以上面的搜索结果数量不一样不好比较,所以我们引入NDCG
①飞机模型搜索理想排序是D3 D2 D1 D4:
②牛仔裤搜索理想排序是D3 D1 D2:
这样标准化后就可以很好的比较了两者的性能