精华内容
下载资源
问答
  • 推荐算法评估方式

    千次阅读 2018-07-10 14:17:36
    1.评分预测评分预测主要用来预测用户对item的评分,离线评估主要有RMSE和MAE两种评估方式,它们的计算方式如下RMSE=∑(u,i)∈T(rui−r^ui)2−−−−−−−−−−−−−−−√|T|RMSE=∑(u,i)∈T(rui−r^ui)2|T|MAE=...

    1.评分预测

    评分预测主要用来预测用户对item的评分,离线评估主要有RMSE和MAE两种评估方式,它们的计算方式如下


    其中T表示评分记录集合,ruirui表示user对item的实际评分,r^uir^ui表示user对item的预测评分。

    RMSE 加大了对预测不准的用户物品评分的惩罚(平方项的惩罚),因而对系统的评测更加苛刻。

    2.TopN推荐

    为用户推荐N个用户可能感兴趣的物品,其离线评估方式有Precision、Recall 、覆盖率、新颖性。

    2.1Precision和Recall


    其中R(u)R(u)表示为用户uu推荐的item集合,T(u)T(u)为用户uu实际有过行为的item集合,precision可以理解为推荐的商品真正为用户有过行为的商品占推荐的总商品的比例,recall可以理解为推荐的商品真正为用户有过行为的商品数目占用户实际有过行为的商品的比例。

    2.2覆盖率


    其中I表示所有商品的集合,反映了推荐的商品占所有商品的比例,一定程度上反映了系统挖掘长尾的能力。


    转自: https://blog.csdn.net/Xafter0/article/details/80572968

    展开全文
  • 这时值的计算与你推荐个数多少无关,recall 又叫查全率,只要押中了,那就认为单用户命中率为100%。 precision 和 topk 有关,单个用户为 命中个数/topk,与recall 成正比。 计算平均值时用,命中的用户个数 / 总...

    ground_true 为1 的情况:

    recall=hit_rate

    这时值的计算与你推荐个数多少无关,recall 又叫查全率,只要押中了,那就认为单用户命中率为100%。

    precision 和 topk 有关,单个用户为 命中个数/topk,与recall 成正比。

    计算平均值时用,命中的用户个数 / 总的用户个数。

     

    ground_truth 为 多个 的情况:

    recall:每个用户的命中率为,在你的候选推荐中,命中了多少个。单个用户计算为,命中个数(hitrate)/ 该用户ground_truth个数

    precision:为查准率。单个用户计算为 命中个数 / topk .

    计算平均值则将所有单个用户相加 / user总个数

     

    实现:

    def precision_at_k_per_sample(actual, predicted, topk):
        num_hits = 0
        for place in predicted:
            if place in actual:
                num_hits += 1
        return num_hits / (topk + 0.0)
        # 一个准确率是,推荐的命中个数/topk

     

     


    def precision_at_k(actual, predicted, topk):
        sum_precision = 0.0
        num_users = len(predicted) #用户总个数
        for i in range(num_users):
            act_set = set(actual[i]) # ground truth 为1,或者多个 
            pred_set = set(predicted[i][:topk])
            sum_precision += len(act_set & pred_set) / float(topk) # ground——truth 为1或者多个 状态下的准确率,求两个set的交集即命中个数,除topk

        return sum_precision / num_users

     

     


    def recall_at_k(actual, predicted, topk):
        sum_recall = 0.0
        num_users = len(predicted)
        true_users = 0
        for i in range(num_users):
            act_set = set(actual[i])
            pred_set = set(predicted[i][:topk])
            if len(act_set) != 0:
                sum_recall += len(act_set & pred_set) / float(len(act_set)) #也是命中个数 除以 ground-truth 的个数 求和后再除以用户个数。
                true_users += 1
        return sum_recall / true_users

     

     


    # 平均倒数排名, 即在第一个命中,得分为1,第二个为1/2, 第三个命中为1/3,最后/topk,即推荐的个数
    def mrr_at_k(actual, predicted, topk): # 这个只是考虑了一个用户的状况
        if len(predicted) > topk:
            predicted = predicted[:topk]

        score = 0.0

        for i, p in enumerate(predicted):  # i 是 p 的下标, p是 预测的值
            if p in actual and p not in predicted[:i]: # p在 ground truth 中,但在预测集中之前没出现过,即去重。
                score += 1 / (i+1.0)  # 因为下标所以要+1.0

        if not actual:
            return 0.0

        return score / min(len(actual), topk)

     

     


    # 也只考虑了一个用户的情况, 和mrr的区别仅在排序增益上, 分母取 ground truth 和topk 的较小值
    def ndcg_at_k(actual, predicted, topk):
        if len(predicted) > topk:
            predicted = predicted[:topk]

        score = 0.0

        for i, p in enumerate(predicted):
            if p in actual and p not in predicted[:i]:
                score +=  1.0 / np.log2(i + 2.0)

        if not actual:
            return 0.0

        return score / min(len(actual), topk)

    展开全文
  • 农业科技文献推荐算法评估,沈宝宝,杨旭,推荐系统在互联网普及与发展带来了信息超载问题的背景下产生的,它主要是根据用户的兴趣和特点,向用户推荐其最可能感兴趣的信息
  • 基于欧式距离定义相似度推荐算法评估
    /*
     * 这段程序对于基于欧式距离定义相似度的评估
     * */
    package byuser;
    
    import java.io.File;
    
    import org.apache.mahout.cf.taste.common.TasteException;
    import org.apache.mahout.cf.taste.eval.RecommenderBuilder;
    import org.apache.mahout.cf.taste.eval.RecommenderEvaluator;
    import org.apache.mahout.cf.taste.impl.eval.AverageAbsoluteDifferenceRecommenderEvaluator;
    import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
    import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
    import org.apache.mahout.cf.taste.impl.similarity.EuclideanDistanceSimilarity;
    import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
    import org.apache.mahout.cf.taste.model.DataModel;
    import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
    import org.apache.mahout.cf.taste.recommender.Recommender;
    import org.apache.mahout.cf.taste.similarity.UserSimilarity;
    import org.apache.mahout.cf.taste.similarity.precompute.example.GroupLensDataModel;
    
    
    public class GenericRecByGroupLens_Evalu {
    
    	public GenericRecByGroupLens_Evalu() throws Exception{
    		DataModel model = new GroupLensDataModel(new File("E:\\mahout项目\\examples\\ratings.dat"));
    		RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
    		RecommenderBuilder recommenderBuilder = new RecommenderBuilder() {
    			@Override
    			public Recommender buildRecommender(DataModel model) throws TasteException {
    				//PearsonCoreCOnrrelationSimilarity是皮尔逊相关系数的算法使用
    				UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    				
    				//这里使用的是基于欧式距离定义相似度的算法
    				UserSimilarity similarity1 =  new EuclideanDistanceSimilarity(model);
    				
    				UserNeighborhood neighborhood = new NearestNUserNeighborhood(100, similarity1, model);
    				return new GenericUserBasedRecommender(model, neighborhood, similarity1);
    			}
    		};
    		double score = evaluator.evaluate(recommenderBuilder, null, model, 0.95, 0.05);
    		System.out.println("基于欧式距离定义相似度的推荐引擎的评测得分是: " + score);
    	}
    	public static void main(String[] args) throws Exception {
    		// TODO Auto-generated method stub
    		GenericRecByGroupLens_Evalu eva = new GenericRecByGroupLens_Evalu();
    	}
    
    }
    



    如图:


    这里是基于皮尔逊算法的评估:


    这个是基于欧式距离定义相似度的评估:


    可以看出,欧式的算法更加的优于皮尔逊的推荐算法

    展开全文
  • 推荐算法:推荐系统的评估

    万次阅读 2016-07-25 13:18:23
    在线评估:A/B test 离线评估 1.在线评估 将真实线上用户分组,对不同的组采用不同的方案同时运行,两个或者两个以上的方案 两个方案,只有一个变量不同 有明确的评价指标 试验中用户,从始而终,只接触一个方案 AB...
    • 用户调查
    • 在线评估:A/B test
    • 离线评估

    1.在线评估

    • 将真实线上用户分组,对不同的组采用不同的方案

      1. 同时运行,两个或者两个以上的方案
      2. 两个方案,只有一个变量不同
      3. 有明确的评价指标
      4. 试验中用户,从始而终,只接触一个方案
    • ABtest最常用的场景是 网页优化,测评指标:单击率,转化率等;

    • Myspace:ABtest,使用指标单击率
    • YouTube:ABtest;指标:单击率,长单击率,会话时间,观影前,覆盖率

      在线指标

      1. 单击率:推荐影片中,单击的电影,占比
        设:系统向用户i 推荐电影n,这些影片中,单击浏览影片的个数是 m ;则,测试期间,该用户的单击率是 pi=mn ;设用户数量是 U, 则A/B测试中的单击率指标

        P(U)=1UuPu

      2. 转换率
        a. 电商:推荐销售额和总体销售额的比率;
        b. 电影:单击量或者播放时长,与总体单击量或者时长的比率;


    2. 离线测评

    数据集

    • 20%的测试集,80%的训练集合

    准确度指标

    • 评分准确度
      1. MAE(mean absolute error; 平均绝对误差法)
        MAE=1|Ep|(u,aEp)|ruarua|

    其中:Ep 是测试数据集合;

    • 预测评分关联度:推荐系统的预测评分和真实评分未必接近,只有趋势相同就好
      (少用)

    排序准确度(TopN)

    • 排序准确度:有序推荐表和用户对物品排序的统一程度

      RSua=IuaLu

    Lu 是视频推荐系统中用户u 待推荐的列表大小;离线测试,用户u 在测试集中影片数量+未打分的影片数量
    Iua 是 预测影片 a 在用户推荐列表中的排名

    平均准确度指标

    • 推荐排序的好坏

    AP@x=i=1x(predictioni(changeinrecall)i)

    • 例如:某用户喜欢的项目 1 2 3 4 5; 推荐给用户的项目: 6 4 7 1 2;推荐给用户Top2:[6 4]

    AP@2=(prediction1(changeinrecall1)+(prediction2(changeinrecall2)))=00+0.50.5=0.25

    MAP是AP的值,计算后再求平均

    NDCG

    http://blog.csdn.net/u014313009/article/details/38944687
    * 衡量相关度的排序质量评价指标;

    CGP=i=1preli
    推荐结果的相关度相加(未考虑排序)

    DCGP=reli+i=1p2relilog2(i)
    排名顺序加权

    NDCGp=DCGpIDCGp
    DCGP 的归一化

    比如在Google搜索到一个词,得到5个结果。我们对这些结果进行3个等级的区分:Good、Fair、Bad,对应的分值分别是3、2、1。假设这5个结果的分值分别是3、1、2、3、2。

    * reli 就是第 i 个结果的得分。


    3. 分类的准确度

    用户喜欢 推荐 不推荐
    喜欢 N(tp) N(tn)
    不喜欢 N(fp) N(fn)

    * N(tp): 用户喜欢;推荐。
    * N(tn): 用户喜欢;没推荐
    * N(fp):用户不喜欢;推荐;
    * N(fn):用户不喜欢;不推荐

    准确率

    Pu=NtpNtp+Nfp

    所有用户求平均
    P=1MuPu

    召回率

    Ru=NtpNtp+Ntn

    所有用户求平均
    R=1MuRu

    • 准确率就是A/(A+B) 大白话就是“你的预测有多少是对的”
    • 召回率就是A/(A+C) 大白话就是“正例里你的预测覆盖了多少”

    F

    F=(a2+1)PRa2(P+R)

    a=1 =>F1=2PRP+R

    AUC

    • PRF是针对二分问题
    • 对于只有评分的系统,绘制ROC曲线,计算AUC(AUC表示ROC曲线下的面积)

    3. 多样性指标

    覆盖率

    多样性

    新颖性

    展开全文
  • 昨天使用Mohout推荐引擎实现了用户的协同过滤算法,今天使用昨天实现的算法计算一下推荐的准确率以及查全率,查准率。 算法评判标准:召回率(recall)与查准率(precision) A:检索到的,相关的 (搜到的也想要的) ...
  • 本文对于推荐系统中的采样评估指标进行了讨论,内容略多, 还有一些数学推导, 有兴趣的可以去阅读文末给出的原始论文链接, 此处直接列出核心观点:在评估推荐算法的效果时,能不采样就不采样!除了AUC,Precision@K,...
  • 广告电商等推荐算法中,评估模型质量的指标,目前用的较多的有:AUC,NE, Bias. AUC(area under curve): 名字曲线下面积,曲线指的的是ROC曲线,ROC曲线如下图(a)所示,其中横坐标是假正率(负样本预测为正的...
  • 文章目录第06章个性化召回算法总结与评估方法的介绍一、个性化召回算法的总结二、个性化召回算法的评价 第06章个性化召回算法总结与评估方法的介绍 本章节重点总结前面几章节介绍过的个性化召回算法。并介绍如何从...
  • 推荐算法相关

    2019-02-12 17:57:00
    目录 推荐算法相关 推荐系统介绍 评估指标 评估方法 推荐系统发展 相关算法 LFM算法 Personal Rank算法 item2vec算法 Content Based ...
  • 推荐算法

    2021-04-08 15:31:35
    推荐算法架构 召回 - > 排序 - > 策略调整 - > 推荐模型构建流程 数据收集 - 显性评分 - 隐形数据 特征工程 - 协同过滤 用户-物品 评分矩阵 - 基于内容 分词 tf-idf word2Vec 训练模型 - 协同过滤 - KNN...
  • 2、个性化推荐算法在系统中所起到的作用3、如何衡量个性化推荐算法在产品中起到的作用4、推荐算法介绍5、评估指标:个性化召回1、什么是个性化召回?2、召回的重要作用 个性化推荐算法实战第01章个性化推荐算法综述 ...
  • 推荐算法总结

    2020-12-28 10:51:53
    推荐算法 文章目录推荐算法基于模型的协同过滤推荐Model-Based 协同过滤算法基于K最近邻的协同过滤推荐基于回归模型的协同过滤推荐Baseline:基准预测方法一:随机梯度下降法优化step 1:梯度下降法推导step 2:随机...
  • 关键字:大数据 数据挖掘 运维 架构 数据营销 算法 推荐 个性化推荐 推荐算法 推荐系统 下载地址:点我下载 特别说明:本资源收集于网络,版权归原作者及版权商所有,仅限个人学习研究之用,请勿做商业用途。如果...
  • 接着上次的工作,本来是要学习...Lenskit算法评估入门教程在http://lenskit.org/documentation/evaluator/quickstart/。文档中介绍了两种评估方法,一种是通过lenskit二进制发行版来进行评估,另外一种是通过lens
  • 推荐算法介绍

    2019-10-02 06:39:16
    参考:今日头条推荐算法原理详解...1.典型推荐算法 2.典型推荐特征 主要有四类特征会对推荐起到比较重要的作用。 第一类是相关性特征,就是评估内容的属性和与用户是否匹配。...
  • 推荐系统:技术、评估及高效算法 第15章-附件资源
  • 推荐系统:技术、评估及高效算法 第2章-附件资源
  • 本文作者结合MLMU演讲【1】的Slides,对推荐系统的算法评估和冷启动解决方案做了详细的介绍。作者 | Pavel Kordík编译 | 专知翻译 | XiaowenMachine Learning for Recommender systems — Part 1 (algorithms, ...
  • 一、目录组织图(单击图方法)二、补充笔记1、因为推荐系统的算法多种多样,为了评估算法对数据的是影响,可以采取离线实验,用户调查、在线实验的方式进行。2、离线实验的目的是过滤掉不恰当的方法,减轻用户调查和...
  • AlgorithmicJournalism算法新闻第5章智能推荐算法本章围绕智能推荐算法的起源发展应用和评估展开首先介绍智能推荐系统的发端即智能推荐系统得以...介绍如何对推荐算法进行评估帮助算法推荐系统筛选最合适的算法本章要
  • 推荐系统评估
  • 该压缩文件包括,从零开始搭建...模型构建与算法调参(建模与评估方法) 基于movielens数据集的推荐预测 基于网易云音乐数据的推荐预测 word2vec 和Song2vec实现 冷启动与用户兴趣预测问题 基于Spark推荐系统实现
  • 本节书摘来自华章出版社《推荐系统:技术、评估及高效算法》一书中的第1章,第1.4节,作者 [ 美]弗朗西斯科·里奇(Francesco Ricci)利奥·罗卡奇(Lior Rokach)布拉哈·夏皮拉(Bracha Shapira)保罗 B....
  • 为了提高个性化推荐效率和推荐质量,平衡冷门与热门数据推荐权重,对关联规则的Apriori算法频繁项集挖掘问题进行了重新评估和分析,定义了新的测评指标推荐非空率以及k前项频繁项集关联规则的概念,设计了基于 k 前...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 738
精华内容 295
关键字:

推荐算法评估