前一阵子准备毕业论文的开题,一直在看推荐系统相关的论文。对推荐系统有了一个更加清晰和理性的认识,也对推荐算法有了深入了解。借此机会总结分享一下,大家多多拍砖。

推荐系统的出现

  随着互联网的发展,人们正处于一个信息爆炸的时代。相比于过去的信息匮乏,面对现阶段海量的信息数据,对信息的筛选和过滤成为了衡量一个系统好坏的重要指标。一个具有良好用户体验的系统,会将海量信息进行筛选、过滤,将用户最关注最感兴趣的信息展现在用户面前。这大大增加了系统工作的效率,也节省了用户筛选信息的时间。

  搜索引擎的出现在一定程度上解决了信息筛选问题,但还远远不够。搜索引擎需要用户主动提供关键词来对海量信息进行筛选。当用户无法准确描述自己的需求时,搜索引擎的筛选效果将大打折扣,而用户将自己的需求和意图转化成关键词的过程本身就是一个并不轻松的过程。

  在此背景下,推荐系统出现了,推荐系统的任务就是解决上述的问题,联系用户和信息,一方面帮助用户发现对自己有价值的信息,另一方面让信息能够展现在对他感兴趣的人群中,从而实现信息提供商与用户的双赢。

推荐算法介绍

  1 基于人口统计学的推荐

  这是最为简单的一种推荐算法,它只是简单的根据系统用户的基本信息发现用户的相关程度,然后将相似用户喜爱的其他物品推荐给当前用户。

  

  系统首先会根据用户的属性建模,比如用户的年龄,性别,兴趣等信息。根据这些特征计算用户间的相似度。比如系统通过计算发现用户A和C比较相似。就会把A喜欢的物品推荐给C。

  优势:

  a 不需要历史数据,没有冷启动问题

  b 不依赖于物品的属性,因此其他领域的问题都可无缝接入。

  不足:

  算法比较粗糙,效果很难令人满意,只适合简单的推荐

 

  2 基于内容的推荐

  与上面的方法相类似,只不过这次的中心转到了物品本身。使用物品本身的相似度而不是用户的相似度。

  

  系统首先对物品(图中举电影的例子)的属性进行建模,图中用类型作为属性。在实际应用中,只根据类型显然过于粗糙,还需要考虑演员,导演等更多信息。通过相似度计算,发现电影A和C相似度较高,因为他们都属于爱情类。系统还会发现用户A喜欢电影A,由此得出结论,用户A很可能对电影C也感兴趣。于是将电影C推荐给A。

  优势:

  对用户兴趣可以很好的建模,并通过对物品属性维度的增加,获得更好的推荐精度

  不足:

  a 物品的属性有限,很难有效的得到更多数据

  b 物品相似度的衡量标准只考虑到了物品本身,有一定的片面性

  c 需要用户的物品的历史数据,有冷启动的问题

  3 协同过滤

  协同过滤是推荐算法中最经典最常用的,具体的思路我已经在之前的一篇文章中提到过,大家可以去看一下。

  这里只想介绍一下协同过滤中的方法和刚才提到方法的区别。

  大家都知道协同过滤分为基于用户的协同过滤和基于物品的协同过滤。那么他们和基于人口学统计的推荐和基于内容的推荐有什么区别和联系呢?下面简单介绍一下。

  基于用户的协同过滤——基于人口统计学的推荐

  基于用户的协同过滤推荐机制和基于人口统计学的推荐机制都是计算用户的相似度,并基于“邻居”用户群计算推荐,但它们所不同的是如何计算用户的相似度,基 于人口统计学的机制只考虑用户本身的特征,而基于用户的协同过滤机制可是在用户的历史偏好的数据上计算用户的相似度,它的基本假设是,喜欢类似物品的用户 可能有相同或者相似的口味和偏好。

  基于物品的协同过滤——基于内容的推荐

  基于项目的协同过滤推荐和基于内容的推荐其实都是基于物品相似度预测推荐,只是相似度计算的方法不一样,前者是从用户历史的偏好推断,而后者是基于物品本身的属性特征信息。

  协同过滤的优势:

  a 它不需要对物品或者用户进行严格的建模,而且不要求物品的描述是机器可理解的,所以这种方法也是领域无关的。

  b 这种方法计算出来的推荐是开放的,可以共用他人的经验,很好的支持用户发现潜在的兴趣偏好

  不足:

  a 方法的核心是基于历史数据,所以对新物品和新用户都有“冷启动”的问题。

  b 推荐的效果依赖于用户历史偏好数据的多少和准确性。

  c 在大部分的实现中,用户历史偏好是用稀疏矩阵进行存储的,而稀疏矩阵上的计算有些明显的问题,包括可能少部分人的错误偏好会对推荐的准确度有很大的影响等等。

  d 对于一些特殊品味的用户不能给予很好的推荐。

  e 由于以历史数据为基础,抓取和建模用户的偏好后,很难修改或者根据用户的使用演变,从而导致这个方法不够灵活。

  4 混合推荐算法

  以上介绍的方法是推荐领域最常见的几种方法。但是可以看出,每个方法都不是完美的。因此实际应用中,向Amazon这样的系统都是混合使用各种推荐算法,各取所长。因此我们在使用时,也可以多考虑一下什么情况下更适合使用哪种算法,来提高我们系统的效率。

推荐系统的发展方向

  1 需要考虑在保证推荐准确性的同时增加推荐的多样性,使特殊喜好的用户得到推荐

  2 需要考虑用户对系统的实时反馈,更好的利用反馈数据强化推荐算法

  3 考虑时间,空间,任务等因素,来更好的完成推荐

  

欢迎大家拍砖~ 更多资料请看 http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/index.html

推荐系统的常用算法概述相关推荐

  1. 推荐系统的常用算法,选择,漫谈,推荐系统开源软件汇总

    推荐系统的常用算法概述 前一阵子准备毕业论文的开题,一直在看推荐系统相关的论文.对推荐系统有了一个更加清晰和理性的认识,也对推荐算法有了深入了解.借此机会总结分享一下,大家多多拍砖. 推荐系统的出现 ...

  2. 推荐系统中常用算法 以及优点缺点对比

    推荐系统中常用算法 以及优点缺点对比 2014/09/20 [Martin导读]随着互联网特别是社会化网络的快速发展,我们正处于信息过载的时代.用户面对过量的信息很难找到自己真正感兴趣的内容,而内容提 ...

  3. 推荐系统产品与算法概述 | 深度

    作者丨gongyouliu 转载自大数据与人工智能(ID:gh_b8b5b02c348b) 作者在<推荐系统的工程实现>(点击蓝字可回顾)这篇文章的第五部分"推荐系统范式&quo ...

  4. 科普|推荐系统常用算法总结

    算法和模型是推荐系统的核心,直接决定了推荐效果的好坏.在推荐系统中,算法要从两个方面来考虑:算法本身准确性和算法的效率.相对算法准确性,推荐系统工程化更关注的是算法效率.算法和模型层面主要包含如图所示 ...

  5. CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念)、早期/中期/近期应用领域(偏具体应用)、经典CNN架构(偏具体算法)概述、常用工具/库/框架/产品、环境安装、常用数据集、编程技巧

    CV:计算机视觉技最强学习路线之CV简介(传统视觉技术/相关概念).早期/中期/近期应用领域(偏具体应用).经典CNN架构(偏具体算法)概述.常用工具/库/框架/产品.环境安装.常用数据集.编程技巧 ...

  6. 推荐系统中的常用算法——序列深度匹配SDM

    1. 概述 推荐系统中的算法通过用户的历史行为数据挖掘用户的偏好,实现对用户偏好的建模,从而达到为用户推荐用户感兴趣的item.用户的兴趣偏好通常是多变的,而且是多样的.然而传统的基于item的协同过 ...

  7. 推荐系统之协同过滤概述

    推荐系统之协同过滤概述 http://www.vanjor.org/blog/2011/05/rs-collaborative-filtering/ 这篇文章讲得可真够细的 推荐系统之协同过滤概述 2 ...

  8. 【个性化推荐系统】推荐算法

    推荐算法 1. 推荐模型构建流程 2. 最经典的推荐算法:协同过滤推荐算法(Collaborative Filtering) 3. 相似度计算(Similarity Calculation) 4. 协 ...

  9. 推荐系统产品与算法深度解析

    作者在<推荐系统的工程实现>(点击蓝字可回顾)这篇文章的第五部分"推荐系统范式"中讲到工业级推荐系统有非个性化范式.完全个性化范式.群组个性化范式.items关联ite ...

  10. C语言常用算法 脚本之家,C/C++常用算法手册 秦姣华 中文pdf扫描版 22.5MB

    <C/C++常用算法手册>分3篇,共13章,"第1篇算法基础篇"介绍了算法概述,重点分析了数据结构和基本算法思想:"第2篇算法基本应用篇"详细讲解了 ...

最新文章

  1. 普通内部类里面为什么不能有static字段
  2. 《APUE》中的函数整理
  3. ios html5缩小,IOS H5页面图片点击捏合放大缩小
  4. 为什么要用python不用origin_Python告诉你为什么百度已死
  5. PHP大型Web应用入门(一)
  6. 不服就干!抖音要用多闪挑战微信,但官网瞬间被封
  7. IMDB情感分析数据集
  8. HDU4509 郑厂长系列故事——体检【水题】
  9. 怎么用C语言求解线性规划,线性规划习题详细解析,包括线性规划方程求解步骤...
  10. 数据可视化:经典图表大全
  11. 基于docker搭建单机版ELK日志采集系统
  12. 【转载】英语动词第三人称s的发音规则
  13. web项目上云_披荆斩棘向云端 — 职能业务上云踩坑实战
  14. Eclipse显示bin文件夹
  15. 每日新闻丨阿里上市成港股第三大IPO,市值超腾讯;网易回应“暴力裁员”后股价下跌2.38%...
  16. 美国国家机器人计划2.0部分项目简介
  17. html圆圈男女,html圆形导航导航
  18. 根据身份证号(18/15)计算年龄、出生日期、性别
  19. 【Unity3D插件】UniRx(基于Unity的响应式编程框架)插件学习
  20. dijkstra算法及其堆优化

热门文章

  1. 131 MySQL单表查询(重要)
  2. 003 第一个Python程序
  3. 用virtualenv建立独立虚拟环境 批量导入模块信息
  4. SQLite不同插入方法的效率对比测试
  5. Linux列出安装过的程序
  6. Java操作zip压缩和解压缩文件工具类
  7. 可浮动的在线qq咨询客服代码
  8. 随手一写,简单的四则运算练习
  9. 魔兽世界服务器Trinitycore分析二:auth server的main函数
  10. 标签 'http' 已声明。标签名称在批查询或存储过程内部必须唯一。