推荐系统_推荐系统(2):基于用户行为数据的推荐系统方法

推荐系统_推荐系统(2):基于⽤户⾏为数据的推荐系统⽅法
写在前⾯
基于⽤户⾏为数据的应⽤其实早在个性化推荐系统诞⽣之前就已经在互联⽹上⾮常流⾏了,其中最典型的就是各种各样的排⾏榜。这些排⾏榜包括热门排⾏榜和趋势排⾏榜等。尽管这些排⾏榜应⽤仅仅基友简单的⽤户⾏为统计,但他们在互联⽹上得到了很多⽤户的青睐。因此,⽤户⾏为数据的分析是很多优秀产品设计的基础,个性化推荐算法通过对⽤户⾏为的深度分析,可以给⽤户带来更好的⽹站使⽤体验。
⽤户⾏为数据在⽹站上最简单的形式就是⽇志。⽹站在运⾏过程中都会产⽣⼤量原始⽇志,并将其存储在⽂件系统中。很多互联⽹会把多种原始⽇志按照⽤户⾏为汇总成会话⽇志,其中每个会话表⽰⼀次⽤户⾏为和对应的服务。
⽤户⾏为在个性化推荐系统中⼀般分为两种:显性反馈⾏为和隐性反馈⾏为。显性反馈⾏为包括⽤户明确表⽰对物品的喜好,例如打分和喜欢。隐性反馈⾏为是指不能明确反应⽤户喜好的⾏为,例如页⾯浏览⾏为和购买⾏为等。
仅仅基于⽤户⾏为数据设计的推荐算法⼀般称为协同过滤算法。学术界对协同过滤算法进⾏了深⼊的研究,提出了很多⽅法,⽐如基于邻近的⽅法(neighborhood-based)、隐语义模型、基于图的随机游⾛算法等。在这些⽅法中,最著名的在业界得到最⼴泛应⽤的算法就是基于邻近的⽅法。接下来将会介绍基于邻近的推荐⽅法。
1、基于邻近的推荐算法
基于邻近的推荐算法是推荐系统中最基本的算法。基于邻近的算法分为两类:⼀类是基于⽤户的协同过滤算法,另⼀类是基于物品的协同过滤算法。
1.1基于⽤户的协同过滤算法
所谓的基于⽤户的协同过滤算法(user-based collaborative filtering)是,在⼀个个性化推荐系统中,当⼀个⽤户A需要个性化推荐时,可以先到和他有相似兴趣的其他⽤户,然后把那些⽤户喜欢的、⽽⽤户A没有听说过的物品推荐给A。
基于⽤户的协同过滤算法(UserCF)主要包括两个步骤:
(1)到和⽬标⽤户兴趣相似的⽤户集合 ;
(2)到这个集合中该⽤户喜欢的,且⽬标⽤户没有听说过的物品推荐给⽬标⽤户 。
步骤(1)的关键是计算两个⽤户的兴趣相似度。这⾥,协同过滤算法主要利⽤⽤户⾏为的相似度计算兴趣的相似度。给定⽤户u,v,令N(u)表⽰⽤户u曾经有过正反馈的物品集合,令N(v)表⽰⽤户v曾经有过的正反馈的物品集合。那么可以通过Jacccard公式或者余弦相似度计算两个⽤户u,v之间的兴趣相似度:
ccard:
余弦相似度:
1.2基于物品的协同过滤算法
基于物品的协同过滤算法(item-based collaborative filtering)是⽬前业界应⽤最多的算法。所谓的基于物品的协同过滤算法(ItemCF)给⽤户推荐那些和他们之前喜欢的物品相似的物品。⽐如,你购买过《数据挖掘导论》会给你推荐《机器学习》。不过,ItemCF算法并不利⽤物品的内容属性计算物品之间的相似度,它主要通过分析⽤户的⾏为记录计算物品之间的相似度。该算法认为,物品A和物品B具有很⼤的相似度是因为喜欢物品A的⽤户⼤都也喜欢物品B。
基于物品的协同过滤算法主要分为两步:
茶浴炉
(1)计算物品之间的相似度 ;
(2)根据物品的相似度和⽤户的历史⾏为给⽤户⽣成推荐列表 。
同样的,计算物品之间的相似度可以⽤下⾯的公式:
透水混凝土施工方案N(i)是喜欢物品i的⽤户数,N(i)N(j)分⼦代表同时喜欢物品i和j的⽤户数。但是这⾥有⼀个问题。如果⼀个物品很热门,很多⼈喜欢它,那么Wij就会很⼤,接近1.因此该公式造成任何物品都会和热门的物品有很⼤的相似度,这对致⼒于挖掘长尾信息的推荐系统来说显然不是⼀个好的特性。为了避免推荐出热门的产品,可以⽤下⾯的公式:
这个公式惩罚了物品j的权重,因此可以减轻热门物品和很多物品相似的可能性。从上⾯的定义可以看出,在协同过滤中两个物品的相似度是因为它们共同被很多⽤户喜欢,也就是说每个⽤户都可以通过他们的历史兴趣列表给物品贡献相似度。这⾥⾯蕴含着⼀个假设,就是每个⽤户的兴趣局限在某⼏个⽅⾯,因此如果两个物品属于⼀个⽤户的兴趣列表,那么这两个物品可能就属于有限的⼏个领域,⽽如果两个物品属于多个⽤户的兴趣列表,那么它们就有可能属于同⼀个领域。
2、隐语义模型
隐语义模型(LFM)是最近⼏年推荐系统领域最为热门的研究话题,它的核⼼思想是通过隐含特征联系⽤户兴趣和物品。隐语义分析技术从诞⽣到⾄今产⽣了很多著名的模型和⽅法,pLSA、LDA、MF等,是⼀类概念,其中很多⽅法可以⽤于个性化推荐系统。在推荐系统中它能够基于⽤户的⾏为对item进⾏⾃动聚类,也就是把item划分到不同类别或主题,⽽这些主题或类别可以理解为⽤户的兴趣。
排石床
对于⼀个⽤户来说,他们有着不同的兴趣。列如⾖瓣书单来说,⽤户A会关注计算机、数学、历史⽅⾯的书,⽤户B喜欢机器学习、算法、编程语⾔⽅⾯的书。那么我们在推荐的时候肯定向⽤户推荐他感兴趣的类别下的书。那么前提是我们要对所有的item进⾏分类,可是分类标准是因⼈⽽异的,每个⽤户的想法都不⼀样。所以,我们不能靠由单个⼈(编辑)或team的主观想法建⽴起来的分类标准对整个平台⽤户喜好进⾏标准化。
此外我们还需要注意的两个问题:
我们在可见的⽤户书单中归结出3个类别,不等于该⽤户就只喜欢这3类,对其他类别的书就⼀点兴趣也没有。也就是说,我们需要了解⽤户对于所有类别的兴趣度。
对于⼀个给定的类来说,我们需要确定这个类中每本书属于该类别的权重。权重有助于我们确定该推荐哪些书给⽤户。
推杆锁⽽LFM从⽤户的⾏为数据出发, ⾃动到那些类然后进⾏个性化推荐。如下图所⽰:
冰壶制作R矩阵是user-item矩阵,矩阵值Rij表⽰的是user i 对item j的兴趣度,这正是我们要求的值。对于⼀个user来说,当计算出他对所有item 的兴趣度后,就可以进⾏排序并作出推荐。LFM算法从数据集中抽取出若⼲主题,作为user和item之间连接的桥梁,将R矩阵表⽰为P矩阵和Q矩阵相乘。其中P矩阵是user-class矩阵,矩阵值Pij表⽰的是user i对class j的兴趣度;Q矩阵式class-item矩阵,矩阵值Qij表⽰的是item j在class i中的权重,权重越⾼越能作为该类的代表。所以LFM根据如下公式来计算⽤户U对物品I的兴趣度:
使⽤了LFM后我们发现:
我们不需要关⼼分类的⾓度,结果都是基于⽤户⾏为统计⾃动聚类的,全凭数据⾃⼰说了算。
不需要关⼼分类粒度的问题,通过设置LFM的最终分类数就可控制粒度,分类数越⼤,粒度约细。
对于⼀个item,并不是明确的划分到某⼀类,⽽是计算其属于每⼀类的概率,是⼀种标准的软分类。
对于⼀个user,我们可以得到他对于每⼀类的兴趣度,⽽不是只关⼼可见列表中的那⼏个类。
对于每⼀个class,我们可以得到类中每个item的权重,越能代表这个类的item,权重越⾼。
那么,接下去的问题就是如何计算矩阵P和矩阵Q中参数值。⼀般做法就是最优化损失函数来求参数。优化损失函数可以定义如下:
⾄于怎么求解这个函数,⼀般有最⼩交替⼆乘(ALS)或者随机梯度下降(SGD)。这⾥就不具体说明怎么求解,请⾃⾏上⽹查询或者参考《推荐系统实践》。
3、基于图的模型
ca185
⽤户⾏为很容易⽤⼆分图表⽰,因此很多图的算法都可以⽤到推荐系统中去。其实研究中,这种⽅法被扩展的并不算很多相⽐较前⾯介绍的两种模型。因此这⾥就不过多介绍基于图的模型,有兴趣的同学可以去参考《推荐系统实践》这本书。
⼩编这⾥整理了⼀些相关的学习资料和学习视频
私信我:“学习”,可免费领更多相关学习资料

本文发布于:2024-09-22 15:38:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/182309.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:物品   推荐   算法   相似   系统
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议