推荐系统实践-利用用户行为数据(下)

此文是根据《推荐系统实践》部分整理而来。

PART 1 隐语义模型

隐语义模型核心思想是:通过隐含特征联系用户兴趣和物品。

举一个例子来理解这个模型。用户A的喜欢侦探小说、科普图书以及一些计算机技术书,用户B喜欢数学和机器学习的书。那么如何推荐呢?

  • 对于UserCF,首先找到和他们看了同样书的用户,然后推荐那些用户喜欢的其他的书。
  • 对于ItemCF,需要给他们推荐和他们已经看过的书相似的书。
    还有一种方法,可以对书和物品的兴趣进行分类,对于某个用户,首先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品。这个基于兴趣分类的方法大概需要解决三个问题:
  • 如何给物品进行分类?
  • 如何确定用户对哪些类的物品感兴趣,以及感兴趣的程度?
  • 对于一个给定的类,选择哪些属于这个类的物品推荐给用户,以及如何确定这些物品在一个类中的权重?

第一个问题解决方法是:找编辑给物品分类。但是缺点有很多:

  • 编辑的意见不能代表用户的意见,有些物品的分类是模棱两可的。
  • 编辑很难控制分类的粒度。
  • 编辑很难给一个物品多个分类。
  • 编辑很难给出多维度的分类。比如作者、译者、出版社
  • 编辑很难决定一个物品在某一分类中的权重。

为了解决上面的问题,隐含语义分析技术出现了,它采用基于用户行为统计的自动聚类,较好地解决了编辑的问题:

  • 隐含语义分析的分类来自用户的统计,代表了用户的看法。
  • 隐含语义分析技术允许我们指定最终有多少个分类,数字越大,粒度就越细。
  • 隐含语义分析技术给出的每个分类都不是同一个维度的,是基于用户的共同兴趣计算出来的。
  • 隐含语义分析技术通过统计用户的行为决定物品在每个类中的权重。

隐含语义分析技术有很多著名的模型和方法:pLSA、LDA、隐含类别模型、隐含主题模型、矩阵分解。本文将以LFM为例介绍隐含语义分析技术在推荐系统中的应用。

LFM通过如下的公式计算用户u对物品i的兴趣:


Paste_Image.png

Pu,k和Qi,k是模型的参数,其中Pu,k度量了用户u的兴趣和第k个隐类的关系,而Qi,k度量了第k个隐类和物品i之间的关系。
要计算这两个参数,需要一个训练集,对于每个用户u,训练集里都包含了用户u喜欢的物品和不感兴趣的物品,通过学习这个数据集,就可以获得上面的模型参数。

推荐系统的用户行为分为显性反馈和隐性反馈。LFM在显性反馈数据上解决评分预测问题并达到了很好的精度,不过本文主要讨论的是隐性反馈数据集,这种数据集的特点是只有正样本,没有负样本。所以第一个问题就是,如何给每个用户生成负样本。
Rong Pan对比了如下几种方法:

  1. 对于一个用户,用他所有没有过的行为作为负样本。
  2. 对于一个用户,从他没有过行为的物品中均匀采样出一些物品作为负样本。
  3. 对于一个用户,从他没有过行为的物品中采样出一些物品作为负样本,但采样时,保证每个用户的正负样本数目相当。
  4. 对于一个用户,从他没有过行为的物品中采样出一些物品作为负样本,但采样时,偏重采样不热门的物品。

对于第1种方法,明显缺点是负样本太多,计算复杂度很高,精度也差。对于另外3种方法,Rong Pan在文章中表示第3种>第2种>第4种。
后来在一个比赛中,发现负样本采样时应该遵循以下原则:

  • 对每个用户,要保证正负样本平衡。
  • 对每个用户采样负样本时,要选择那些很热门,而用户没有行为的物品。因为很热门而用户没有行为更加代表用户对这个物品不感兴趣,对于冷门的物品,可能用户根本没有发现。(后面具体实现方式就不贴了)

通过离线实验评测LFM的性能,在MovieLens数据集上用LFM计算出用户兴趣向量p和物品向量q,然后对于每个隐类找出权重最大的物品:


Paste_Image.png

如果将LFM的结果与ItemCF和UserCF算法的性能相比,可以发现LFM在所有的指标上都优于UserCF和ItemCF。当数据非常稀疏时,LFM的性能会明显下降。

PART 2 LFM和基于邻域方法的比较

LFM是一种基于机器学习的方法,具有比较好的理论基础。这个方法和基于邻域的方法相比,各有优缺点:

  • 理论基础。LFM具有比较好的理论基础,它是一种学习方法,通过优化一个设定的指标建立最优的模型。基于邻域的方法更多是一种基于统计的方法,没有学习过程。
  • 离线计算的空间复杂度。基于邻域的方法需要维护一张离线的相关表,如果用户/物品很多,会占据很大的内存,需要O(NN)的空间。而LFM在建模过程中,如果是F个隐类,那么它需要的存储空间是O(F(M+N))),这在M和N很大时可以很好地节省离线计算的内存。用户数40万时,UserCF大概需要30GB内存,LFM只需要4GB内存。
  • 离线计算的时间复杂度。假设有M个用户,N个物品,K条用户对物品的行为记录,那么UserCF计算用户相关表的时间复杂度是O(N(K/N)^2);ItemCF计算物品相关表的时间复杂度是O(M(K/M)^2);对于LFM,如果用F个隐类,迭代S次,那么它的计算复杂度是(KFS)。一般情况下,LFM的时间复杂度要稍微高于UserCF和ItemCF,这主要是因为该算法需要多次迭代。总体上时间复杂度上没有质的差别。
  • 在线实时推荐。UserCF和ItemCF在线服务算法需要将相关表缓存在内存中,然后可以在线进行实时的预测。LFM的预测公式可以看到,LFM在给用户生成推荐列表时,需要计算用户对所有物品的兴趣权重,然后排名,返回权重最大的N个物品。那么,物品很多时时间复杂度就会很高。因此,LFM不太适合用于物品非常庞大的系统,如果要用,我们也需要一个比较快的算法先给用户计算一个比较小的候选列表。另一方面,LFM生成一个用户推荐列表太慢,因此不能用于在线实时推荐。
  • 推荐解释。ItemCF算法支持很好的推荐解释,但是LFM无法提供这样的解释。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容