推荐系统--评估方法和评估指标

推荐系统–评估方法和评估指标

评估方法

目前推荐系统中常用的评估方法可以分为两大类:

  • 离线评估方法
  • 在线评估方法

离线评估方法

离线评估基本思想是,将数据集划分为训练集和测试集,利用训练集得到一个较优的模型,用测试集进行模型评估。按照训练集和测试集的划分方式,主要分为3种:

HoldOut 检验
它将样本按照 70% - 30% 的比例进行划分,70% 的样本用于训练,30% 的样本用于评估模型优劣。

缺点:数据集的划分直接影响评估结果,存在较大的随机性。

K-fold 交叉检验

它首先将全部样本等比划分为 k 个互不相关的子集,然后依次遍历这 k 个子集,每次都把当前子集当作测试集,其余 k-1 个子集作为训练集。最后将 k 次的结果的平均值作为最终评估指标。

自助法

当模型规模比较小时,无论是 HoldOut 检验还是 K-fold 交叉检验,都会使得训练集进一步缩小,可能会影响训练效果。自助法可以在一定程度上解决这个问题。
自助法基本思想是,对于总数为 n 的样本集合,进行 n 次有放回的随机抽样,得到大小为 n 的训练集。在 n 次采样过程中,有的样本会被重复采样,有的没有被抽到过,将没有被抽到过的样本作为测试集进行模型评估。

离线评估方法的优点

  • 不需要部署到生产环境,降低了工程风险
  • 节约了宝贵的线上流量资源,能利用丰富的线下计算资源
  • 测试时间短,可以同时进行多组测试

离线评估方法的缺点

  • 无法完全消除数据有偏现象的影响
  • 无法完全还原线上的工程环境
  • 离线评估不能获得某些重要的商业指标,例如点击率、留存时长等

在线评估方法

在线评估方法中最常用的就是 A/B 测试,也称为“分流测试”或“分桶测试”。

A/B 测试分层和分流机制

  • 层与层之间的流量 “正交”
  • 同层之间的流量“互斥”

层与层之间的流量“正交”:层与层之间的独立实验的流量是正交的,即实验中每组的流量穿过该层后,都会被再次随机打散,且均匀分布在下层实验的每个实验组中。
同层之间的流量“互斥”:

(1). 如果同层之间进行多组 A/B 测试,那么不同测试之间的流量是不重叠的,即“互斥的”。
(2). 一组 A/B 测试中实验组和对照组的流量是不重叠的,是“互斥”的。

评估指标

1. 准确率

分类准确率(Accuracy)是指分类正确的样本占样本总数的比例:
A c c u r a c y = N c o r r e c t N t o t a l Accuracy=\frac{N_{correct}}{N_{total}} Accuracy=NtotalNcorrect
准确率是比较直观的评价指标,具有较强的可解释性,但当存在样本不均衡问题是,占比大的类别对准确率有较大的影响。

2. 精确率

为了帮助我们理解,我们简单回顾以下混淆矩阵:

  • TP:实际为正样本,预测为正样本
  • FP:实际为负样本,预测为正样本
  • TN:实际为负样本,预测为负样本
  • FN:实际为正样本,预测为负样本
 真实情况	预测为正		预测为负 
  正样本		  TP		  FN
  负样本		  FP 		  TN

在推荐系统中,可以表示为:

 用户喜好	系统推荐		系统未推荐 
  喜  欢		  TP		   FN
  不喜欢		  FP 		   TN

精确率(Precision)表示被预测为正样本的样本中,有多少比例是真的正样本。
P r e c i s i o n = T P T P + F P Precision=\frac{TP}{TP+FP} Precision=TP+FPTP
在推荐系统中,通常没有一个固定的阈值把预测结果直接判定为正样本或负样本,而是采用 Top-N 排序结果的精确率(Precision@N)来衡量模型的性能。即它认为模型排序的 Top-N 结果就是模型判定的正样本,然后计算 Precision@N。

3. 召回率

召回率(Recall)是预测正确的正样本个数占真正的正样本个数的比例。
R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
同理,在推荐系统中,我们也经常采用 Recall@N 来评估模型性能。

4. F1-score

由 Precision 和 Recall 的定义我们可以看出,精确率和召回率是相互矛盾的指标。为了提高准确率,分类器更加谨慎,从而漏掉一些正样本,导致召回率降低。
为了综合反映 Precision 和 Recall 的结果,我们使用 F1-score,它是精确率和召回率的调和平均值。
F 1 − s c o r e = 2 ⋅ P r e c i s i o n ⋅ R e c a l l P r e c i s i o n + R e c a l l F1-score=\frac{2 \cdot Precision \cdot Recall}{Precision + Recall} F1score=Precision+Recall2PrecisionRecall

5. 平方绝对误差(MAE)

M A E = 1 m ∑ i = 1 m ∣ y i − y ^ i ∣ MAE=\frac{1}{m} \sum_{i=1}^m \vert y_i-\hat{y}_i \vert MAE=m1i=1myiy^i
m m m 是样本个数, y i , y ^ i y_i, \hat{y}_i yi,y^i 分别是真实值和预测值。

6. 平均平方误差(MSE)

M S E = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 MSE=\frac{1}{m} \sum_{i=1}^m (y_i -\hat{y}_i)^2 MSE=m1i=1m(yiy^i)2

7. 均方根误差(RMSE)

R M S E = 1 m ∑ i = 1 m ( y i − y ^ i ) 2 RMSE= \sqrt{\frac{1}{m}\sum_{i=1}^m(y_i -\hat{y}_i)^2} RMSE=m1i=1m(yiy^i)2
一般情况下,RMSE能很好的反映回归模型预测值与真实值的偏离程度。但如果存在个别偏差程度非常大的离群点,会使RMSE指标变得很差。

8. 平均绝对百分比误差(MAPE)

M A P E = ∑ i = 1 m ∣ y i − y ^ i y i ∣ ⋅ 100 m MAPE=\sum_{i=1}^m\vert \frac{y_i -\hat{y}_i}{y_i} \vert \cdot \frac{100}{m} MAPE=i=1myiyiy^im100

9. P-R 曲线

为了综合衡量一个模型的好坏,不仅要看不同 Top-N 情况下的 Precision@N 和 Recall@N,最好绘制出模型的 Precision-Recall 曲线。
P-R 曲线的横轴是召回率,纵轴是精确率。在绘制好 P-R 曲线后,计算曲线下的面积(Aera Under Curve,AUC)能够量化 P-R 曲线的优劣。AUC 越大,排序模型的性能越好。

10. ROC 曲线

ROC 曲线的横轴为 FTR(False Positive Rate,假阳性率),纵轴为 TPR(True Positive Rate,真阳性率).
F P R = F P T N + F P FPR=\frac{FP}{TN+FP} FPR=TN+FPFP
T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP
同理,我们也可以根据 ROC 曲线的 AUC 来评估模型。

11. 平均精度均值(mAP)

mAP(mean Average Precision) 是对 AP(Average Precision)的再次平均。我们给出一个例子。

推荐序列		N=1		N=2		N=3		N=4		N=5		N=6
真实标签		1		0		0		1		1		1

其中,1 表示正样本,0 表示负样本。
AP 的计算只取正样本出的 Precision 进行平均。
A P = ( P r e c i s i o n @ 1 + . . . + P r e c i s i o n @ N ) / N AP= (Precision@1 + ... +Precision@N) / N AP=(Precision@1+...+Precision@N)/N
对于上面的例子,我们可以得到,AP = (1 * 1 / 1 + 0 * 1 / 2 + 0 * 1 / 3 + 1 * 2 / 4 + 1 * 3 / 5 + 1 * 4 / 6)/ 4 = 0.6917
我们对每个用户都计算出一个 AP 值,再对所有的用户的 AP 值进行平均,就得到了 mAP。

12. 覆盖率

覆盖率指标是指算法向用户推荐的商品能覆盖全部商品的比例。覆盖率尤其适用于那些需要为用户找出所有感兴趣的商品的系统。

  • 预测覆盖率:预测评分的商品占所有商品的比例
  • 推荐覆盖率:为用户推荐的商品占所有商品的比例
  • 种类覆盖率:为用户推荐的商品种类占全部种类的比例

你可能感兴趣的:(推荐系统,机器学习,机器学习,数据挖掘,推荐算法)