关联分析与推荐系统 Association Analysis & Recommender Systems
By 大路
主要内容
推荐系统概念
推荐系统将成为未来十年里最重要的变革,社会化网站将由推荐系统所驱动。
—— John Riedl (明尼苏达大学教授,GroupLens核心成员)
网站正从一个搜索时代进入一个发现时代。他们的区别是,搜索是你明确知道需要什么东西;发现是说你并不十分清楚的知道一种东西存在,或者你并不清楚怎么样才能找到这种东西。而搜索时代创造了市值1500亿美金的google。
—— 《财富》杂志
调查显示,45%的用户更加喜欢到有产品推荐功能的网站上去购物,而在过去6个月里花费了¥1000以上购买商品的用户里,这个数字提高到了69%。同一 个调查显示,41%的用户更加关注符合他们口味的个性化广告。新闻媒体网站通过显示个性化的相关内容来提高用户的阅读兴趣。
—— Choice Stream survey
推荐系统概念
推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助各类网站/服务为其用户提供完全个性化的决策支持和信息服务。
搜索引擎在于查找,推荐系统/推荐引擎在于发现。
推荐系统/引擎的基本流程(动态闭环)
应用范围(不仅仅是电子商务)
应用示例1:卓越网商品推荐
应用示例2:豆瓣网电影推荐
应用范围
当前暂无类似搜索引擎量级的独立产品形态
专业推荐引擎公司:Directededge、 Baynote、Hunch、Clicktorch
当前主流应用:推荐引擎内置于其它产品中
有形产品:电商类网站、文化用品等评论推荐网站(dangdang、douban、xiami)
社交网络:拥有用户关系链数据(社交图谱)的网站(facebook、twitter)
新闻内容:根据用户点击历史及反馈推送新闻/博文(iCurrent、GoogleReader)
其它(如招聘求职等)
应用范围(媒体性产品)
什么样的产品适合推荐(媒体性产品)
多样性(物品足够多,用户无法一一查看)
口味重要(用户口味各异,物品长尾显著,靠热门排行榜推荐无法解决)
纯粹性(单一物品相关属性不太复杂,利于精准推荐)
大众产品(用户多,规模化,利于推荐)
时效性较低(时效性过高则产品更新快,如新闻推荐,推荐数据需要不断更新)
容易反馈(推荐引擎需要根据用户反馈结果不断学习和改进)
条目增长比较稳定(条目增长过快,则新增数据量过大,调整压力增大)
新浪微博的推荐( )
主要推荐算法
技术领域:自然语言处理、人工智能、机器学习、概率统计等。
主要推荐算法(分解子算法)
主要推荐算法(分类)
主要推荐算法(详述)
关联推荐 Association Analysis(购物篮分析,啤酒与尿布 diaper & beer)
统计/规则(Apriori算法、FP-tree等)
基于内容/属性等 Content-based/Featured-based
Content-based: 需要处理如文本内容等,与搜索引擎建立索引类似(如TF-IDF)
Featured-based: 通过相关特征属性来定义物品,以其属性替代物品本身
Tag-based: 通过用户对物品添加的标签来分析物品
Topic-based(Topic model): 对物品作简单分类,涉及到文本分类算法如贝叶斯网络等
主要推荐算法
协同过滤 Collaborative Filtering
User_based/Item_based: 主要是根据用户对物品的评价进行推荐,基本不涉及对物品的分析。
类似KNN算法(还有SVD、RBM等),其核心在于定义距离(N-范数、内积等)。
混合算法及其它
将上述几种算法结合起来应用。事实上,真正应用时很难由单独一种算法给出精准的推荐。而且,上述每一种算法实际上是一类算法,比如CF分item/user_based,定义不同的距离可能会对结果造成较大影响。
一些仍处于学术研究中的算法,未经工商业界的应用检验。
一些大公司可能正在使用但未公开的算法。
关联分析(购物篮分析)
Aprior算法
关联规则的挖掘就是在事务数据库D中找出具有用户给定的最小支持度minsup和最小置信度minconf的关联规则。
如果项集的支持度超过用户给定的最小支持度阈值(minsup),就称该项集是频繁项集或大项集。
Apriori算法是挖掘布尔关联规则频繁项集的算法。
Apriori性质:频繁项集的所有非空子集也必须是频繁的。
算法主要步骤
连接:Lk-1项生成Ck项
剪枝: Ck项剪枝得到Lk项
Aprior算法示例
CF算法(协同过滤)
矩阵填补问题(极度稀疏)
给定矩阵的少部分元素,预测其它未知元素的值
相似性度量:欧式距离(N-范数)、Pearson相关系数等
主要推荐算法(优缺点分析)
关联推荐
传统、成熟,但不大适合多样化长尾性产品。
基于内容/属性
传统、成熟。但很多时候不易提取属性和类别。举一反三能力较强,但很难给出惊喜。
协同过滤
在难以分析物品内容时很实用。但过于依赖用户交互,面临冷启动、稀疏性等问题。
混合算法等
具体情况需具体分析。
当前存在问题
在推荐系统上应用最广的是协同过滤,一般大家公认有如下三大问题。
当前存在问题(求解之道)
稀疏性
教育鼓励用户多参与评分、反馈。
结合其它推荐算法
冷启动
扩展数据源(火星人来了,地球上没有其相关历史数据,那就从火星上找)
需要时间来积累(教育鼓励用户多参与评分、反馈)
使用基于内容/属性的算法
可扩展性
降低存储空间
近似算法/分块
并行/分布式计算
离线与在线
其它问题
用户有偏及恶意打分、噪音等( A用户偏向于给高分,B用户偏向于给低分)
需要进行纠偏(究竟是有偏?还是用户对不喜欢的产品就不打分?)
怎样鉴别恶意和噪音
隐私问题(用户不愿意显式提供一些个人喜好的信息)
明确隐私数据与非隐私数据。用户教育要给力点。让用户了解推荐系统的原理,不提供相关信息是很难得到精准推荐的。除了评分外,还要鼓励用户对推荐结果给出反馈(like | dislike | skip等)。
注意收集和使用隐式反馈数据。比如用户打开了哪些页面,停留时间多长等。
推荐系统的未来
推荐系统/引擎能否像搜索引擎一样具有独立的产品形态?
推荐系统会成为诸多网站的标配,融入其产品中。
技术演进(越来越智能)
云计算 Cloud Computing(可改进数据扩展性问题)
OpenID (可打通各个产品,共享数据,改进冷启动问题)
语义网 Semantic Web(可使机器和算法对物品的理解更深刻,提高推荐准确度)
……
附:相关网站和书籍
http://groups.google.com/group/resys
http://www.grouplens.org/
http://xlvector.net/blog/
http://www.guwendong.com/
Personalization Techiques and Recommender Sysyems
Web Personalization in Intelligent Environments
Programming Collective Intelligence
Manning Collective Intelligence in Action
……
本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.csdn.net/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:[email protected])