个性化推荐系统综述
一、推荐系统概念
1、推荐系统定义
*:推荐系统属于资讯过滤的一种应用。推荐系统能够将可能受喜好的资讯或实物(例如:电影、电视节目、音乐、书籍、新闻、图片、网页)推荐给使用者。
推荐系统大体可分为两类,即个性化推荐和非个性化推荐。
2、推荐系统作用
从用户角度:
- 提高用户忠诚度
- 帮助用户快速找到商品
从网站角度:
- 提高网站交叉销售能力
- 提高成交转化率
好的推荐系统更像一个有经验的网站导购员
3、推荐系统与其他系统的区别
推荐与搜索
相同点:帮助用户找到商品
不同点:搜索是通过用户主动输入的关键字进行查询。推荐则是用户在浏览网站的过程中,不一定需要用户输入,根据当前网页的上下文进行个性化的信息输出。
推荐与广告
相同点:基于用户行为
不同点:广告目的是帮助商家推广商品等,推荐系统帮助用户找到想要的商品等。
推荐与SNS
相同点:它们都有基于人群的共同点产生推荐
不同点:一个是机器,一个是人工
4、推荐系统的主要产品
- 同类或者相关商品、店铺推荐
- 买了还买、看来还看等
- 猜你喜欢
- 群体信息披露
- 热门排行榜
- etc
二、推荐系统的组成
1、数据
- explicit(显式):能准确的反应用户对物品的真实喜好,但需要用户付出额外的代价。如:用户收藏、用户评价。
- Implicit(隐式):通过一些分析和处理,才能反映用户的喜好,只是数据不是很精确,有些行为的分析存在较大的噪音。如:用户浏览、用户页面停留时间、访问次数。
2、算法
- 离线:用户类目偏好、用户购买力分析、关联性分析、相似矩阵计算等等
- 在线:排序、过滤、增量计算
算法需要配合大量业务规则,没有最好,只有更好!
3、消息系统
消息系统是大型系统不可或缺的重要组成部分,与其他系统解耦,消息转发。
4、搜索引擎
主要功能是进行文本分析抽取关键词,作为推荐系统的一个信息检索技术内容相关性匹配。
5、NoSQL
简单、高性能、方便定制
6、分布式计算
使用MapReduce , Hive、Hadoop进行大规模数据统计和运算和大数据集合的ETL
三、淘宝的推荐系统
1、淘宝数据特点
- 数据量巨大:数百万店铺、数亿**用户、数亿的在线商品、数十亿的收藏信息…
- 商品问题:同一类商品多个卖家、标类非标类、类目属性正确性、恶意收藏、刷信誉…
2、淘宝推荐系统应用场景
目前覆盖大小场景60多个,主要包括
- Detail 浏览了还浏览
- 收藏夹弹出层推荐
- 购物车弹出层推荐
- 已买到宝贝你可能感兴趣
- 淘宝无线应用
- EDM(重复购买提醒)
- 各个垂直频道
- 个性化list排序
- 开放平台api
淘宝业务产品丰富,推荐功能穿插其中,推荐功能涵盖的范围更广,很多场景推荐算法与业务规则相关。
3、淘宝推荐系统算法
①基础算法:聚类算法,预测算法,分类算法等,主要用于产生基础知识库
- 预测算法:logistic 回归,通过以点击率为目标,以商品,卖家等因素作为指标,建立预测模型构建淘宝优质宝贝库
- 分类算法:朴素贝叶斯,商品性别判断(男性,女性,中性),用户性别判断
- 聚类算法:人群,用户细分,用于降维
②推荐算法:content-based,collaborative-based,Association Rules等等
基于内容推荐:通过给用户和商品标注Tag,通过内容匹配算法,推荐商品给用户
- 优点:简单,搜索引擎支持,解决部分冷启动问题
- 缺点:难以区分商品信息的品质,而且不能为用户发现新的感兴趣的商品,只能发现和用户已有兴趣相似的商品
协同思想
- 优点:新奇特,个性化程度高
- 缺点:冷启动,稀疏性
关联规则:类目的相关性、商品相关性、人的相关性
4、推荐系统的效果评测
- Offline: 给定输入输出,验证系统的输出
- Online : ABTest (衡量指标:CTR GMV 转换率)
5、淘宝推荐系统的设计
- 提供统一的平台管理各个推荐模块
- 提供高性能分布式存储
- 提供算法的AbTest和效果统计
- 提供灵活算法配置
① 分布是存储:Treasure
- 存储云梯(hadoop)上对用户、商品等原始数据分析的结果
- 云梯周期性同步,无实时更新
- 为推荐系统提供ABTest存储支持
- 可直接存储部分推荐算法的结果供推荐使用
- 动态部署
②调度系统
- 负责周期性云梯(hadoop)任务调度
- 分布式
- 生产者 消费者
③协调系统
- Zookeeper集群
- 智能路由
- 线上与线下联动通知
- Job依赖通知
总结:推荐系统是需要不断创新并且与场景和行业有事紧密的关系
产品推荐分2种,一种是以营销为目的,一种是真心觉得好。今天只谈第一种。
之前我们也做过一个,自认为不错,客户和客服的反馈也好,可惜没能正式上线,至今hold。思路很简单,“客户告诉我们他愿意花多少钱[X],希望得到什么效果[Y],我们帮他们选择合适的路径[P]。”其中,X相对容易获得,Y则因本身的多样性需要先做细分,抽象成可量化的特征。然后对每个特征,选取路径P1.P2……Pn,做组合分析,最后是将所有的Y的特征放一起做全局优化。当然,投入的可能不止是钱,也可能是时间什么的,不过那么算的话,就太复杂了。
我们最后只完成了如此宏大理想的第一步,即在客户说我要走第一条路时,我们告诉他你应该穿什么鞋……说起来好细节呀……那时我们能看到的路径就一两条,还满是泥泞,生怕把客户引过去人家不乐意,或是走着走着摔跤了,修第一条路的人也不给力,一直说着“要不等我们再修好点,你再带人来?”哎,反正很纠结。
最后的结论是时机未到,还需等待。
悲催!
这几天又想起这事,发现产品推荐的思路不总是靠谱,只有在特定环境下,才能做得有意义。
首先,客户的诉求实在太难抽象和量化了。他们常说的“这个产品做得不好”“它没达到我想要的效果”诸如此类,都是很难处理的反馈,当你再追问下去或是表示希望他们能说得再细化一些,他们会想一想,回答两个字“感觉”呀……总之,能清晰描述需求的客户不多。如果你再问他,你是注重A呢还是B?回答都想要的客户基本占了90%。
其次,客户没你想得那么傻也没太聪明,但他们多数很懒。一个新产品意味着一套新内容新要求新操作,对大多数人来说,如果现有的已经能满足他,就不会有强烈的尝试冲动,特别是当尝试还要付费的时候。所以,在新产品上线前做小流量试验,为了征集到更多的自愿客户,常采取免费试用或至少半价的推广方式。从实际经验看,能招募到8个左右的大客户已属上佳。
第三,客户真的需要产品推荐吗。本周我还就这个话题专门找了几个相熟的客服,她们也帮我问过了客户。答案差不多,客户不需要,客服可以看看。客户通常会对推荐类的东西抱着怀疑态度,他们知道你的目的是营销,潜意识会想你是不是要我掏钱啊,蛮抗拒的。想想你接到保险公司电话时的反应吧,和那个差不多。客服呢,毕竟有工作压力,他们以往的推荐经验多半是来源于个人积累、同事分享和一些帮助文档,很少有实时的可参考的数据和信息,更没有类似的工具以辅助,所以挺欢迎。另外还说一点,客服不希望这样的产品开放给客户,特别是有详细数据和趋势图的,主要是怕解释成本会增加。
也有好消息,好消息是大部分客户很爱问别人怎么做的,竞争对手啊,同行业的都在做什么,看到不错的产品也会主动询问。比如最近很火的百度开放平台,咨询的就挺多。可惜客服问我的时候,我也完全不了解……
就是下面这个。
说到这里,我就想,产品推荐换种形式会不会更好?
昨晚去泰好味吃饭,每个桌上的餐牌上都写着上个月的销售情况,第一名是冬阴功汤,卖出500多份,第二名好像是凤梨饭,共列了十多道菜,都写清楚了6月份销售的份数。以往去吃饭前都爱查大众点评,看看哪些是招牌菜,餐厅的这个举动倒省了初来的食客不知点什么的烦恼,看起来好贴心,比服务员说“我们这里的xxx卖得很好”,一看价格,心中涌起“贵死了”的反感情绪要好得多。
那产品推荐能这么做吗?
既然客户想知道,我们就适当告知其他人在用什么,或者最近什么红,充分利用人们的从众心理。如果能保证数据和资料的真实性,能建立起畅通的反馈机制,能让用户清晰地表达出需要什么不要什么,有了一定量的积累后,再开始做推荐。
现在做推荐的通常场景,是面对一个没有头像喜好不明的客户,可能连他的性别都搞错。一般的,从他的用户ID和注册时填写的基本信息,最多还有在其他产品线的表现情况,能略知一二。之前我们用和该客户同类型的客户数据做了预估,也用真实数据对预估的做了检验,结果并不准确。想想也是必然,用过去的经验预估未来都不一定准,用别人过去的情况去看怎么可能准呢。
我所了解的产品推荐就这么多了,总结一下。
1. 如果客户能清晰地说明投入和希望的产出,且对路径无任何偏好,即按照你推荐的结果去执行,事情会简单得多。
2. 产品推荐建立在对客户和对产品的充分了解之上。两者都在变动,会很难。
3. 其实就是性价比和最优分配的问题,但很多数据未知,难求最优解。解的方法已经有了,在此不方便透露。
4. 推荐是趋势,时机仍未到。在现今,或许做排行榜类的效果更好。对相同的数据,客户会有不同的解读和选择。他们会为自己的决策负责,却不一定愿意为你的推荐买单。
互联网技术的迅速发展使得大量的信息同时呈现在我们面前,传统的搜索算法只能呈现给所有的用户一样的排序结果,无法针对不同用户的兴趣爱好提供相应的服务。信息的爆炸使得信息的利用率反而降低,这种现象被称之为信息超载。个性化推荐,包括个性化搜索,被认为是当前解决这个问题最有效的工具之一。推荐问题从根本上说是代替用户评估它从未看过的产品,这些产品包括书、电影、CD、网页、甚至可以是饭店、音乐、绘画等等。
个性化推荐系统通过建立用户与信息产品之间的二元关系,利用已有的选择过程或相似性关系挖掘每个用户潜在感兴趣的对象,进而进行个性化推荐。高效的推荐系统可以挖掘用户潜在的消费倾向,为众多的用户提供个性化服务。 一个完整的推荐系统由3个部分组成:
- 收集用户信息的行为记录模块
- 分析用户喜好的模型分析模块
- 推荐算法模块
推荐算法模块是最核心的部分。根据推荐算法的不同,推荐系统可以分为如下几类:
- 协同过滤(collaborative filtering)系统
- 基于内容(content-based)的推荐系统
- 基于用户-产品二部图网络结构(network-based)的推荐系统
- 混合(hybrid)推荐系统
- 其他
1. 协同过滤系统
第一代被提出并得到广泛应用的推荐系统。如amazon的书籍推荐,Jester的笑话推荐,等等。
1)核心思想:利用用户的历史信息计算用户之间的相似性——>利用与目标用户相似性较高的用户对其他产品的评价来预测目标用户对特定产品的喜好程度——>根据喜好程度来对目标用户进行推荐。
在计算用户之间相似度时,大部分都是基于用户对共同喜好产品的打分。最常用的方法是Pearson相关性和夹角余弦。
协同过滤推荐系统的算法可以分为两类,基于记忆(memory-based)&基于模型(model-based)。前者是根据系统中所有被打过分的产品信息进行预测,注重于预测用户的相对偏好而不是评分绝对值;后者是收集打分数据进行学习并推断用户行为模型,再对某个产品进行预测打分。
2)优点:
- 发现用户潜在的兴趣偏好,推荐新信息
- 能推荐难以进行内容分析的产品
3)缺点:
- 由于是基于用户对产品的评分,所以对新用户进行推荐或者是对用户推荐新产品,精度不高
- 随着用户量的增多,计算量呈线性增加,影响系统的性能
2. 基于内容的推荐系统
是协同过滤技术的延续与发展。
1)核心思想:分别对用户和产品建立配置文件——>比较用户与产品配置文件的相似度——>推荐与其配置文件最相似的产品。
例如,在电影推荐中,基于内容的系统首先分析用户已经看过的打分较高的电影的共性(演员、导演、风格等),再推荐与这些用户感兴趣的电影内容相似度很高的其他电影。基于内容的推荐算法根本在于信息获取和信息过滤。因为在文本信息获取与过滤方面的研究较为成熟,现有很多基于内容的推荐系统都是通过分析产品的文本信息进行推荐。 在信息获取中,最常用的是TF-IDF方法。
2)优点:
- 能处理新用户、新产品的问题(冷启动)
- 实际系统中用户对产品的打分信息非常少,基于内容的推荐系统可以不受打分稀疏性问题的约束
- 能推荐新出现的产品和非流行的产品,发现隐藏信息
- 通过列出推荐内容的特征,可以解释为什么推荐这些产品,使用户在使用时具有更好的用户体验
3)缺点:
- 受到信息获取技术的约束,例如自动提取多媒体数据(图形、视频流、声音流等)的内容特征具有技术上的困难
- 如果两个不同的产品恰好用相同的特征词表示,这两个产品就无法区分
- 如果一个系统只推荐与用户的配置文件高度相关的产品,那么推荐的只能是与用户之前购买过的产品非常相似的产品,无法保证推荐的多样性
3. 基于网络结构的推荐算法
仅仅把用户和产品的内容特征看成抽象的节点,所有算法利用的信息都藏在用户和产品的选择关系中。
1)核心思想:建立用户—产品二部图关联网络
对于任意目标用户i,假设i选择过所有的产品,每种产品都具有向i推荐其他产品的能力,把所有i没有选择过的产品按照他喜欢的程度进行排序,把排名靠前的推荐给i。
在同样的用户喜好程度下,推荐冷门的产品要比推荐热门的产品意义更大。在同样精确度下,推荐的产品数量越少越好。
提高精确度的方法还有:
- 去除重复性
- 通过引入耦合阈值(即只考虑相似性大于或等于给定阈值的用户以及和这些用户连接的产品)
2)优点:开辟了推荐算法研究的新方向
3)缺点:
- 同样面临着新用户新产品的问题。新用户或新产品刚进入系统时没有任何选择或被选信息,系统无法与其他用户或产品建立关联网络
- 受到用户选择关系建立时间的影响,如果把用户与产品的所有关联关系都考虑在内,无法区分出长期兴趣和短期兴趣点,过多地考虑长期兴趣点会使系统无法给出满足用户短期兴趣的产品,大大降低推荐准确度
4. 混合推荐
将上述几种推荐方法有机结合,实际的推荐系统中最常见的是基于协同过滤和基于内容的。
1)独立系统相互结合
独立的应用协同过滤,基于内容和基于网络结构的算法进行推荐,然后将两种或多种系统的推荐结果结合,利用预测打分的线性组合进行推荐。或者,只推荐某一时刻在某一评价指标下表现更好的算法的结果。
2)在协同过滤系统中加入基于内容的算法
利用用户的配置文件进行传统的协同过滤计算,用户的相似度通过基于内容的配置文件计算得出,而非共同打过分的产品的信息。这样可以克服协同过滤系统中的稀疏性问题,另外,不仅仅是当产品被配置文件相似的用户打了分才能被推荐,如果产品与用户的配置文件很相似也会被直接推荐。
5. 其他方法
1)关联规则分析:关注用户行为的关联模式。如买了香烟的人大多会购买打火机,因此可以在香烟和打火机间建立关联关系,通过这种关系推荐其他产品。
2)基于社会网络分析的推荐算法:如利用用户的购买行为建立他对产品的偏好相似性,依此向用户推荐产品并预测产品的销售情况,从而加强用户黏性。
转载于:https://my.oschina.net/u/2822116/blog/889088