评价指标
在
不同任务
下衡量模型的性能,有
不同的评价指标
,例如:
•
回归任务
•
平均绝对误差(
MAE
)、均方误差(
MSE
)、均方根误差(
RMSE
)等
•
分类任务
•
准确率(
Accuracy
)、精度(
Precision
)、召回率(
Recall
)等
•
特定任务
•
个性化推荐:前
K
项精度(
Precision@K
)、前
K
项召回率(
Recall@K
)、前
K
项
命中率(
Hit@K
)等
•
对话系统:
BLEU
、
ROUGE
、
METEOR
等
1.回归任务(MAE, MSE,RMSE)
预测值
p
i
常为连续值,需要衡量与真实值
y
i
之间的误差
•
平均绝对误差(
MAE
)
•
均方误差(
MSE
)
:预测误差较大的样本影响更大
•
均方根误差(
RMSE
)
:与预测值、标签单位相同
2.分类任务 (Accuracy, ER,P,R,F,AUC)
预测值一般为离散的类别,需要判断是否等于真实类别
•
准确率(
Accuracy
)
•
错误率(
Error Rate
)
考虑二分类时划分正负的阈值
•
ROC
曲线
•
根据预测值对样本排序
•
以该样本的预测值为阈值
•
大于或等于阈值记正例,否则记负例
•
可得到一组结果及评价指标,共有样本数
n
组结果
•
假正例率(
False Positive Rate, FPR
)为横轴
•
真正例率(
True Positive Rate, TPR,
也
即召回率
)为纵轴
•
随机猜测模型的
ROC
曲线为
(0,0)
到
(1,1)
的对角线
•
理想模型的
ROC
曲线为
(0,0)-(0,1)-(1,1)
,所有正例预测值大于所有负例预测值
•
AUC
:(
Area Under ROC Curve
)
ROC
曲线下的面积,越大越好
AUC
的简便计算方法:
把测试样例以预测值从大到小排序,其中有
n1个真实正例,其中n0个真实负例
设
r
i
为第
i
个
真实负例
的秩(排序位置),
S
0
=
∑
r
i
AUC
可以计算为
:
3.特定任务
一些特定任务有其特有评价指标
•
个性化推荐
• 前K项精度(Precision@K
):模型排序给出的前
K
个推荐中,用户喜欢的项目(正例)的比例
• 前
K
项召回率(
Recall@K
):模型排序给出的前
K
个推荐中,正例数占候选集中所有正例的比例
• 前
K
项命中率(
Hit@K
):模型排序给出的前
K
个推荐中,是否有正例
• nDCG@K
、点击率、用户留存、利润转化等
•
对话系统
• BLEU
、
ROUGE
、
METEOR
:基于词、
n-gram
匹配衡量预测句子与目标句子之间的相似度
• 基于词向量计算预测句子与目标句子之间的相似度
• 用户与系统对话的时长、次数
• 人工评价
特定任务(DCG)
•
DCG: Discounted Cumulative Gain
•
检测一个文档,用
分级的相关性
来衡量有用性
,
或者
增益
(Gain)
• rel
1
+
rel
2
+
rel
3
+ …
•
增益从排序列表的开头开始累积,随着
位次增加
,增益可能会
减弱
(Discounted)
• rel1 + discounted(
rel
2
) + discounted(
rel
3
) + …
• 典型的折损函数有
1/
log (rank)
• 底数为
2
时
,
位次
4
的折损为
1/2,
位次
8
为
1/3
• rel
1
+
rel
2
/ log
2
2+
rel
3
/ log
2
3 + …
•
DCG
是对一个特定位次
p
的
累积增益
(Cumulative)
:
•
或
:
特定任务(DCG)举例
• 10 个文档的展示列表,相关性分级0-3:
3, 2, 3, 0, 0, 1, 2, 2, 3, 0
•
折扣增益
: (
1/log
2
i
)
3, 2/1, 3/1.59, 0, 0, 1/2.59, 2/2.81, 2/3, 3/3.17, 0
= 3, 2, 1.89, 0, 0, 0.39, 0.71, 0.67, 0.95, 0
•
累积折扣增益
(DCG@
n
):
3, 5, 6.89, 6.89, 6.89, 7.28, 7.99, 8.66, 9.61, 9.61
特定任务(NDCG)
l
通过与
理想排序
的对应位置的
DCG
进行对比来
归一化
l
对有不同数量相关文档的搜索结果求均值时更科学简洁
l
在任何位置都有
NDCG ≤
1
l
考虑了
分级相关性
和
位置
信息
l
搜索引擎等与排序相关的应用中相当常用的评价指标之一
特定任务(BLEU)
l
BLEU: bilingual evaluation understudy
双语替代评价
l
最早多用于机器翻译,后来也被其他任务借鉴(如对话生成等)
l
检测译文中的每个
n-gram
是否在参考译文中出现
l
Precision
没有考虑词出现的次数限制
,结果偏高
l
某个词在译文中的有效频次不应超过参考译文中的频次
l
精度
log
可能出现为
0
的情况 ,
置
BLEU=0
l
也可对精度做平滑
l
Google
的参考实现(扩展:多个句子的翻译、多个参考译文)
https://github.com/tensorflow/nmt/blob/master/nmt/scripts/bleu.py