• 推荐系统学习笔记(1)


    推荐系统学习笔记

     

    1 什么是推荐系统?

      

      推荐系统的任务是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现对它感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。

     

      推荐系统和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。

     

      推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。

    2 推荐系统的方法

      

      推荐系统的方法:

        社会化推荐(social recommendation)

        基于内容的推荐(content-based filtering)

        基于协同过滤(collaborative filtering)

      推荐算法的本质是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。

     

    3 推荐系统的应用

      

    个性化推荐系统在网站中的主要作用是通过分析大量用户行为日志,给不同用户提供不同的个性化页面展示,来提高网络的点击率和转化率。

    1. 电子商务:例如亚马逊

    2. 电影和视频网站:例如Netflix

    3. 个性化音乐网络电台:例如Last.fm

    4. 社交网络:例如Facebook

    5. 个性化阅读:例如Digg

    6. 基于位置的服务:例如Foursquare

    7. 个性化邮件:例如Tapestry

    8. 个性化广告:例如Facebook

     

     4 如何测评

      

    一个完整的推荐系统一般存在3个参与者:用户、物品提供者和提供推荐系统的网站,在评测一个推荐算法时,需要同时考虑三方的利益,一个好的推荐系统是能够令三方共赢的系统。

     

    推荐系统实验方法

    1离线实验

    步骤:

    ① 通过日志系统获得用户行为数据,并按照一定格式生成一个标准的数据集;

    ② 将数据集按照一定的规则分成训练集合测试集;

    ③ 在训练集上训练用户兴趣模型,在测试集上进行预测;

    ④ 通过事先定义的离线指标评测算法在测试集上的预测结果。

     

    优点:不需要有对实际系统的控制权;不需要用户参与实验;速度快,可以测试大量算法

    缺点:无法计算商业上关心的指标,如点击率、转化率等;离线实验的指标和商业指标存在差距。

     

    2用户调查

    真实用户在测评的推荐系统上完成一些任务,在完成任务时,需要观察和记录他们的行为,并让他们回答一些问题,通过分析他们的行为和答案了解测试系统的性能。

    优点:可以获得很多体现用户主观感受的指标,相对在线实验风险很低,出现错误后很容易弥补。

    缺点:招募测试用户代价较大,很难组织大规模的测试用户,因此会使测试结果的统计意义不足。

     

    3在线实验

    在完成离线实验和必要的用户调查后,可以将推荐系统上线做AB测试,将它和旧的算法进行比较。

    AB测试是一种很常用的在线评测算法的实验方法。http://www.abtests.com/

    一般来说,一个新的推荐算法最终上线,需要完成3个实验:

    首先,需要通过离线实验证明他在很多离线指标上由于现有的算法。

    然后,需要通过用户调查确定它的用户满意度不低于现有的算法。

    最后,通过在线的AB测试确定它在我们关心的指标上由于现有的算法。

     

     

     

    评测指标

    1.用户满意度:通过用户调查或者在线实验获得。

    2.预测准确度:评分预测(均方根误差和平均绝对误差),TopN推荐

    3.覆盖率:信息熵,尼基系数

    4.多样性

    5.新颖性:平均流行度

    6.惊喜度

    7.信任度:增加推荐系统的透明度,提供推荐解释;考虑用户的社交网络信息

    8.实时性

    9.健壮性

    10.商业目标

    11.目标

    测评维度

    用户维度:主要包括用户的人口统计学信息、活跃度以及是不是新用户等

    物品维度:包括物品的属性信息、流行度、平均分以及是不是新加入的物品等

    事件维度:包括季节、是工作日还是周末,是白天还是晚上等。

  • 相关阅读:
    u-boot编译
    本地套接字
    内核线程
    长度为0数组
    Ubuntu安装KScope
    Python基础-运算符
    如何有效地记录 Java SQL 日志?
    解谜谷歌 DevOps:什么特质可以打造世界级可靠系统?
    如何打造前所未有的服务器端监控体验?
    趣味Python入门(一):初识Python
  • 原文地址:https://www.cnblogs.com/timssd/p/12575103.html
Copyright © 2020-2023  润新知