推荐系统读书笔记(推荐系统实战)

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

第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. 预测准确率
        • 评分预测: RMSE / MAE
          kdd.org/exploration_fil
        • TopN 推荐:准确率 、召回率, 准确率、召回率曲线
      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(NN)
      • 离线计算的时间复杂度
        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 推荐引擎架构

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445330.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

橙白oj 2017级《算法分析与设计》-练习02

注:A题我以为给新生出的,应该贼简单,是按顺序消灭,卡了十几分钟,成了最后一个ac的题,真是菜的真实。 Problem A: Description 白细胞是人体与疾病斗争的“卫士”。当病菌侵入人体体内时,白细胞…

python(9)-变量、input函数

变量、input函数1.变量的定义(不可变对象)2.变量的类型3.变量的命名规范4. 不同类型的数据计算5.类型转换函数6.input()7.Tips程序是用来处理数据的,而变量是用来存储数据的。 关于函数,是一个提前准备好的代码;可以直接使用,不用…

推荐算法--总结(08)

一、推荐系统结构二、推荐引擎算法(Algorithm)1、协同过滤推荐算法1.1 关系矩阵与矩阵计算1.1.1 用户与用户(U-U矩阵)1.1.2 物品与物品(V-V矩阵)1.1.3 用户与物品(U-V矩阵)1.1.4 奇异…

算法总结-1算法入门

1.0 前言 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。 …

Python(10)- 格式化输出%

格式化输出1. 格式化输出浮点数2. 格式化输出整数3. 格式化输出浮点数4. 格式化输出百分号%变量的格式化输出:input函数将信息输出到控制台,实现变量和文字一起输出。 %格式化操作符,和不同的字符连用,%s 字符串,%d 十…

FM系列算法解读(FM+FFM+DeepFM)

在计算广告中,CTR是非常重要的一环。对于特征组合来说,业界通用的做法主要有两大类:FM系列和Tree系列。这里我们来介绍一下FM系列。   在传统的线性模型中,每个特征都是独立的,如果需要考虑特征与特征之间的相互作用…

二叉树层序遍历

层序遍历序列为:ABCDEFG 思路:栈是先进后出的数据结构,而队列是先进先出的数据结构。 我们层序遍历,很明显,先遇到的节点先打印,不同于前中后序遍历,我们采用队列结构。 具体执行过程如下&…

深度学习(01)-- 基础学习

文章目录目录1. 深度学习基础1.1 深度学习总览1.2 深度网络训练过程1.2.1 传统神经网络的训练方法为什么不能用在深度神经网络1.2.2 deep learning训练过程1.3 数学知识:2. 九种深度学习模型2.1 受限玻尔兹曼机RBM2.2 自编码器AE(降维)2.3 深…

MachineLearning(1)-激活函数sigmoid、损失函数MSE、CrossEntropyLoss

损失函数1.激活函数2.损失函数2.1均方误差损失函数2.2交叉熵损失函数2.3 NLLLoss()2.4 BCELoss()1.激活函数 全连接网络又叫多层感知器,多层感知器的基本单元神经元是模仿人类神经元兴奋与抑制机制,对其输入进行加权求和,若超过某一阈值则该…

Java的IO总结

非流式文件类--File类 从定义看,File类是Object的直接子类,同时它继承了Comparable接口可以进行数组的排序。 File类的操作包括文件的创建、删除、重命名、得到路径、创建时间等,以下是文件操作常用的函数。 File类是对文件系统中文件以及文…

深度学习(02)-- ANN学习

文章目录目录1.神经网络知识概览1.1深度学习顶会1.2相关比赛1.3神经网络知识概览1.4神经网络编程一般实现过程2.简单神经网络ANN2.1 数据集:2.2 网络结构:2.3 代码实现2.3.1 读取数据,并做处理2.3.2 构建网络结构2.3.3 训练网络目录 1.神经网…

python(11)-if语句,断言assert

分支语句if1.if基本语法2 if语句的嵌套3 比较运算符号4 逻辑运算符:5 整数随机数初应用6 tip7.断言assert1.if基本语法 if语句开发中的应用场景:如果条件成立做一件事情,如果条件不成立做另外一件事情。有了if语句,程序有了分支.…

深度学习(03)-- CNN学习

文章目录目录1.CNN学习2.Keras深度学习框架目录 1.CNN学习 卷积神经网络CNN总结 从神经网络到卷积神经网络(CNN)我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,…

Collections 工具类常见方法

Collections 工具类常用方法: 排序查找,替换操作同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void reverse(List list)//反转 void shuffle(List list)//随机排序 void sort(List list)//按自然排序的升序排序 void sort(L…

PaperNotes(1)-Modeling the World from Internet Photo Collections

从网络图片集对世界进行建模AbstractIntroduction2 Previous Work2.1特征匹配2.2 稀疏重建2.3 基于图像建模2.4 基于图像的渲染2.5 图像浏览,检索和注释3 Overview概述4 Reconstructing Cameras and Sparse Geometry(相机标定与稀疏重建)4.1K…

深度学习(04)-- 典型CNN结构(LeNet5 ,AlexNet)

LeNet5 LeNet5可以说是最早的卷积神经网络了,它发表于1998年,论文原文Gradient-Based Learning Applied to Doucment Recognition作者是Yann Le Cun等。下面对LeNet5网络架构进行简单的说明,有兴趣的同学可以去参考原文,论文原文…

Arrays工具类常见方法

Arrays类的常见操作 排序 : sort()查找 : binarySearch()比较: equals()填充 : fill()转列表: asList()转字符串 : toString()复制: copyOf() 排序 : sort() // *************排序 sort****************int a[] { 1, 3, 2, 7, 6, 5, 4, 9 };// sort(int[] a)方法按照数字顺序…

Python(12)-while语句+赋值运算符号+转义字符

while循环语句1.while基本语法2.break continue3.转义字符4.赋值运算符5.Print函数输出换行符号1.while基本语法 循环语句的程序三大流程之一: 顺序 --从上到下以顺序的方式执行代码 分支流程–依据条件判断,决定要执行的代码分支–丰富代码形式 循环–…

CNN的几种经典模型

本文主要介绍一下CNN的几种经典模型比较。之前自己也用过AlexNet和GoogleNet,网络上关于各种模型的介绍更是形形色色,自己就想着整理一下,以备自己以后查阅方便 LeNet5 先放一张图,我感觉凡是对深度学习有涉猎的人,对…