极速赛车为什么老是输 > 产品推荐 >

4个方面系统总结个性化推荐系统

2019-08-03 23:20 来源: 震仪

  大部分人都听说过个性化推荐,也知道千人千面,那么个性化推荐系统到底是怎么样的?最近做了一点总结。

  现在的人们面对信息过载问题日益严重,好的个性化推荐将能够很好的提升用户体验,提高用户使用产品完成任务的效率,更好的留住用户,进一步扩大产品的盈利。

  对于一些电商类的产品,个性化推荐也能帮助减少马太效应和长尾效应的影响,使商品的利用率更高,盈利增长。

  马太效应:产品中热门的东西会被更多人看到,热门的东西会变得更加热门,而冷门的东西更加冷门。

  长尾理论:某些条件下,需求和销量不高的产品所占据的市场份额,可以和主流产品的市场份额相比。

  基于用户的协同过滤推荐(UserCF):给用户推荐和他兴趣相似的其它用户喜欢的物品。

  基于物品的协同过滤推荐(ItemCF):给用户推荐和他之前喜欢的物品相似的物品。

  基于标签的推荐:内容有标签,用户也会因为用户行为被打上标签,通过给用户打标签或是用户给产品打标签为其推荐物品。

  根据时间上下文推荐:利用用户访问产品的时间优化推荐算法,或是根据季节性时令性变化进行推荐。(如春节推荐春节相关物品)

  其中比较常见的就是前4种推荐,7、8实际上是在基本的推荐算法上加上了一层根据时间和位置的加权筛选。

  各种推荐算法是可以叠加在一起的,根据不同算法的权重调整,给用户最为精准智能的推荐。

  基于内容的推荐是基础的推荐策略。如果你浏览或购买过某种类型的内容,则给你推荐这种类型下的其他内容。

  基于内容的推荐好处在于易于理解,但不足在于推荐不够智能,多样性和新颖性不足。

  比如下图中用户某一天想买的是单反,但购买单反不是一个频繁的行为,且买的是高端单反,那么接下来给用户推荐的全是高端单反,推荐的转化率就会低很多。

  又或者是根据浏览历史推荐,但假如我已经买过了该物品,再给我推荐,重复购买的可能性会低很多。

  基于用户的协同过滤(UserCF)算法,通过用户对不同内容的行为,来评测用户之间的相似性,基于用户之间的相似性做出推荐。这部分推荐本质上是给用户推荐和他相似的人感兴趣的东西。

  比如你曾经喜欢(多次观看)的电影都是科幻类的电影,如异形,终结者、星球大战等,通过数据分析我找到了和你一样看过异形,终结者,星球大战的人,我发现他还经常看复仇者联盟的电

  影,那么我则可以推荐你很有可能也会喜欢看复仇者联盟,那么我就可以向你推荐复仇者联盟。

  对应的表如下,该表的意思是用户A对物品{a,b,c}有有过行为,对{a,b,c}是感兴趣的,用户B对{a,c}是感兴趣的

  实际上的话,很多用户之间并没有对同样的物品产生行为,即N(u)∩N(v)=0,为了优化这种情况,我们可以先计算出N(u)∩N(v)≠0的用户(u,v)再除以分母√N(u)N(v)

  首先需要建立物品到用户的倒排表,对于每个物品都保存该物品产生过行为的用户列表,令稀疏矩阵C[u][v]=N(u)∩N(v),假设用户u和用户v同时属于倒排表K个物品对应的用户列表

  即C[u][v]=K,接着扫描倒排表中每个物品对应的用户列表,将用户列表中两两用户对应的C[u][v]加1,最终就可以得到所有用户之间不为0的C[u][v]

  如图,建立了一个4X4的用户相似度矩阵,对于物品a,将W[A][B]和W[B][A]加1,对于物品b,将W[A][C]和W[C][A]加1,扫描完所有物品后,可以得到最终的W矩阵,这里的W就是余弦

  相似度公式的分子,再除以分母√N(u)N(v) 就可以得到最终的用户兴趣相似度。

  得到了用户兴趣相似度后,根据UserCF算法给用户推荐和他兴趣最相似的K个用户喜欢的物品,以下的公式计算了UserCF中用户u对物品i的感兴趣程度,公式如下:

  以上的算法公式还比较粗糙,如果两个人购买了同一个物品,不能说明他们的兴趣一定相同,因此可以对算法进行改进,提高算法的性能。

  新的公式会通过降权惩罚用户u和用户v共同兴趣列表中热门物品对他们相似度对影响。

  不同的算法有各自不同的效果,也会有不同的限制和缺点,在使用中也要结合产品的用户不停调整优化,达到最好的效果。

  UserCF的限制和缺点:用户数越来越大的话,计算用户之间的相似度矩阵,系统运行的时间,复杂度,整体的成本都会大幅度增加。

  基于物品的协同过滤(ItemCF)算法,通过分析用户的行为记录计算物品之间的相似度,比如物品A和物品B具有很大的相似度是因为喜欢A的用户大都也喜欢物品B。

  比如下图中,我曾经搜索过桌面摆件招财猫,然后系统推荐给我了同样是桌面摆件的摩托车模型。

  N(i)和N(j)表示喜欢物品i的用户数,ItemCF的算法结构基本与UserCF的算法类似,这里不做过多说明了。

  基于标签的推荐一般分为两种,一种是通过给用户的某些特征打上标签,另一种则是让用户自己给物品打上标签,这里主要讲用户给物品打标签(UGC)。

  基于UGC的标签推荐主要是利用用户打标签的行为为其推荐物品,在用户给物品打标签时也要提供合适该物品的标签。用户用标签描述对物品的看法,标签是反应用户兴趣的重要数据源。

  一个用户行为的数据集一般由一个三元组的集合表示,其中记录{u,i,b}表示用户u给物品i打上了标签b(当然实际中会包含用户属性、物品属性等,更为复杂)。

  对于某个用户,首先要得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品,要得到他喜欢的的物品分类需要考虑到3个问题:

  另外则是通过隐含语义分析技术,采用基于用户行为统计的自动聚类来解决这个问题,比较著名的模型和方法有pLSA,LDA,隐含类别模型,隐含主题模型,矩阵分析等等。

  推荐系统的用户行为分为隐性反馈和显性反馈,主要讨论隐性反馈数据集 ,这种数据集只有正样本(用户喜欢什么物品),没有负样本(用户对什么物品不感兴趣),在隐性反馈数据集上应用LFM解决推荐的问题需要给每个用户生成负样本,有这么几种方法:

  3.对一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在一个类中的权重?

  这个问题主要的解决方法就是通过1.2的计算结果综合算法得出,根据算法计算调整不同物品的权重,通过迭代不断优化算法中的参数。

  根据某机构的调查,在购买物品时,90%左右的用户会相信朋友的推荐,70%的用户会相信网上其他用户对商品的评论。

  在互联网中最明显的社会化推荐则是利用社交网络数据进行推荐,利用社交网络数据推荐一般可以从以下几个方面入手:

  情况1.你通过朋友的分享进入的,你朋友在网站中玩的比较久,有推荐数据。由于你之前在该网站没有任何数据,那么我要想给你推荐物品,就可以根据你朋友的推荐列表来给你推荐你可能会喜欢的东西。

  情况2.如果你是刚来到一个网站,你没有朋友, 我想给你做社会化推荐的话,可以根据你的注册信息、位置,共同兴趣等给你推荐好友,再给你做好友推荐。

  上下文包括用户访问推荐系统的时间、地点、心情等,根据时间上下文的推荐是希望能够准确预测用户在某个特定时刻或某段时刻的兴趣。

  比如电商产品在卖衣服时,冬天推荐的衣物和夏天推荐的衣物是不同的。如下图,淘宝网在冬季的推荐:

  考虑到时间信息后,推荐系统也从一个静态系统变成了一个时变的系统,而用户行为数据也变成了时间序列。

  用户的兴趣是不断变化的,其变化体现在用户不断增加的新行为中,一个实时的推荐系统需要能够实时响应用户新的行为,让推荐列表不断变化,从而满足用户不断变化的兴趣。

  推荐算法的时间多样性:推荐系统每天推荐结果的变化程度,有的推荐系统中用户经常能看到不同的推荐结果。

  用户的兴趣相似度计算:如果两个用户同时喜欢相同的物品,则兴趣相似度越大。

  基于位置的推荐算法(LARS)会根据用户所在的国家、城市、街道探寻规律进行推荐,找到用户地点和兴趣相关的特征,主要包括兴趣本地化和活动本地化。

  LARS的基本思想是将数据集根据用户的位置划分成很多子集,位置是一个树状结构,比如国家、省、市、区、县的结构,因此数据集也会划分成一个树状结构。

  根据用户的位置,将其分配到一个叶子节点中,而该节点会包括了所有和他同一位置的用户行为数据集。

  LARS会利用该叶子节点上的用户行为数据,通过ItemCF或UserCF给用户推荐。

  推荐系统的冷启动问题指的是,当推荐系统刚部署后,没有用户行为时或物品数据时,推荐系统并不能根据用户行为数据给用户推荐物品。一般分为用户冷启动、物品冷启动和系统冷启动。

  1.利用用户注册信息推荐:即获取用户的注册信息,然后对用户分类,给用户推荐他所属分类中可能感兴趣的物品。 将关联的查询结果按照一个权重相加,利用的用户信息越多,就能越精准

  2.给用户一些内容选择合适的物品启动用户的兴趣:选择一些热门的,有代表性、区分性、多样性的物品推荐给用户。

  3.利用物品的内容信息推荐给用户:可以通过人工筛选出一些用户会感兴趣的物品推荐。

  如果一个系统中将各种用户行为、特征和任务都考虑进去,系统会非常复杂,难以配置。因此推荐系统需要由多个推荐引擎组成,每个推荐引擎负责一类特真和一种任务,而推荐系统只是

  这样的优势在于:每一个引擎代表了一种推荐策率,可通过对单一的引擎调整来优化推荐系统。

  一个推荐引擎可以在配置文件中配置很多相关表以及他们的权重,推荐系统启动后会将相关表按配置的权重相加,最终的相关表保存在内存中,给用户推荐时,已经是加权后的相关表了。

  个性化推荐的核心还是推荐算法,依赖用户的行为数据,却决于定义的环境维度,不同维度下的算法的表现能力会不一样。

  好的推荐系统不仅能预测用户的行为,能扩展用户的视野,帮助用户发现那些他们可能会买,但却不那么容易发现的东西,而非是本来就想要买的东西。

  Placeless,人人都是产品经理专栏作家。前携程交互设计师,专注于交互设计。

  好像应该是有2的,用向量计算余弦相似性是不需要除2的。A为{a,b,c},设A坐标(1,1,1);B为(a,c},设B坐标为(1,0,1),余弦相似性=(1*1+1*0+1*1)/(A*B)=2/√6。不知道说的对不对,纠结了好久还是鼓起勇气回复了一下

  用j系数算兴趣相识度=2/3, 跟2/√6 更接近一些,如果没有2,感觉两个结果差距太大了。目前还在学习中,收益匪浅!谢谢大大的分享

  人人都是产品经理(是以产品经理、运营为核心的学习、交流、分享平台,集媒体、培训、社群为一体,全方位服务产品人和运营人,成立8年举办在线+期,线+场,产品经理大会、运营大会20+场,覆盖北上广深杭成都等15个城市,在行业有较高的影响力和知名度。平台聚集了众多BAT美团京东滴滴360小米网易等知名互联网公司产品总监和运营总监,他们在这里与你一起成长。