1 从广告说起推荐系统
先如今,广告可谓是无处不在,报纸、电视、视频网站、短信、邮件等等。
弹框广告:
未来广告:精准推荐,不再让人们对广告反感,而是会感觉到惊讶。只要做到精准,“广告”就不再是“广告”。
2 什么是推荐系统?
为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品,才有了个性化推荐系统。
其实,解决信息过载的问题,代表性的解决方案是分类目录和搜索引擎,如hao123,电商首页的分类目录以及百度,360搜索等。
不过分类目录和搜索引擎只能解决用户主动查找信息的需求,即用户知道自己想要什么,并不能解决用户没用明确需求很随便的问题。经典语录是:你想吃什么,随便!面对这种很随便又得罪不起的用户(女友和上帝),只能通过分析用户的历史行为给用户的兴趣建模,从而主动给用户推荐能够满足他们兴趣和需求的信息。比如问问女友的闺蜜,她一般什么时候喜欢吃什么。
3 电商是推荐系统的先行者
电子商务网站是个性化推荐系统重要地应用的领域之一,亚马逊就是个性化推荐系统的积极应用者和推广者,亚马逊的推荐系统深入到网站的各类商品,为亚马逊带来了至少30%的销售额。
不光是电商类,推荐系统无处不在。QQ,微信的好友推荐;新浪微博的你可能感兴趣的人;优酷,土豆的电影推荐;豆瓣的图书推荐;大从点评的餐饮推荐;脉脉的同事推荐等。
推荐引擎的鼻祖思想源泉:http://portal.acm.org/citation.cfm?id=1070751
亚马逊最早提出基亍物品的协同过滤推荐算法:http://portal.acm.org/citation.cfm?id=372071京东的推荐:
淘宝的推荐:
当当网的推荐:
4 推荐系统业务流程
推荐系统广泛存在于各类网站中,作为一个应用为用户提供个性化的推荐。它需要一些用户的历史数据,一般由三个部分组成:基础数据、推荐算法系统、前台展示。
基础数据包括很多维度,包括用户的访问、浏览、下单、收藏,用户的历史订单信息,评价信息等很多信息;
推荐算法系统主要是根据不同的推荐诉求由多个算法组成的推荐模型;
前台展示主要是对客户端系统进行响应,返回相关的推荐信息以供展示。
5 推荐系统所涉及到的知识
- 电子商务、交友等业务知识
- 网站架构和运营
- 机器学习算法,数学建模
- 大数据计算平台
6 协同过滤算法
迄今为止,在个性化推荐系统中,协同过滤技术是应用最成功的技术。目前国内外有许多大型网站应用这项技术为用户更加智能(个性化、千人千面)的推荐内容。
核心思想:
协同过滤一般是在海量的用户中发掘出一小部分和你品位比较类似的,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的其他东西组织成一个排序的目彔作为推荐给你。
问题:
如何确定一个用户是和你有相似的品位?
如何将邻居们的喜好组织成一个排序的目彔?
6.1 基于用户的推荐 UserCF
对于用户A,根据用户的历史偏好,这里只计算得到一个邻居–用户C,然后将用户C 喜欢的物品D 推荐给用户A。
基于用户的协同过滤算法先计算的是用户与用户的相似度(兴趣相投,物以类聚人以群分),然后将相似度比较接近的用户A购买的物品推荐给用户B,专业的说法是该算法用最近邻居(nearest-neighbor)算法找出一个用户的邻居集合,该集合的用户和该用户有相似的喜好,算法根据邻居的偏好对该用户进行预测。
6.2 基于商品的推荐 ItemCF
基于ItemCF的原理和基于UserCF类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。
从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。
解释:对于物品A,根据所有用户的历史偏好,喜欢物品A 的用户都喜欢物品C,得出物品A 和物品C 比较相似,而用户C 喜欢物品A,那么可以推断出用户C 可能也喜欢物品C。
6.3 如何选择?
在社交项目中,如微信、QQ,显然选择基于用户推荐比较好,因为推荐往往都是和人相关的。
如:在QQ登录后,会有提示,好友的好友可能是你认识的,推荐给你添加好友。
在电商项目中,用户的数量远大于商品数量,所以基于商品的推荐的复杂度要低,而且也比较合理。
其实,在实际的推荐系统中,往往不单是使用一种推荐,而是会多种推荐混合使用。
所以,选择基于用户还是基于商品的推荐,和应用场景有很大的关系。
7 用户偏好收集
用户和商品的之间的关系,什么样的数据能够表示用户对商品的喜好呢?
要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍:
7.1 数据的降噪和归一化
收集了用户行为数据,我们还需要对数据进行一定的预处理,其中最核心的工作就是:降噪和归一化。
降噪:用户行为数据是用户在使用应用过程中产生的,它可能存在大量的噪音和用户的误操作,我们可以通过经典的数据挖掘算法过滤掉行为数据中的噪音,这样可以是我们的分析更加精确。
归一化:如前面讲到的,在计算用户对物品的喜好程度时,可能需要对不同的行为数据进行加权。但可以想象,不同行为的数据取值可能相差很 大,比如,用户的查看数据必然比购买数据大的多,如何将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和得到的总体喜好更加精确,就需要我们 进行归一化处理。最简单的归一化处理,就是将各类数据除以此类中的最大值,以保证归一化后的数据取值在 [0,1] 范围中。