个性化推荐系统简介

个性化推荐系统的定义在 1997 年由 Resnick 和 Varian 提出:利用互联网向用户提供信 息和建议,帮助用户选择产品,或模拟售货员帮助用户完成购买行为的系统 。通常推荐 由三个要素组成:推荐算法、用户、候选推荐项目。简单来说,一次推荐过程就是推荐算 法从候选推荐项目中挑出某些项目给用户。

目前个性化推荐系统已经在电子商务、视频、音乐、新闻、博客等领域得到了广泛应 用。通常这些领域的网站和应用会推荐若干商品或者作品给用户,这些推荐项目通常以“猜 你喜欢”、“购买此商品的顾客也同时购买”、“相似的商品”等形式出现,所推荐的物品便 是推荐系统通过推荐算法从海量物品中挑选出的。由于推荐系统会根据用户的历史行为数 据给出因人而异的推荐结果,所以称之为个性化推荐。

一套完整的个性化推荐系统通常包括用户信息收集、推荐模型计算、推荐结果展示三 个部分。个性化推荐系统首先收集用户的网络操作行为——如浏览、评分、购买等,将这 些行为数据存储到数据仓库中。然后通过机器学习、数据挖掘等相关技术来对这些数据进 行分析,更进一步可以从这些历史数据中学习用户的兴趣爱好,运行推荐算法生成推荐模 型。有了推荐模型,便可以为用户提供个性化的推荐服务,实现主动推荐的目的。个性化 推荐技术可以充分提高信息系统或者站点的服务质量和使用效率,从而吸引更多的用户 。

个性化推荐系统的输入数据可以有多种来源途径,通常分为显示输入和隐式输入两种 类型。显示输入是指用户明确表达喜好的行为,例如给电影评分、给微博点赞、购物后给 予好评或差评等。隐式输入则一般是非特意的行为,如浏览商品详情页面、查看电影评价、 搜索关键词等,这些行为并不代表用户喜欢或讨厌某个物品,但是推荐系统能够从中挖掘 出用户的兴趣信息。

个性化推荐系统的输出也是多样化的,有各种各样的形式。最常见的是推荐列表形式,
如亚马逊等电子商务网站的推荐商品列表、YouTube 等视频网站的推荐影片列表、微博等 社交网站的推荐关注用户等。这类是最直接的推荐形式,明确告诉了用户这些是推荐结果, 属于显示的推荐。另一类形式是比较隐式的推荐:购物网站在关键词搜索结果列表中加入 推荐的结果;新闻网站根据推荐算法优化文章的排序;网络问答社区把用户可能感兴趣的 话题优先展示。这些推荐系统融入到了传统的系统模块中,起到提升原有系统功能的效果。

推荐算法分类

推荐算法是推荐系统的核心,直接决定着推荐系统的性能和效果。依据推荐方法的不 同,通常推荐算法可以分为如下几大类:基于内容的推荐(Content-Based Recommendation), 协同过滤推荐 (Collaborative Filtering Recommendation) , 混 合 型 推 荐 (Hybrid Recommendation) 。

基于内容的推荐

基于内容的推荐是用项目内容或特征来定义所要推荐的项目或对象,然后系统基于用户评价对象的特征学习用户的兴趣,依据用户资料与待预测项目的匹配程度进行推荐。项目或对象的特征通常是文本内容,比如标题、名称、标签及该物品的其他元数据。基于内容的推荐系统不可避免地受到有限的特征信息获取技术的约束,根据推荐对象的不同,可能会要用到文本挖掘技术、图片识别技术、视频挖掘技术等。特别是自动提取多媒体数据内容特征的相关技术还不是很成熟,导致基于内容的推荐算法在这方面的相关应用受到了很大限制。

协同过滤推荐

协同过滤(Collaborative Filtering,CF)是一种根据用户对各种产品的交互与评分来推荐 新产品的推荐系统技术。协同过滤最突出的优点就在于它的鲁棒性,适用于多种输入数据: 无论是“显式”的输入数据(例如在电影网站上进行评分)还是“隐式”的(例如用户访 问了一个产品的页面但是没有对产品评分)都可以用来做协同过滤。仅仅根据这些交互, 协同过滤算法就能够知道哪些产品之间比较相似以及哪些用户之间比较相似,然后就可以 做出新的推荐 。相比与基于内容的推荐算法,协同过滤推荐算法不需要分析项目的内 容和特征,所以可以不依赖于特征信息获取技术,从而适用于各种类别的项目。

总体上来说,协同过滤是一种利用集体智慧的方法,使用部分或所有用户的行为数据来进行推荐,不同用户通过推荐系统间接地相互协作,来获取各自感兴趣的信息。协同过 滤的核心是找出用户或项目的邻居,即相似的用户或项目,然后取若干个最近邻居推荐给 用户。根据具体的实现,协同过滤又可以被分为多个子类别,分别是基于记忆的协同过滤 (Memory-Based Collaborative Filtering),基于模型的协同过滤(Model-Based Collaborative Filtering),基于社交网络关系的协同过滤(Social-Based Collaborative Filtering)等。

基于记忆的协同过滤

基于记忆的协同过滤算法使用全部或大部分用户—项目数据来生成预测。基于记忆的 协同过滤常用的有两种 :基于物品的协同过滤(Item-Based Collaborative Filtering, Item-Based CF) 和基于用户的协同过滤 (User-Based Collaborative Filtering,User-Based CF)。

对于类似微博、新闻、论坛、社交和知识问答等内容极多、候选推荐项目庞大的系统, User-Based CF 方法通常优于 Item-Based CF。因为这种情况下,物品相似度的计算量巨大, 而且需要频繁更新,而使用 User-Based CF 能够避免计算物品间的相似度。相反,对于一 个用户数量远超过物品数量的应用来说,此时 Item-Based CF 的性能可能比 User-Based CF 更优,这是由于此种情况的物品间相似度要比用户间相似度更容易计算。由此可见,推荐 系统的设计者必须根据应用的特点来选择合适的算法 ,不能一概而论。

与基于内容的推荐算法相比,Item-Based CF 和 User-Based CF 有下列优点:
- 1) 能够过滤难以进行内容分析的信息,如艺术品、音乐、文本、视频;
- 2) 可以基于一些复杂的,难以描述的概念进行过滤,如品质、风格、流行度等。

然而,Item-Based CF 和 User-Based CF 也存在着以下的缺点:
- 1) 稀疏性问题。如果用户对物品的评价非常稀疏,没有充足的数据用于计算相似性,
那么基于评价所得到的用户或物品间的相似性可能不准确;
- 2) 可扩展性问题。随着用户和物品的增多,数据量将会剧增,系统的性能会越来越
低;
- 3) 冷启动问题。如果某一物品从来没有被评价过,则该物品不会被列为相似物品,
那么这个物品就不可能被推荐。类似的,对于一个从未评价过物品的用户,无法 获得推荐。

基于模型的协同过滤

Model-Based CF 简单来说是先用历史数据训练得到推荐模型,再用此模型进行预测的推荐算法。常见的模型算法包括基于概率的朴素贝叶斯算法、聚类算法和基于矩阵分解的算法等 。

常用的矩阵分解算法有:正则化矩阵分解(Regularized Matrix Factorization),带偏置 的矩阵分解(Biased Matrix Factorization),交替最小二乘法(Alternating Least Squares,ALS) 和奇异值分解(Singular Value Decomposition,SVD)。这些算法的基本思想都是将稀疏且 高维的用户—物品评分矩阵分解为两个低维矩阵,分别表示用户的特征和物品的特征。用 户的特征矩阵可以代表用户的兴趣,同样的,物品的特征矩阵暗含了物品的特点,这两个 矩阵的乘积能反应出用户对物品的喜好程度 。所以该类方法的主要工作就是计算出用户 的特征矩阵和物品的特征矩阵。

基于社交网络关系的协同过滤

简单来说,是一种使用用户的社交关系数据、用户好友的喜好数据等社交类数据来进行推荐的算法。该类算法适合于微博、微信等拥有用户社交关系数据的系统。

混合型推荐

混合推荐是指将多种推荐技术综合,取长补短,以此来获得更好的推荐效果。常用的
方案是将协同过滤技术与另一种算法结合,然后将不同方法得出的推荐结果进行筛选和融
合,从而提高推荐效果。

基于Spark实现推荐算法-1:推荐算法简介相关推荐

  1. 基于Spark的机器学习实践 (九) - 聚类算法

    0 相关源码 1 k-平均算法(k-means clustering)概述 1.1 回顾无监督学习 ◆ 分类.回归都属于监督学习 ◆ 无监督学习是不需要用户去指定标签的 ◆ 而我们看到的分类.回归算法 ...

  2. 基于Spark的机器学习实践 (七) - 回归算法

    0 相关源码 1 回归分析概述 1.1 回归分析介绍 ◆ 回归与分类类似,只不过回归的预测结果是连续的,而分类的预测结果是离散的 ◆ 如此,使得很多回归与分类的模型可以经过改动而通用 ◆ 因此对于回归 ...

  3. 基于Spark MLlib平台的协同过滤算法---电影推荐系统

    协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,协同过滤算法按照数据使用 ...

  4. 基于Spark ALS算法的个性化推荐

    今天来使用spark中的ALS算法做一个小推荐.需要数据的话可以点击查看初识sparklyr-电影数据分析,在文末点击阅读原文即可获取. 其实在R中还有一个包可以做推荐,那就是recommenderl ...

  5. 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM

     杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM 发表于2015-09-30 09:53| 1447次阅读| 来源CSDN| 2 条评论| 作者杨鹏 机器学习推荐算法 ...

  6. 推荐系统 --- 推荐算法 --- 基于用户行为的推荐算法 - 协同过滤算法

    概述 历史 1992年,Goldberg.Nicols.Oki及Terry提出 基本思想 爱好相似的用户喜欢的东西可能也会喜欢 优点 共享朋友的经验,提高推荐的准确度 根据爱好相似的用户喜欢的视频进行 ...

  7. Spark推荐系列之Word2vec算法介绍、实现和应用说明

    Spark推荐实战系列目前已经更新: Spark推荐实战系列之Swing算法介绍.实现与在阿里飞猪的实战应用 Spark推荐实战系列之ALS算法实现分析 Spark中如何使用矩阵运算间接实现i2i F ...

  8. 基于协同过滤算法的推荐

    2019独角兽企业重金招聘Python工程师标准>>> 基于协同过滤算法的推荐 (本实验选用数据为真实电商脱敏数据,仅用于学习,请勿商用) 数据挖掘的一个经典案例就是尿布与啤酒的例子 ...

  9. 文献记录(part65)--基于用户聚类的异构社交网络推荐算法

    学习笔记,仅供参考,有错必纠 关键词 :社交网络:推荐系统:聚类算法:图摘要:数据挖掘 文章目录 基于用户聚类的异构社交网络推荐算法 摘要 引言 GCCR总体框架 基于用户聚类的异构社交网络推荐算法 ...

最新文章

  1. mongodb之备份
  2. python功能性爬虫案例_Python使用requests及BeautifulSoup构建爬虫实例代码
  3. 高级交换路由课程PPT下载打包了
  4. 编程心法 之什么是MVP What is MVP development?
  5. android国际化(多语言)
  6. openstack migrate image
  7. Gateway配合sentinel自定义限流_你知道如何使用阿里Sentinel实现接口限流吗?
  8. Oracle与OpenJDK之间的区别
  9. 【题解】luogu P1757 通天之分组背包
  10. Ubuntu系统目录结构
  11. ios apple语音性别_如何使用Apple的CoreML和Vision API构建图像识别iOS应用
  12. jQuery Validate 初见面
  13. In Depth和In Action的区别——写在《深入理解C#(第二版)》出版之际
  14. 《中国AI算力发展评估报告》发布!北京只能排第二,推理需求猛增
  15. sql返回刚添加的数据的自增id
  16. json for-in 来循环对象的属性
  17. 模块化编程和Jigsaw项目最新早期访问版本使用教程
  18. 图像处理ORL--训练集及测试集建立--Matlab实现
  19. 【参考文献】软骨细胞生长培养方法
  20. 物联网毕业设计 车牌识别系统 stm32

热门文章

  1. 苏州服务器渠道销售额,国内排名第二!华为确定卖掉X86服务器业务,或由苏州国资委接盘...
  2. 多计算机网络企业网 开题报告,(中小型企业网络设计开题报告.doc
  3. 并发编程--线程同步之 synchronized关键字(一)
  4. java获得当前时间一小时前的时间
  5. 此版本专为旧版android打造,怎么去除提示:此应用专为安卓旧版打造,因此可能无法......
  6. RMXP脚本解析(二十二):Game_Enemy
  7. React Native快速构建跨平台移动应用程序
  8. 作为数据分析师,我一般都是去哪查数据的
  9. 生产环境(基于docker)故障排除? 有感于博客园三番五次翻车
  10. C#集合利用System.Linq.Enumerable.Select()方法执行集合类型转换