Data Science
首发于Data Science

《推荐系统实践》笔记

前言

在信息过载的今天,推荐系统显得越来越重要。最近在公司开始做推荐系统的项目,也翻阅了一些资料。《推荐系统实践》(作者项亮)一书虽然出版有些年头了,但仍然是一本非常好的入门书,以下是阅读时摘录的笔记。


作者:项亮

出版日期:2012.06

  随着信息技术和互联网的发展,人们逐渐从信息匮乏的时代走入了信息过载的时代。在这个时代,无论是信息消费者还是信息生产者都遇到很大的挑战;对于消费者,从大量信息中找到自己感兴趣的信息是一件非常困难的事情;对于信息生产者,让自己的信息脱颖而出,受到广大用户的关注,也是一件非常困难的事情。推荐系统就是解决这一矛盾的重要工具。推荐系统的任务就是联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对它感兴趣的用户面前,从而实现信息消费在和信息生产者的双赢。


第1章 好的推荐系统

  • 1.1 什么是推荐系统

    • 解决信息过载的三种方式:

      1. 分类目录(雅虎)
      2. 搜索引擎(谷歌)
      3. 推荐系统

        搜索引擎需要用户主动给出需求,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。但是推荐系统需要依赖用户行为数据。
        从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

    • 推荐系统可以更好的发掘商品的长尾

      • 传统2/8理论收到挑战。互联网条件下,由于货架成本极端低廉,电子商务网站往往能出售比传统零售店更多种类的商品。与传统零售业相比,电商的长尾商品数量极其庞大,这些长尾的总销售额甚至能超过热门商品。
      • 推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品准确地推荐给需要它的用户,帮助用户发现那些他们感兴趣但很难发现的商品。
    • 推荐算法的本质是通过一定的方式将用户和物品联系起来,不同的推荐系统利用了不同的方式。
  • 1.2 个性化推荐系统的应用
    推荐系统由前台展示页面、后台的日志系统以及推荐算法3部分构成 。

    • 电子商务
      • 主要应用有:
        1. 个性化商品推荐列表
        2. 相关商品推荐列表(cross selling)
    • 电影和视频网站
    • 个性化音乐网络电台

      • 个性化推荐成功应用的两个因素

        1. 存在信息过载
        2. 用户大部分时候没有明确需求

        个性化网络电台非常符合上诉两项

      • 设计上给用户一定形式的反馈(喜欢、不喜欢、跳过),经过用户一定时间的反馈,电台就可以从用户的历史行为中习得用户的兴趣模型,从而使用户的播放列表越来越符合用户对歌曲的兴趣。
      • Pandora 根据专家标注的音乐基因来计算歌曲相似度;Last.fm给用户推荐和他有相似听歌爱好的其他用户喜欢的歌曲。
      • 音乐推荐的特点:物品空间大 / 物品重用率高 / 上下文相关(包括用户当时的心情,比如沮丧的时候喜欢听励志的歌曲,和所处情境比如睡觉前喜欢听轻音乐) / 次序比较重要 / 高度社会化 (分享自己喜欢的音乐)
    • 社交网络
      • 主要应用:
        1. 利用用户的社交网络信息对用户进行个性化的物品推荐
        2. 信息流的会话推荐(推荐评论、好友状态等)
        3. 给用户推荐好友
    • 个性化阅读
      • 个性化阅读同样符合前面提出的需要个性化推荐的两个因素:用户面临信息过载的问题;其次,用户很多时候并没有必须看某篇具体文章的需求。
      • 新闻类的阅读要有很强的时效性
    • 基于位置的服务
    • 个性化邮件
    • 个性化广告
      • 个性化广告投放技术:
        1. 上下文广告:通过分析用户正在浏览的网页内容,投放和网页内容相关的广告。代表系统是谷歌的Adsense。
        2. 搜索广告:通过分析用户在当前会话中的搜索记录,判断用户的搜索目的,投放和用户目的相关的广告。
        3. 个性化展示广告: 根据用户的兴趣标签,对不同用户投放不同的展示广告.
  • 1.3 推荐系统评测
    一个完整的推荐系统一般存在3个参与方:用户、网站、内容提供方。
    • 推荐系统实验方法:
      1. 离线实验
      2. 用户调查
      3. 在线 A/B test
    • 评测指标:
      1. 用户满意度
          可以以问卷的形式;一般情况下用点击率、用户停留时间和转化率等指标度量用户的满意度。
      2. 预测准确率
      3. 覆盖率
        • 描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。
        • 覆盖率是一个内容提供商会关心的指标。
        • 覆盖率的其它定义: P27

        • 参考资料
          microsoft.com/en-us/res
        • 推荐系统的马太效应
            推荐系统的初衷是希望消除马太效应,使得各种物品都能被展示给对它们感兴趣的某一类人群。可以使用基尼系数来判断是否有明显的马太效应。
      4. 多样性
          为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域。多样性描述了推荐列表中物品两两之间的不相似性。
      5. 新颖性
        mtg.upf.edu/static/medi
      6. 惊喜度
      7. 信任度
          提高推荐系统信任度的方式有增加推荐系统的透明度(提供推荐的解释);考虑用户的社交网络信息,利用好友信息给用户做推荐,并且用好友进行推荐解释。
      8. 实时性
      9. 健壮性
        • 反作弊
      10. 商业指标:
      11. 总结

        • 指标总结
    • 评测维度
        在推荐系统评测报告中包含不同维度下的系统评测指标,能帮我们全面地了解推荐系统性能。
      • 用户维度:主要包括用户的人口统计学信息、活跃度以及是不是新用户等。
      • 物品维度:包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。
      • 时间维度:包括季节,是工作日还是周末,是白天还是晚上等。

第2章 利用用户行为数据

  • 2.1 用户行为数据简介
    • 用户行为数据可分为显性反馈行为和隐性反馈行为
    • 用户数据的统一表示
  • 2.2 用户行为分析
    在设计推荐算法之前需要对用户行为数据进行分析,了解数据中蕴含的一般规律可以对算法的设计起到指导作用。
    • 用户活跃度和物品流行度
      • 均近似符合长尾分布:
      • e.g. 物品流行度定义:对用户产生过行为的总数
        e.g. 用户活跃度定义:对物品产生过行为的总数
    • 活跃度和流行度的关系:
      一般新用户倾向于浏览热门的物品,因为他们对网站还不熟悉,只能点击首页的热门物品,而老用户会逐渐开始浏览冷门的物品。
    • 协同过滤算法:仅基于用户行为数据设计的算法
      • 方法有基于领域的方法(最广泛)、基于图的随机游走算法、隐语义算法。
      • 基于领域的方法可分为基于用户的协同过滤算法和基于物品的协同过滤算法。
  • 2.3 实验设计和算法评测
      P41
  • 2.4 基于邻域的算法
    • 基于用户的协同过滤算法
      • 基础算法
        1. 找到和目标用户兴趣相似的用户集合
          • 量化相似: Jaccard 相似度 / 余弦相似度 / 欧式距离
        2. 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
        3. 参考指标
          • 准确率 / 召回率
          • 覆盖度
          • 流行度
      • 用户相似度计算的改进
        • 两个用户冷门物品采取过同样的行为更能说明他们兴趣的相似度:用物品热门度进行惩罚
      • UserCF缺点
        • 计算量大;运算时间复杂度和空间复杂度的增长和用户数的增长近似于平方关系
    • 基于物品的协同过滤算法
      • 基础算法
        • 与基于用户的协同过滤算法相似
        • 也需考虑对商品的热门度进行惩罚
      • 用户活跃度对物品相似度的影响
        • 活跃用户对物品相似度的贡献应该小于不活跃的用户
      • 物品相似度的归一化
    • UserCF 与 ItemCF 的综合比较
       UserCF的推荐结果着重于反映和用户兴趣相似的小群体的热点,而ItemCF的推荐结果着重于维系用户的历史兴趣。换句话说,UserCF的推荐更社会化,反映了用户所在的小型兴趣群体中物品的热门程度,而ItemCF的推荐更加个性化,反映了用户自己的兴趣传承。

        • 考虑实际业务需求与场景
  • 2.5 隐语义模型
    • 基础算法(LFM)
      核心思想是通过隐藏特征(latent factor)联系用户兴趣和物品
      • 损失函数

        • 可用随机梯度下降法求解
      • 重要参数:
        • 隐特征个数 / 学习速率 / 正则化系数 / 负正样本比例
        • LFM的关键之一:如何生成负样本
          • 对于一个用户,从他没有过行为的物品中采样出一些物品作为负样本,使得正负样本数相等
          • 采样负样本时,要选取那些很热门,而用户却没有行为的物品。
    • LFM和基于领域的方法的比较
      • 理论基础
        LFM通过优化一个指标来建立最佳模型;基于领域的方法更多是基于一种统计的方法。
      • 离线计算的空间复杂度
        LFM:O(MF + FN)
        UserCF: O(MM)
        ItemCF: O(N
        N)
      • 离线计算的时间复杂度
        LFM: O(KFS)
        UserCF: O(M(K/M)^2)
        ItemCF: O(N
        (K/N)^2)
      • 在线实时推荐
        LFM实现在线实时推荐难度较高
      • 推荐解释
        ItemCF有较好的解释性,LFM较难解释
  • 2.6 基于图的模型

第3章 推荐系统冷启动问题

  • 3.1 冷启动问题简介
    • 问题分类
      • 用户冷启动
      • 物品冷启动
      • 系统冷启动
    • 常用解决方案
      • 利用热销榜进行推荐
      • 利用用户注册时的年龄、性别等数据做粗粒度的个性化
      • 利用用户社交数据为其推荐好友喜欢的物品
      • 要求用户在登录时对一些物品进行反馈,收集用户对这些物品的兴趣信息并推荐相似产品
      • 对于新加入的物品,可以利用内容信息,将它们推荐给喜欢过和它们相似的物品的用户
      • 在系统冷启动时,可以引入专家的知识,通过一定的高效方式迅速建立起物品的相关度表
  • 3.2 利用用户注册信息
    • 基于用户注册信息的推荐算法其核心问题是计算每种特征的用户喜欢的物品。(P82)
  • 3.3 选择合适的物品启动用户的兴趣
    • 物品需要具备的特点
      • 比较热门:让用户对一个物品进行反馈,前提是用户知道这个物品是什么
      • 具有代表性和区分性: 可以区分用户个性化兴趣
      • 启动物品集合需要有多样性:用户兴趣的可能性非常多,需要提供具有很高覆盖率的启动物品集合
    • 利用决策树选择启动物品集合:P87
  • 3.4 利用物品的内容信息
    • 通过物品内容(文本)计算物品相似性,基于内容的过滤算法

第4章 利用用户标签数据

  标签应用一种是让作者或专家给物品打标签;另一种是让普通用户给物品打标签(UGC)。当一个用户对一个物品打上标签,这个标签一方面描述了用户的兴趣,另一方面则表示了物品的语义,从而将用户和物品联系了起来。

  • 4.1 UGC标签系统的代表应用
    • Delicious / CiteLike / 豆瓣 / Hulu
  • 4.2 标签系统中的推荐问题
      主要问题有:1. 如何利用用户打标签的行为为其推荐物品(基于标签的推荐)2. 如何在用户给物品打标签时为其推荐适合该物品的标签(标签推荐)
    • 用户为什么进行标注
      • 分享,发表观点
      • 标准,用于检索
    • 用户如何打标签
    • 用户打什么样的标签
  • 4.3 基于标签的推荐系统
    • 算法的改进
      • TF-IDF思路对热门标签进行惩罚
      • 数据稀疏性:常用话题模型进行标签拓展
      • 标签清理
    • 基于标签的推荐解释
      • 标签云:提高推荐结果多样性;提供解释功能
  • 4.4 给用户推荐标签
    • 作用
      • 方便用户输入标签
      • 提高标签质量
    • 方法
      • 推荐物品上最热门的标签
      • 推荐用户常使用的标签
      • 将前两项进行加权融合

第5章 利用上下文信息

  准确了解用户的上下文信息(包括时间、地点、心情等),对于提升推荐效果有重要作用。

  • 5.1 时间上下文信息
    • 时间效应
      • 用户的兴趣是变化的
      • 物品也有生命周期
      • 季节效应
    • 系统时间特性的分析
      • 数据集每天独立用户数的增长情况
      • 系统物品的变化情况
        • e.g. 物品平均在线天数
        • e.g. 相隔T天系统物品流行度向量的平均相似度
      • 用户访问情况
    • 推荐系统的实时性
      • 推荐算法需要平衡考虑用户的近期行为和长期行为(即要让推荐列表反应出用户近期行为所体现的兴趣变化,又不能让推荐列表完全受用户近期行为的影响)
    • 推荐算法的时间多样性
      • 推荐系统每天推荐结果的变化程度被定义为推荐系统的时间多样性。时间多样性高的推荐系统中用户会经常看到不同的推荐结果(首先保证推荐的精度,在此基础上适当地考虑时间多样性)
  • 5.2 地点上下文信息

第6章 利用社交网络数据

  • 6.1 获取社交网络数据的途径
    • 电子邮件 / 用户注册信息 / 用户的位置数据 / 论坛和讨论组 / 即时聊天工具 / 社交网站
    • 社会图谱(Facebook)和兴趣图谱(Twitter)

第7章 推荐系统实例

  • 7.1 外围架构
  • 7.2 推荐系统架构
    • 推荐系统联系用户和物品的主要方式
    • 基于特征的推荐系统架构
      • 用户喜欢的物品、用户相似的用户也可以抽象成特征
      • 基于特征的推荐系统核心任务就被拆解成两部分,一个是如何为给定用户生成特征,另一个是如何根据特征找到物品
    • 用户特征种类
      • 属性特征
      • 行为特征
      • 话题特征:可应用主题模型生成
    • 推荐系统架构构成

      • 推荐系统可由多个推荐引擎组成,每个推荐引擎负责一类特征或一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定权重或者优先级进行合并、排序然后返回
        • 方便增/删引擎,控制不同引擎对推荐结果的影响
        • 可对不同的用户给出不同的引擎组合权重
  • 7.3 推荐引擎架构

    • 用户特征向量生成模块
       特征向量由特征和特征权重组成,计算时需要考虑:
      • 用户行为的总类:一般标准就是用户付出代价越大的行为权重越高。
      • 用户行为产生的时间
      • 用户行为次数
      • 物品的热门程度:冷门物品权重较高(用户对很热门的物品产生的行为往往不能代表用户个性,因为用户可能是在跟风)
    • 特征 — 物品相关推荐模块

      • 可以用不同方式计算多张相关表,然后在配置表中配置表与权重,最终应用时加权组合。
    • 过滤模块
      • 用户已经产生过行为物品
      • 候选物品以外的物品
        • 由于业务需求或者用户自己限定
      • 低质量/评论物品
    • 排名模块
      • 新颖性排名
      • 多样性排名
      • 时间多样性
      • 用户反馈:通过分析用户之前和推荐结果的交互日志,预测用户会对什么样的推荐结果比较感兴趣(点击预测模型)


书摘:《推荐系统实践》 作者 项亮

若转载请注明出处与链接,谢谢~

编辑于 2017-04-17

文章被以下专栏收录