一、推荐系统

【维基百科】推荐系统是一种信息过滤系统,用于预测用户对物品的“评分”或“偏好”。

推荐系统近年来非常流行,应用于各行各业。推荐的对象包括:电影、音乐、新闻、书籍、学术论文、搜索查询、分众分类、以及其他产品。也有一些推荐系统专门为寻找专家、合作者、笑话、餐厅、美食、金融服务、生命保险、网络交友,以及Twitter页面设计。

很多时候简单粗暴的方式往往也是行之有效的:“如果你不知道该推荐什么,那么推荐大家都喜欢的准没错“。像热门榜单、最多观看排行榜等都属于这个问题。

TopN的问题前面已经做过了介绍,本文的侧重点在于,不同的人对于“好”的理解不一样,换句话说也就是偏好不同,所以需要为不同用户推荐他自己感兴趣的内容,即个性化推荐。

个性化推荐的两个主要思想八个字概括之:物以类聚、人以群分。主要的方法及变种应该有很多,像协同过滤、基于内容的推荐、基于标签的推荐等等。

二、个性化推荐算法起源

个性化推荐概念的首次出现是在1995年3月的美国人工智能协会上,由卡耐基梅隆大学的 Robert Armstrong等提出了个性化导航系统 Web Watcher。同时,斯坦福大学的Marko balabanovic等也推出了LIRA——一个个性化推荐系统。自此之后,个性化推荐的研究开始蓬勃发展。

推荐算法的研究起源于20世纪90年代,由美国明尼苏达大学 GroupLens研究小组最先开始研究,他们想要制作一个名为 Movielens的电影推荐系统,从而实现对用户进行电影的个性化推荐。首先研究小组让用户对自己看过的电影进行评分,然后小组对用户评价的结果进行分析,并预测出用户对并未看过的电影的兴趣度,从而向他们推荐从未看过并可能感兴趣的电影。此后, Amazon开始在网站上使用推荐系统,在实际中对用户的浏览购买行为进行分析,尝试对曾经浏览或购买商品的用户进行个性化推荐。根据 enture Beat的统计,这一举措将该网站的销售额提高了35%自此之后,个性化推荐的应用越来越广泛。

三、个性化推荐算法分类

个性化推荐相较于非个性化推荐,即推荐的内容是因人而异的。

推荐算法有很多种,包含基于内容、协同过滤、基于关联规则、基于效用、基于知识、组合推荐等。我们重点说一下前两种。

1.基于内容的推荐算法

原理是用户喜欢和自己关注过的Item在内容上类似的Item,比如你看了哈利波特I,基于内容的推荐算法发现哈利波特II-VI,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你,这种方法可以避免Item的冷启动问题(冷启动:如果一个Item从没有被关注过,其他推荐算法则很少会去推荐,但是基于内容的推荐算法可以分析Item之间的关系,实现推荐),弊端在于推荐的Item可能会重复,典型的就是新闻推荐,如果你看了一则关于MH370的新闻,很可能推荐的新闻和你浏览过的,内容一致;另外一个弊端则是对于一些多媒体的推荐(比如音乐、电影、图片等)由于很难提内容特征,则很难进行推荐,一种解决方式则是人工给这些Item打标签。

2.协同过滤算法

原理是用户喜欢那些具有相似兴趣的用户喜欢过的商品,比如你的朋友喜欢电影哈利波特I,那么就会推荐给你,这是最简单的基于用户的协同过滤算法(user-based collaboratIve filtering),还有一种是基于Item的协同过滤算法(item-based collaborative filtering),这两种方法都是将用户的所有数据读入到内存中进行运算的,因此成为Memory-based Collaborative Filtering,另一种则是Model-based collaborative filtering,包括Aspect Model,pLSA,LDA,聚类,SVD,Matrix Factorization等,这种方法训练过程比较长,但是训练完成后,推荐过程比较快。

3.主要推荐方法优缺点

推荐方法 优点 缺点
基于内容推荐 推荐结果直观,容易解释;

不需要领域知识

新用户问题;

复杂属性不好处理;

要有足够数据构造分类器

协同过滤推荐 新异兴趣发现、不需要领域知识;

随着时间推移性能提高;

推荐个性化、自动化程度高;

能处理复杂的非结构化对象

稀疏问题;

可扩展性问题;

新用户问题;

质量取决于历史数据集;

系统开始时推荐质量差;

基于规则推荐 能发现新兴趣点;

不要领域知识

规则抽取难、耗时;

产品名同义性问题;

个性化程度低;

基于效用推荐 无冷开始和稀疏问题;

对用户偏好变化敏感;

能考虑非产品特性

用户必须输入效用函数;

推荐是静态的,灵活性差;

属性重叠问题;

基于知识推荐 能把用户需求映射到产品上;

能考虑非产品属性

知识难获得;

推荐是静态的

四、推荐算法的应用

推荐算法已经应用到了各个领域的网站中,包括图书、音乐、视频、新闻、电影、地图等等。而电子商务的应用近年来逐渐普及,Amazon,当当网,豆瓣图书,淘宝,京东等都使用了电子商务推荐系统,推荐系统不止给这些互联网商家带来了巨大的附加利益,同时也提高了用户满意度,增加了用户黏性。

而最高深的推荐境界是:千人千面。据说微信看一看中的“精选”就会为每个人推荐不同的内容,大家可以关注下。


我的微信公众号:架构真经(id:gentoo666),分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。每日更新哦!

参考阅读:

  1. https://www.zhihu.com/question/20326697
  2. https://zhuanlan.zhihu.com/p/27768663
  3. https://baike.baidu.com/item/推荐算法

算法高级(41)-推荐算法实现相关推荐

  1. fm算法详解_fm算法(基于fm推荐算法)

    在简单频率调制中,两个振荡器都只用正弦曲线(Sinusoidal)的波形.不过,由于. 这使得作曲家也不必用频谱过于复杂的波形完成FM合成.事实上,如用一个频谱成分. 豆瓣FM的推荐算法没有停止,反而 ...

  2. mahout 推荐算法 java_Mahout之推荐算法基本实例

    Mahout中主要核心的三大算法为推荐,聚类及分类算法,今天就最基本的推荐算法做总结,推荐中常用的两个推荐算法是"user_based"和"item_based" ...

  3. 推荐系统 --- 推荐算法 --- 基于知识的推荐算法

    基于知识的推荐方法 基本思想 通过交互.会话等方式直接了解到用户需求("问"),然后再寻找匹配的视频("找") 解决思路 优点 不存在冷启动的问题 由于与用户存 ...

  4. 基于神经网络的推荐算法,协同过滤推荐算法python

    大数据运维的主要工作内容是什么? . 大数据相关工作岗位很多,有大数据分析师.大数据挖掘算法工程师.大数据研发工程师.数据产品经理.大数据可视化工程师.大数据爬虫工程师.大数据运营专员.大数据架构师. ...

  5. 基于土壤数据与机器学习算法的农作物推荐算法代码实现

    1.摘要 近年来,机器学习方法在农业领域的应用取得巨大成功,广泛应用于科 学施肥.产量预测和经济效益预估等领域.根据土壤信息进行数据挖掘,并在此基础上提出区域性作物的种植建议,不仅可以促进农作物生长从 ...

  6. fm算法 c语言,推荐算法之—FM

    1.什么是FM算法 FM即Factor Machine,因子分解机 2.为什么需要FM 1).特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接建模,很有可能忽略掉特征与特征之间的关联信息,一 ...

  7. 基于高校图书馆的用户画像、可视化、模型预测、推荐算法项目实现

    需要本项目的可以私信博主获取源码及项目!!! 本研究基于高校图书馆的借阅信息.馆藏图书信息.读者入馆信息.用户信息等多维度的数据表,首先将不同年份的数据拼接在一起,按照时间维度进行整合,并保证数据维度 ...

  8. 有粉丝想转行推荐算法,我觉得......

    最近公众号后台收到一个读者的留言,他在某手机厂商做CV开发工作,想转行推荐系统,让我拿拿主意. 从前途角度考虑,我是非常建议的. 1 大厂必备核心--推荐系统 从商业角度来讲,互联网主要起到平台作用, ...

  9. 基于矩阵分解的推荐算法

    https://www.toutiao.com/a6656899746516435469/ 2019-02-12 08:10:52 1.算法介绍 在推荐算法中,主要解决的问题是找到用户对物品的偏好得分 ...

最新文章

  1. Sampling Procedure 和 Sample-drawing Procedure, SAP QM里的双胞胎?
  2. 电话双音频拨码信号采集
  3. 【LESS系列】简介和使用
  4. c语言uint32_使C语言实现面向对象的三个要素,你掌握了吗?
  5. centos8.2安装ovirt
  6. 深入理解ARM体系架构(S3C6410)---PWM实例
  7. 2007年11月网络工程师考试试题答案
  8. 502 (Bad Gateway) 原因及解决方法
  9. php 模拟蜘蛛,PHP实现使用CURL模拟百度蜘蛛进行采集
  10. conda SSL错误
  11. 大疆aeb连拍_一张图带你轻松读懂摄影必备专业术语~
  12. ScreenShot(Reproduced)
  13. ajax mvc 服务器 怎么设置,ajax mvc 服务器 怎么设置
  14. PTA L3-031 千手观音 (30 分)
  15. [转]键盘上的符号用英语怎么读?
  16. 程序员:不是所有的程序员称为程序员!
  17. Java中list倒序
  18. ipc_namespace
  19. C语言—航班订票系统
  20. 超全的web开发工具和资源(留着以后慢慢学)

热门文章

  1. Python基础学习:svn导出差异文件脚本
  2. 在linux中配置安装telnet服务
  3. SQL Server 自动更新统计信息的基本算法
  4. 线程池之ThreadPool与ForkJoinPool
  5. 不同的二叉搜索树 II
  6. flink CompactingHashTable源码解析
  7. 手动抛出异常_Java异常处理最佳实践及陷阱防范
  8. golang 项目设置后台运行
  9. PHP框架最低支持PHP版本
  10. Python注释风格--Google风格