1.spark
var text_file=sc.textfile('/input)
var word=text_file.flatmap(line=>line.split("")).map(word=>(word,1)).reduceByKey(_+_)
var out=word.count()
离线评估方法:
holdout评估:70%训练集,10%验证集,20%测试集
交叉检验:k-fold交叉验证(一般取10份,然后轮流做训练集+测试集)
留一验证:每次留下1个样本作为验证集,其余所有样本作为测试集
自助法:不断进行有放回采样作为测试集,没采到的最后作为测试集(占比30%)左右
离线评估的主要指标
准确率:分类准确率是指分类正确的样本占总样本个数的比例
精确率和召回率:
-
精确率(Precision)是分类正确的正样本个数占分类器判定为正样本的样本个数的比例
-
召回率(Recall)是分类正确的正样本个数占真正正样本个数的比例
-
F1-score进行调和(也叫F-measure),定义为:1/f=1/p+1/r
均方根误差
如果存在个别偏离程度非常大的离群点,那么即使离群点的数量非常少,也会让RMSE指标变得很差
MAPE:
对数损失函数
LogLoss,在一个二分类问题中,LogLoss定义为:
直接评估推荐序列的离线指标:
在某一阈值下,模型将大于该阈值的结果判定为正样本,将小于该阈值的结果判定为负样本时,排序结果对应的召回率和精确率
ROC曲线
「受试者工作特征曲线」
ROC曲线的横坐标时 False Posotive Rate(FPR, 假阳性率),纵坐标时True Positive Rate(TPR,真阳性率)
平均精度均值
AP的计算只取正样本处的precision进行平均,即 AP= (1/1 + 2/4 + 3/5 + 4/6) =0.6917
除了上述介绍的几种评估指标,推荐系统的评估指标还包括:
-
归一化折损累计收益(Normalized Discounted Cumulative Gain,NDCG)
-
覆盖率(Coverage)
-
多样性(diversity)
更接近线上环境的离线评估方法-Replay
动态离线评估方法
-
先根据样本产生时间对测试样本由早到晚进行排序,再用模型根据样本时间依次进行预测,在模型更新的时间点上,模型需要增量学习更新时间点前的测试样本,更新后继续进行后续的评估。
A/B测试与线上评估
注意样本等独立性和无偏性,同一用户在测试的全程中只能被分到同一个桶中。
-
层与层之间的流量正交,即层与层之间的独立实验的流量是正交的,即实验中每组的流量穿越该层后,都会被再次随机打散,且均匀的分布再下层的每个实验中
-
同层之间的流量互斥,即
-
同层之间进行多组A/B测试,不同测试之间的流量是不重叠的
-
一组A/B测试中实验组和对照组的流量是不重叠的,是互斥的
-