Introduction to Recommender System 之 Module 4 User-User Collaborative Filtering

这一讲主要讲了基于用户的协同滤波推荐方法。所谓协同,是指使用多个元素来进行分析,所谓滤波,后文有解释。这一讲主要分为以下内容:

基本思想

我们过去的选择能够预测我们未来的选择。这又基于下面两点假设:
1 我们的个人喜好基本稳定,或者说若不稳定也与大家一起改变;2 系统限定在一个有限的领域内,以保证前面所述的稳定性——用户在电影领域存在喜好的稳定性,但在搜索领域却不存在这种个人喜好的稳定性等等。

问题描述

假设我们现在总共有 m 个用户,n个物品以及用户对物品的评分矩阵 R ,其中ru,i表示用户 u 对物品i的评分。若用户 a 尚未对商品i打分,我们要求的就是 ra,i

解决方法

若不考虑最终的效果,我们能够想到的最简单粗暴的方式就是使用所有对物品 i 评分的用户的平均值来预测ra,i,即:

pa,i=uru,i|ru,i|

其中, pa,i 表示 ra,i 的预测值, |ru,j| 表示对物品 i 评分的用户数量。
但是,各个用户之间会存在着评分的不同偏好,有的用户经常打高分,有的用户经常打低分,因此,对这种现象做一下normalization,就有如下的式子:
pa,i=rˆa+u(rˆu,irˆu)|ru,i|

但是,这两种方式根本上采用的都是简单平均的方法,效果一般也好不到哪里去。
协同滤波的主要思想就是在平均的那一项上面做了做文章。对一个特定的用户 a ,不是简单的对其余用户一视同仁,而是将其余用户分成了三六九等,这个划分三六九等的过程,应该就是filtering的含义了。
具体到User-User的协同滤波,就是首先计算一下各个用户之间的相似性(similarity),这样,用户a对物品i的最终评分 pa,i 就有了如下的形式:
pa,i=rˆa+u(rˆu,irˆu)ωu,auωu,a

其中, ωu,a 就是用户 u 与用户a之间的相似度。
但是,这样的话有可能得到的预测评分超出了原始评分的范围(原来的评分限制在(0,5],预测得到的评分有可能大于5或者小于0)。这就针对这种情况做相应的处理(若是选择topN,就直接比较大小即可,其他的可以进行截断或者重新归一化)。

具体步骤

normalization

归一化的作用主要是消除用户评分的偏差(bias)。现在主要有两种流行的方法:

user mean centering

顾名思义,这种方法就是将用户的评分做一个mean的调整,使得用户已有的评分最终能够有一个center。具体的计算方法如下:

rˆ=uiru,i|r|

μˆi=u(ru,irˆ)|ri|

μˆu=i(ru,irμˆi)|ru|

其中, r 表示所有已评价物品的平均分,μi表示物品 i 的评分偏差,μu表示用户 u 的评分偏差。|r|表示所有已评分物品的数量, μi 表示物品 i 的评分的数量,μu表示用户 u 已经评价的商品数量。
因此,在对用户u对商品 i 的评分进行归一化时,直接使用下面的式子即可:
rˆu,i=ru,iμˆu

z-score normalization

这种归一化方法与上面的唯一不同之处就是对已经进行user mean centering的得分再进行一次归一化,即:

zu,i=rˆu,iσu

其中, σu 可以通过下式获得:
σu=irˆu,i

即保证归一化后每个用户的所有评分的二范数为1。

计算用户之间的相似性

这一步是比较关键的一步,现在常用的效果比较好的方法有以下两种:

pearson similarity

sim(u,a)=irˆu,irˆa,iirˆu,iirˆa,i

其中,i的取值范围是用户u与用户a评分的common item set,即两个用户都评分的物品集合。这就造成了一个问题,当该set包含的元素比较少时,得到的数值就会不准确。比如两个用户只对一个物品进行了评价,那这两个用户的person相似度就为1,这样做显然不妥。因此有了以下的修正:
sim(u,a)=irˆu,irˆa,iirˆu,iirˆa,imin(N,50)50

其中,N表示common item set中包含元素的数量。50这个参数可以根据效果进行调整。

cosine similarity

sim(u,a)=rˆurˆa

其中, rˆu 表示用户u的评价向量(未评价的物品取值为0)。
cosine similarity不必考虑common item set的影响,因为这里采用的是所有的评分物品,而非common item set。
上述两种情况只是适用于评价是数值的情况,当用户的评价是unary data时,就得考虑其他的方法了。

选择用于预测评价的用户(neighbor)

选择用于预测评价的用户,主要是考虑到以下因素的影响:
1 用户之间的相似性具有一定的扰动,因此,采用全部的用户进行计算不一定会有很好的结果;
2 有一些similarity为负的用户,也可以不用考虑。(因为我们采用的方式是利用相似用户的信息进行评价的)
3 选取的用户太少的话,最终预测的coverage会小。
具体的方法有以下几种:
1 选择相似度大于某一阈值的用户集
2 选择数量固定的用户集(通常选定的neighbor数量为25~100;电影评分中,一般选取30~50)

进行预测

在进行了上述的步骤之后,最终的 预测方法一般采用weighted average,即:

pa,i=rˆa+u(rˆu,irˆu)sim(u,a)usim(u,a)

存在的问题

User-User Collaborative filtering的计算复杂度高
假设总共有 m 个用户,n个物品。则有下表:
计算两个用户之间相似性

计算内容时间复杂度
两个用户之间的相似性 O(n)
一个用户与其余所有用户的相似性 O(mn)
所有用户之间的相似性 O(m2n)

参考文献

[1] Coursera上推荐系统导论第四讲

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值