推荐系统演化--概述

    不知不觉中,已经从事推荐相关工作已经有些年头了,从一开始的什么也弄不清楚,到现在的推荐架构师,中间经历过很多次的迭代升级。现在突然有些想法,把曾经经历过的历程记录下来,一方面希望能够跟从事推荐或者想要从事推荐相关工作的朋友进行一些交流,一方面是对过去自己做过的东西的一个总结。

推荐系统是什么

  推荐系统这个东西其实在我们的生活中无处不在,比如我早上买包子的时候,老板就经常问我要不要来杯豆浆,这就是一种简单的推荐。随着互联网的发展,把线下的这种模式搬到线上成了大势所趋,它大大扩展了推荐系统的应用:亚马逊的商品推荐,Facebook的好友推荐,豆瓣的豆瓣猜,Last.fm和豆瓣FM的音乐推荐,Gmail里的广告......在如今互联网信息过载的情况下,信息消费者想方便地找到自己感兴趣的内容,信息生产者则想将自己的内容推送到最合适的目标用户那儿。而推荐系统正是要充当这两者的中介,一箭双雕解决这两个难题。  

  推荐系统解决的基本任务是联系用户和物品,解决信息过载问题。

    

  推荐系统的本质是通过一定的方式将用户和物品联系起来,而不同的推荐系统利用了不同的方式。比如下图:联系用户和物品常用方式,向好友咨询、用户的历史兴趣记录一句用户的注册信息

    

  综上所述:推荐系统是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。必须明确的是,推荐系统是一种工具,一种自动联系用户和物品的一种工具,他能在信息过载的环境中帮助用户发现令他们感兴趣的信息,也将消息推送给对它们感兴趣的用户。

扫描二维码关注公众号,回复: 1012427 查看本文章

推荐系统的应用场景 

  • 电子商务网站,例如亚马逊、JD、淘宝
  • 电影和视频网站,例如Netflix、优酷、爱奇艺、腾讯视频
  • 个性化音乐网络电台,例如QQ音乐、网易音乐、虾米音乐
  • 社交网络,例如:Facebook 、Twitter、QQ
  • 个性化阅读,例如Google Reader、掌阅
  • 基于位置的服务,美团、大众点评
  • 个性化邮件,例如GMail
  • 个性化广告,上下文广告、搜索广告、个性化展示广告

推荐系统的评判标准

  首先我们得明确什么是好的推荐系统。可以通过如下几个标准来判定。但是这些评判标准更多带来的是指导意义,让大家在设计的时候有一个明确的目的导向。

评判指标

  • 用户满意度  描述用户对推荐结果的满意程度,这是推荐系统最重要的指标。一般通过对用户进行问卷或者监测用户线上行为数据获得。
  • 预测准确度  描述推荐系统预测用户行为的能力。一般通过离线数据集上算法给出的推荐列表和用户行为的重合率来计算。重合率越大则准确率越高。如下两种方式来定义准确率。
    • 评分预测:一般采用均方根误差(RMSE)和平均绝对误差(MAE)
    • TopN推荐:一般通过准确率(precision)/召回率(recall)来度量
  • 覆盖率  描述推荐系统对物品长尾的发掘能力。一般通过所有推荐物品占总物品的比例和所有物品被推荐的概率分布来计算。比例越大,概率分布越均匀则覆盖率越大。如下两个指标来定义覆盖率。
    • 信息熵
    • 基尼系数(Gini Index)
  • 多样性  描述推荐系统中推荐结果能否覆盖用户不同的兴趣领域。一般通过推荐列表中物品两两之间不相似性来计算,物品之间越不相似则多样性越好。
  • 新颖性  如果用户没有听说过推荐列表中的大部分物品,则说明该推荐系统的新颖性较好。可以通过推荐结果的平均流行度和对用户进行问卷来获得。
  • 惊喜度  如果推荐结果和用户的历史兴趣不相似,但让用户很满意,则可以说这是一个让用户惊喜的推荐。可以定性地通过推荐结果与用户历史兴趣的相似度和用户满意度来衡量。
  • 信任度  如果用户信任推荐系统,那么就会增加用户和推荐系统的交互。要增加信任度,首选需要增加推荐系统的的透明度,增加推荐系统的透明度主要办法就是提供推荐解释。
  • 实时性  在很多网站中,因为物品(新闻、微博等)具有很强的时效性,所以需要在物品还具有时效性时就将他们推荐给用户
    • 推荐系统需要实时地更新推荐列表来满足用户新的行为变化
    • 推荐系统需要能够将新加入系统的物品推荐给用户
  • 健壮性  任何一个能带来利益的系统都会被人攻击,这方面最典型的的例子就是搜索引擎。二健壮性(即robust,鲁棒性)指标很亮了一个推荐系统抗击作弊的能力。提高健壮性有如下方法
    • 选择健壮性高的算法
    • 设计推荐系统时尽量使用代价比较高的用户行为
    • 在使用数据前,进行攻击检测,从而对数据进行清理
  • 商业目标  多数系统的构建都是跟利益挂钩的。很多时候,网站评测推荐系统更加注重网站的商业目标是否达成,而商业目标和网站的赢了模式是息息相关的。这个根据每一个公司性质的不同,需要根据具体情况来具体分析、确定。

评判维度

  • 用户维度  主要宝库用户的人口统计学信息、活跃度以及是不是新用户等
  • 物品维度  包括物品的属性信息、流行度、平均分以及是不是新加入的物品等
  • 时间维度  包括季节,工作日还是周末,白天还是晚上等

  简而言之,一个好的推荐系统就是在推荐准确的基础上给所有用户推荐的物品尽量广泛(挖掘长尾),给单个用户推荐的物品尽量覆盖多个类别同时不要给用户推荐太多热门物品,最牛逼的则是能让用户看到推荐后有种「相见恨晚」的感觉。当然这些基于理想情况。在实际工作中,我们还要去关心我们设计的系统带来的实际效益

推荐系统评测

  首先要明确推荐的参与者:

            

  推荐系统的实验方法:

  • 离线实验
    • 优点:不需要真实用户参与,可以直接快速的计算出来,从而方便、快速的测试大量不同的算法
    • 缺点:无法获取商业上关注的指标,比如点击率、转化率等,而找到和商业指标非常相关的离线指标也是很困难的事情
  • 用户调查
    • 优点:可以获得很多体现用户主管感受的指标,相对在线实验风险很低,出现错误后很容易弥补
    • 缺点:招募测试用户代价较大,很难组织大规模的测试用户,因此会使测试结果的统计意义不足
  • 在线测试,一般采用AB测试,AB测试系统如下:

    

推荐系统架构

  总体来说,推荐一个完整的推荐系统至少包含三个部分:前端的展示页面、后台的日志系统以及推荐算法系统

   从逻辑角度,绝大多数的推荐系统可以按照如下的分层结构来表示:

    

  当然,为了完成一次完整的推荐,我们要进行很多的其他工作。我们按照分层架构的方式将系统分为以下部分(从下往上):

  • 日志收集
    • 数据埋码
    • 服务日志
    • 系统日志
  • 数据存储
    • 数据同步
    • 数据存放
    • 数据清洗
    • 数据仓库
    • 在线数据存储
    • 实时数据存储
    • 算法模型存储
    • 算法特征存储
  • 算法计算
    • 算法模型库
    • 算法评测
    • 离线计算
    • 在线计算
    • 实时计算
    • 特征计算
  • 在线推荐
    • 实时推荐
    • AB测试
    • 算法Rank
  • 推荐展示
      • pc展示
      • wap展示
      • app展示
      • 推荐管理后台
      • BO&BW&BI

  之后会对以上列出的一些方面进行具体的介绍,本文仅仅从宏观角度对推荐系统进行一些简单介绍,如发现有问题的地方,请反馈。

猜你喜欢

转载自www.cnblogs.com/gdream/p/9082482.html