推荐系统笔记

1、产生原因

  • 信息过载
  • 无明确需求

2、什么是推荐?

在信息过载又没有明确需求的情况下,找到用户感兴趣的东西。

《Mahout实战》上的定义是:推荐就是通过对喜好的这些模式进行预测,借以发现你尚未知晓,却合乎心意的新事物

3、推荐和搜索区别:

  • 相同点:快速发现有用信息的工具
  • 不同点:搜索引擎是用户找信息;推荐系统是信息找用户

为了解决信息过载的问题,代表性的解决方案是分类目录和搜索引擎。和搜索引擎一样,推荐系统也是一种帮助用户快速发现有用信息的工具。和搜索引擎不同的是,推荐系统不需要用户提供明确的需求,而是通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。

因此,从某种意义上说,推荐系统和搜索引擎对于用户来说是两个互补的工具。搜索引擎满足了用户有明确目的时的主动查找需求,而推荐系统能够在用户没有明确目的的时候帮助他们发现感兴趣的新内容。

从物品的角度出发,推荐系统可以更好地发掘物品的长尾。长尾商品往往代表了一小部分用户的个性化需求,发掘这类信息正是推荐系统的长项。

4、推荐系统定义

推荐系统广泛存在于各类网站中,作为一个应用为用户提供个性化推荐。它需要依赖用户的行为数据,因此一般都由后台日志系统、推荐算法系统和前台展示页面3部分构成。

5、推荐系统任务:

  • 发现有价值的信息
  • 增加曝光度

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

6、推荐系统的模块:

  • 获取用户偏好,计算用户模型,需求信息
  • 推荐对象模型,特征信息
  • 推荐算法
  • 推荐评估

7、推荐系统原理:

  • 基于社交网络推荐
  • 基于内容推荐:基于物品的属性进行推荐。
  • 热门推荐:推荐热门的商品
  • 协同过滤:仅仅通过了解用户与物品之间的关系进行推荐。

8、常见形式:

  • 猜你喜欢
  • 买了又买
  • 精品推荐
  • 关联互补

9、十大挑战

  • 数据稀疏:基于物品协同
  • 冷启动
  • 增量计算
  • 多样性与精确性的选择
  • 推荐系统的脆弱性
  • 用户行为的挖掘和利用
  • 推荐系统的评估
  • 用户界面及用户体验
  • 多维数据交叉利用
  • 社交网络推荐

10、用户建模流程:

用户–>获取用户信息–>建立用户模型–>模型的更新–>利用模型进行推荐–>提供推荐结果–>用户反馈–>更新模型

11、创建一个推荐引擎过程:

  • 1、创建输入。输入的数据是结构化的,包括用户、商品和喜好,或者还有时间戳,用于拆分数据
  • 2、创建推荐程序。选择推荐算法编写推荐程序。
  • 3、训练数据与评分。一般会将数据随机拆分为训练数据和测试数据,一般比例设置为8比2。
  • 4、评估结果。使用查全率查准率评估推荐程序,或者统计MAE、SMSE、UOC等
  • 5、输出结果。取Top K个结果。

输入的数据模型包括:用户、商品和偏好值,没有偏好值的关联成为布尔型偏好,这表示用户和物品的关联具备三种可能状态:喜好、不喜欢或无所谓。

12、推荐系统评测

主要有3种评测推荐效果的实验方法:

  • 离线实验:划分训练集和测试集,在训练集训练用户兴趣模型,在测试集预测
  • 优点:快速方便
  • 缺点:无法用真实的商业指标来衡量
  • 用户调查:用抽样的方法找部分用户试验效果
  • 优点:指标比较真实
  • 缺点:规模受限,统计意义不够
  • 在线实验:AB测试
  • 优点:指标真实
  • 缺点:测试时间长,设计复杂

实际中,这三种方法在推荐算法上线前都要完成。

评测指标:

    1. 用户满意度。用户作为推荐系统的重要参与者,其满意度是评测推荐系统的最重要指标。但是,用户满意度没有办法离线计算,只能通过用户调查问卷或者在线实验获得。
    1. 预测准确度。预测准确度度量一个推荐系统或者推荐算法预测用户行为的能力。这个指标是最重要的推荐系统离线评测指标,可以通过离线实验计算。在计算该指标时需要有一个离线的数据集,该数据集包含用户的历史行为记录。然后,将该 数据集通过时间分成训练集和测试集。最后,通过在训练集上建立用户的行为和兴趣模型预测用户在测试集上的行为,并计算预测行为和测试集上实际行为的重合度作为预测准确度。预测用户对物品评分的行为称为评分预测。评分预测的预测准确度一般通过均方根误差(RMSE)和平均绝对误差(MAE)计算。TopN推荐的预测准确率一般通过准确率(precision)/召回率(recall)度量。
    1. 覆盖率。覆盖率(coverage)描述一个推荐系统对物品长尾的发掘能力。覆盖率有不同的定义方法,最简单的定义为推荐系统能够推荐出来的物品占总物品集合的比例。覆盖率是一个内容提供商会关心的指标。
    1. 多样性。为了满足用户广泛的兴趣,推荐列表需要能够覆盖用户不同的兴趣领域,即推荐结果需要具有多样性。
    1. 新颖性。新颖的推荐是指给用户推荐那些他们以前没有听说过的物品。在一个网站中实现新颖性的最简单办法是,把那些用户之前在网站中对其有过行为的物品从推荐列表中过滤掉。评测新颖度的最简单方法是利用推荐结果的平均流行度,因为越不热门的物品越可能让用户觉得新颖。因此,如果推荐结果中物品的平均热门程度较低,那么推荐结果就可能有比较高的新颖性。
    1. 惊喜度。如果推荐结果和用户的历史兴趣不相似,但却让用户觉得满意,那么就可以说推荐结果的惊喜度很高,而推荐的新颖性仅仅取决于用户是否听说过这个推荐结果。
    1. 信任度。度量推荐系统的信任度只能通过问卷调查的方式,询问用户是否信任推荐系统的推荐结果。提高推荐系统的信任度主要有两种方法。首先需要增加推荐系统的透明度,而增加推荐系统透明度的主要办法是提供推荐解释。只有让用户了解推荐系统的运行机制,让用户认同推荐系统的运行机制,才会提高用户对推荐系统的信任度。其次是考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐解释。这是因为用户对他们的好友一般都比较信任,因此如果推荐的商品是好友购买过的,那么他们对推荐结果就会相对比较信任。
    1. 实时性。推荐系统的实时性包括两个方面。首先,推荐系统需要实时地更新推荐列表来满足用户新的行为变化。实时性的第二个方面是推荐系统需要能够将新加入系统的物品推荐给用户。这主要考验了推荐系统处理物品冷启动的能力。
    1. 健壮性(反作弊)。算法健壮性的评测主要利用模拟攻击。首先,给定一个数据集和一个算法,可以用这个算法给这个数据集中的用户生成推荐列表。然后,用常用的攻击方法向数据集中注入噪声数据,然后利用算法在注入噪声后的数据集上再次给用户生成推荐列表。最后,通过比较攻击前后推荐列表的相似度评测算法的健壮性。如果攻击后的推荐列表相对于攻击前没有发生大的变化,就说明算法比较健壮。
  • 设计推荐系统时尽量使用代价比较高的用户行为。比如,如果有用户购买行为和用户浏览行为,那么主要应该使用用户购买行为,因为购买需要付费,所以攻击购买行为的代价远远大于攻击浏览行为。
  • 在使用数据前,进行攻击检测,从而对数据进行清理。

下图直观地描述了准确率和召回率的含义:

一般来说,评测维度分为如下3种。

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

如果能够在推荐系统评测报告中包含不同维度下的系统评测指标,就能帮我们全面地了解推荐系统性能,找到一个看上去比较弱的算法的优势,发现一个看上去比较强的算法的缺点。

13、协同过滤

协同过滤分为:基于用户的推荐和基于物品的推荐。

基于用户的推荐是找出于该用户邻近的用户,然后将这些用户最感兴趣的物品推荐给该用户。通常包括以下几个组件:

  • 数据模型
  • 用户间的相似性度量
  • 用户邻域的定义:N个最相似用户构成的邻域和基于阈值的邻域
  • 推荐引擎

相似性度量的说明,请参考 Mahout推荐引擎介绍

《Mahout实战》上提到基于用户的推荐,Mahout中最佳方案为:使用两个最近的邻域,欧式距离相似性度量。

基于物品的推荐,就是给目标用户推荐与他喜欢的物品相似度较高的物品。

14、冷启动问题

冷启动分几种:

  • 用户冷启动,即用户刚刚来,还没有对物品做出行为,比如你刚注册豆瓣电影,但没有标记过任何一部电影,所以豆瓣很难根据你的行为来做出推荐;
  • 物品冷启动,新的物品一进入网站,还没有用户给出过对它的行为,那么如何将新物品推荐给可能会对它感兴趣的用户;
  • 系统冷启动, 即新开发的网站如何让用户体验到个性化服务的问题。

解决冷启动的方法:

1、利用用户注册信息。我们注册一个网站的账号的时候很可能会填写性别、年龄、职业等人口统计学特征;还有的网站会让用户描述兴趣;以及用户可能通过其他网站比如新浪微博、腾讯账号来登录,这时就可以采用用户的社交数据。利用的人口统计学特征越多,对用户的兴趣描述就越准确。

2、要求用户在注册时对一些物品进行反馈,通过这些反馈来推测用户兴趣。使用决策树来选择待测试的物品。

对于一个物品i,用户们对i的行为可以分为3类(喜欢、不喜欢、无感觉),然后看这三类人的兴趣是不一致,如果这三类人兴趣都差不多,那么i的区分度可能就不那么高,也就是说如果喜欢i和不喜欢i的人是兴趣类似的,那么i就没啥区分度,不能够用来度量新用户的兴趣。这个算法会从区分度最高的物品开始,将用户分成3类,又在每类用户找找到区分度最高的物品继续询问,一层层下去直到最后的叶子节点。

3、利用物品的内容信息。通过向量空间模型来表示物品的内容,将其表示成一个关键词向量,计算权重,再通过计算相似度来计算物品的相似度。这里涉及到文本挖掘工作。

4、发挥专家的作用,即利用专家来对数据进行标注。这个对绝大多数情况并不现实。

UserCF对物品冷启动问题并不敏感,因为总有用户会访问到新物品,此时给那些相似的用户推荐这个物品,就会有越来越多的人来访问这个物品,形成良性循环。在ItemCF中,物品冷启动就是比较严重的问题了,物品冷启动必须频繁更新物品相似度表,时间复杂度高。

时间: 2024-11-18 20:44:47

推荐系统笔记的相关文章

你不能错过的“推荐系统”资料合集

杂志: 架构师特刊 ① <架构师特刊:推荐系统(理论篇)> 内容目录: 第1章 推荐算法简介 第2章 协同过滤推荐算法 第3章 基于内容的过滤算法 第4章 混合推荐算法 第5章 如何选择推荐算法 第6章 推荐系统和搜索引擎的关系 ② <架构师特刊:推荐系统(实践篇)> 内容目录: 第1章 微博推荐架构的演进 第2章 Netflix的推荐系统和架构 第3章 博客推荐系统 第4章 Spotify每周歌曲推荐算法解析 第5章 达观个性化推荐系统实践 书籍 ① <推荐系统实践>

吴恩达导师Michael I. Jordan刚去清华手写版书讲了三天课,这有一份他的课程笔记

被称为"机器学习之父"的Michael I. Jordan教授上周(9月12-14日)在清华进行了为期三天的校内公开课,面对清华同学分享了他在伯克利AMP Lab和RISE Lab的最新研究成果. Jordan教授本次亲自上阵授课实属难得,为保证教学质量,本次系列课程也只面向清华学生开放,且不设录像直播,颇为珍贵.据大数据文摘了解,Jordan教授授课风格颇传统,全程抛弃多媒体设备,手写版书公式.本次讲座内容由机器学习方法和系统组成,主要涉及概率图模型.统计推断和模型评判,以及大规模机

基于Google Reader发展起来的个性化推荐系统之三大问题

郑昀@玩聚SR 20091003     中科院的xlvector(即项亮,他所在的团队The Ensemble在7月份获得Netflix大奖赛公开测试排名第一,但在9月22日Netflix宣布BPC获胜,原因据说只是因为项亮他们提交结果晚了20分钟)最近发布了一个小工具GRSuggest,有点像之前Kuber在FeedzShare所做过的"个性化阅读",都属于"基于某个Google Reader用户的Shared Items中的文章,为该用户推荐他可能感兴趣的其他文章&qu

『 读书笔记 』4月读书总结|博文推荐

原文链接:『 读书笔记 』4月读书总结|博文推荐 写在前面 计划是每月读 5-10 本书,书籍类型大概是三个方面的:金融,技术,管理.之所以选择这三个方面,一方面是因为自己对这三个方面都很有兴趣,其次是被 linkedin 创始人 Hoffman 的 ABZ 理论 深度影响.建议大家都看看 abz 理论那篇文章,如果我有空,也会整理一些常用的这类理论模型到博客里的. 月底读书总结的形式都很简单,只是简单的一个列表和简单的书评,对觉得比较好的书会有单独的读书笔记.另外推荐大家用 excel 来做一

[推荐系统] 自己动手写一个推荐系统

废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并对于推荐系统的算法的学术界最新的研究进展和流派作一些介绍.当然由于我做推荐系统之时还年幼,可能有很多偏颇甚至错误的见解,就当抛砖引玉,还请各位大大指点.     Reading lists 虽然很多人觉得作为AI的分支之一,推荐跟自然语言处理等问题的难度不可同日而语.但所谓磨刀不误砍柴工,我觉得,至少在开工前先应该阅读这样

基于模糊聚类和协同过滤的混合推荐系统

      Hybrid Recommender System based on Fuzzy Clustering and Collaborative Filtering       给出题目,想找的话直接在ElsevierSD里下载即可.       并不是逐句翻译,一些简单的背景比如经济啦什么的直接忽略,不过笔者会在博文里点出来.       一二三这样的标题是原论文的题目,我没翻译,为以后自己写英文论文做准备,以1234这样的标题开始的内容是笔者自己加上去的,就是我的笔记.       我

【笔记1】如何预测用户对给定物品的打分?

说明:最近在读<Data Minning Guide>这本书.接下来的几篇是读书笔记. 本书的第一章针对下面这个问题展开:如何预测用户对给定物品的打分? 作者从下面几个方面作了回答: 一.基于用户协同 --方法--1:用户之间的距离/相似度(K近邻算法) 二.基于物品协同 --方法1--:物品之间的相似度(修正的余弦相似度) --方法2--:物品之间的差异值(加权Slope One算法) 由于使用的是用户产生的各种数据,因此又称为社会化过滤算法. 协同过滤会遇到的种种问题,包括数据的稀疏性和算

APACHE安装笔记

apache|笔记 作者:车东 摘要: WEB应用容量规划:根据硬件配置和WEB应用的特点进行WEB服务的规划及一些简单的估算公式: APACHE安装过程:apache的通用的简化安装选项,方便以后的应用的模块化配置:修改 HARD_SERVER_LIMIT:vi /path/to/apache_src/src/include/httpd.h#define HARD_SERVER_LIMIT 2560 <===将原来的 HARD_SERVER_LIMIT 256 后面加个"0"a

推荐系统的作用和问题

推荐系统的作用 推荐系统(recommender systems)是利用信息过滤技术向用户推荐其可能感兴趣的信息.http://www.aliyun.com/zixun/aggregation/8086.html">推荐系统是有别于信息分类和信息搜索的信息处理方式. 信息分类是有序的按照时间/主题/类别/用户/任务等方式组织结构化信息,浏览分类信息可以帮助用户理解信息之间的组织方式,但是这种信息的呈现方式是基于用户已知目标信息的所属类别,用户认知事物偏向于模糊无序,难以从有序的信息中发现未