协同过滤推荐算法

一、简介

  协同过滤(Collaborative Filtering,CF)推荐算法简单理解:分析用户的兴趣,在用户群体中找到指定用户的相似(兴趣:可以是感兴趣的,也可以是不感兴趣的)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
  目前协同过滤推荐算法主要由基于用户(User-based)的协同过滤、基于项目(Item-based)的协同过滤和基于模型(Model- based)的协同过滤。User-based和Item-based主要使用的是最邻近搜索(计算用户或项目间的相似度,根据相似度的高低进行推荐),以及在这基础上进行优化等。Model- based则是根据历史数据建立模型,再用模型来进行预测(用机器学习的思想解决问题)。

二、基于用户的协同过滤(UserCF)

  基于用户的协同过滤机制:根据用户的历史数据来计算用户的相似度,根据用户群体间的相似度进行推荐。它的基本假设是,喜欢类似物品的用户可能有相同或者相近的偏好。
流程:
1.收集用户信息
  收集可以代表用户兴趣的信息。如用户购买的商品记录,用户经常点赞的视频,或是用户看到后选择不敢兴趣的内容等。用户兴趣既可以是用户感兴趣的,也可以是用户不感兴趣的。
2.最近邻搜索(Nearest neighbor search, NNS)
  以用户为基础(User-based)的协同过滤的出发点是与用户A兴趣爱好相同的另一组用户B,就是计算两个用户的相似度。多次计算用户A与其他用户的相似度,得到用户A的最邻近集合。
3.产生推荐结果
  根据最近邻集合,对目标用户的兴趣进行预测,产生推荐结果。依据推荐目的进行推荐。较常见的推荐结果有Top-N 推荐和关系推荐。Top-N 推荐是针对个体用户产生,对每个人产生不一样的结果,例如:通过对A用户的最近邻用户进行统计,选择出现频率高且在A用户的评分项目中不存在的,作为推荐结果。关系推荐是对最近邻用户的记录进行关系规则挖掘。
对比:
  基于用户的协同过滤——根据用户的历史偏好数据计算相似度,如:看过的视频,购买过的商品等。
  基于人口统计学的推荐——主要考虑用户的本身特征计算相似度,如年龄、职业、性别等。

三、基于项目的协同过滤(ItemCF)

  基于项目的协同过滤算法就是通过计算已评价项目和待预测项目之间的相似度,并将相似的项目推荐给目标用户。
流程:
1.收集项目信息
  收集已经被用户评价过的项目信息。如用户对项目的评价、用户浏览项目的次数、或者用户为项目打的标签等。
2.针对项目的最近邻搜索
  先计算已评价项目和待预测项目的相似度,并以相似度作为权重,加权各已评价项目的分数,得到待预测项目的预测值。
3.产生推荐结果
  以项目为基础的协同过滤不用考虑用户间的差别,所以精度比较差。但是却不需要用户的历史数据,或是进行用户识别。对于项目来讲,它们之间的相似性要稳定很多,因此可以离线完成工作量最大的相似性计算步骤,从而降低了在线计算量,提高推荐效率,尤其是在用户多于项目的情形下尤为显著。
对比:
  基于项目的协同过滤——根据新项目和已评价项目之间的相关信息计算相似度。
  基于内容的推荐——基于物品本身的属性特征信息计算相似度。

四、基于模型的协同过滤 *

  基于模型的协同过滤主要是用机器学习的思想来建模解决,用模型来进行预测和推荐。目前将深度学习和推荐算法相结合进行推荐也很火热。在基于模型的协同过滤中使用的主流方法包括关联算法、神经网络、矩阵分解、聚类算法、分类算法、回归算法、图模型以及隐语义模型。上诉涉及到的算法我之后会再发详细的讲解,这里只是简单提几个。
(1)关联算法:算法核心就是要找出通过条件A可以推出条件B的强关联的规则。挖掘出强关联规则的方法主要通过计算每个项集的频繁项集,然后筛选出比最小支持度大的项集,一直反复循环查找,直到没有符合要求的频繁项为止,最后计算符合要求的频繁项集的置信度和提升度,得出强关联规则。关联规则算法中找寻频繁项集主要依赖于三个指标,分别是支持度、置信度和提升度。常用的关联推荐算法有Apriori,FP Tree和PrefixSpan。
(2)神经网络:从目前看,使用神经网络做协同过滤和其他推荐算法相融合是以后研究、应用的一个趋势。目前比较主流的有用两层神经网络来做推荐算法的是限制玻尔兹曼机(RBM)。如果用多层的神经网络来做协同过滤效果应该会更好,用深度学习的方法来做协同过滤应该是将来的一个趋势。
(3)矩阵分解:目前用矩阵分解做协同过滤是目前使用也很广泛的一种方法。因为在协同过滤使用过程中经常会遇到数据稀疏性的问题,通过矩阵分解将高维矩阵分解为低维矩阵再进行计算。目前主流的矩阵分解推荐算法主要是SVD的一些变种,比如FunkSVD,BiasSVD和SVD++。

五、优缺点

优点:
  1.新异兴趣发现、不需要领域知识;
  2.随着时间推移性能提高;
  3.推荐个性化、自动化程度高;
  4.能处理复杂的非结构化对象。
缺点:
  1.数据稀疏性问题;
  2.可扩展性问题;
  3.新用户问题(冷启动);
  4.质量取决于历史数据集;
  5.系统开始时推荐质量差。

基于协同过滤的推荐算法相关推荐

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

    推荐算法-基于协同过滤的推荐算法 在如今信息量呈爆炸式增长的时代,谷歌百度等搜索引擎为人们查找信息提供了便利,帮助用户快速查找有价值的信息.然而此类查询方式是大众化的,无法根据个人兴趣为用户展示相关的 ...

  2. 基于协同过滤的推荐算法(用户协同、物品协同、模型协同)

    文章目录 一.介绍 1.基于用户的协同过滤推荐 2.基于项目(物品)的协同过滤推荐 3.基于模型的协同过滤推荐 二.实现步骤 1.用户协同过滤和物品协同过滤的实现方法 1)收集用户偏好 2)计算用户或 ...

  3. 基于CF(协同过滤)推荐算法

    基于物品的CF(协同过滤)推荐算法 1.1算法简介 CF(协同过滤)简单来形容就是利用兴趣相投的原理进行推荐,协同过滤主要分两类,一类是基于物品的协同过滤算法,另一种是基于用户的协同过滤算法,这里主要 ...

  4. 基于协同过滤的推荐引擎

    探索推荐引擎内部的秘密"系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基本的优化方法,例如聚类和分类的应用.同时在理论讲解的基础上,还会结合 Apache Maho ...

  5. 个性化试题推荐系统 协同过滤推荐算法在在线考试系统中的运用 基于用户/项目的协同过滤推荐算法 混合协同过滤推荐算法 协同过滤混合推荐算法

    个性化试题推荐系统 协同过滤推荐算法在在线考试系统中的运用 一.项目开发技术及功能介绍 1.SSH开发框架(spring+struts+hibernate) 2.js.jquery.bootstrap ...

  6. slope one 推荐算法python 代码_基于协同的SlopeOne推荐算法原理介绍和实现

    Slope One 算法是由 Daniel Lemire 教授在 2005 年提出的一个 Item-Based 的协同过滤推荐算法. --文章概要 该篇文章主要介绍Slope One算法.Slope ...

  7. 基于协同过滤的推荐引擎(理论部分)

    记得原来和朋友猜测过网易云的推荐是怎么实现的,大概的猜测有两种:一种是看你听过的和收藏过的音乐,再看和你一样听过这些音乐的人他们喜欢听什么音乐,把他喜欢的你没听过的音乐推荐给你:另一种是看他听过的音乐 ...

  8. 蔬菜购物网站设计【协同过滤的推荐算法】

    研究目的: 本次研究的目的是开发一种基于用户行为和物品关联的推荐算法,用于提供蔬菜购物网站的个性化推荐服务.通过分析用户的购买历史.评价.收藏等信息,找到相似用户或相似物品,从而向用户推荐符合其兴趣和 ...

  9. 基于协同过滤算法为电视产品制订个性化推荐

    1 绪论 1.1 背景 在互联网技术日益发展和进步的时代,各种数据呈现井喷式增长状态,仅2017 年"双十一"天猫旗下购买物品所产生的交易额最终定格在 1682 亿元,其中,无线成 ...

  10. 基于内容的推荐和基于协同过滤推荐

    1.基于内容的推荐:根据物品或内容的元数据,发现物品或内容的相关性,然后基于用户以前的喜好记录推荐给用户相似的物品. 如:对于用户 A,他喜欢看电影 A,那么系统就可以给他推荐类似的电影 C. 2.基 ...

最新文章

  1. linux中ls命令
  2. 成功解决No such file or directory: site-packages\\pyyaml-5.3-py3.6-win-amd64.egg\\EGG-INFO\\top_level.t
  3. mysql 数据库编程_MySQL数据库编程(C++语言)
  4. Qt Creator使用补充工具栏
  5. 更加安全的密钥生成方法Diffie-Hellman
  6. setTimeout 和 setInterval 的区别
  7. Spring框架----Spring的环绕通知
  8. LSTM神经网络算法
  9. 测试基础--测试方法
  10. 案例1—MP3在线搜索下载程序
  11. 图片合成视频python
  12. java 汉字转拼音工具_java汉字转拼音工具类
  13. Leetcode-数据结构-88. 合并两个有序数组
  14. [CryptoHack] RSA-PRIMES PART1 Write-Up
  15. Android 使用系统下载管理器DownloadManager下载文件
  16. 在Final Cut Pro X 中如何把音频和视频对齐?
  17. 高空抛物检测(侦测)系统为您撑起一把安全之伞
  18. 计算机的假桌面,给电脑桌面放个假!极品桌面抢先评测
  19. MAPGIS-TDE 三维处理平台简介
  20. 脉冲神经元的建模与分析

热门文章

  1. 局域网传文件_微信QQ传文件慢?你可以用这5款跨平台文件传输软件
  2. 一个在线挑选编程字体的网站
  3. DnsJumper下载
  4. RC ORC Parquet 格式比较和性能测试
  5. Cat8 八类网线是什么?与Cat5、Cat6、Cat7网线的区别?
  6. 有道单词本添加js实现自动阅读单词
  7. windows 怎么添加环境变量
  8. Visual Studio2019使用nmake编译调用libcurl库
  9. 【Python游戏】Python实现一个推箱子小游戏 | 附带源码
  10. esp8266教程:定时器之原理基础