Item-Based Collaberative Filtering其实与User-based CF是思路基本上是一致的。问题描述与[2]中的一样,只不过此时进行相似度测量的主题变成了Item。
这一讲,主要涉及到了如下的几个方面:
与UBCF的比较
方法步骤
细节调整
推广至Unary Data
混合与扩展
与UBCF的比较
在UBCF中,由于评分矩阵非常稀疏,有可能造成相似用户数量非常少,导致无法进行推荐;另外,当user的数量非常多时,计算量是非常大的。而且用户的profile变化的相对较快,这对计算的实时性要求较高。
而IBCF,利用的是Item的profile几乎是不会改变的,因此,相似的Item之间的相似度也不会改变的很快,至少与用户的profile相比,Item的改变要慢了许多。说到底,IBCF利用的是Item之间的相似性相对来说比较稳定。
方法步骤
1 计算相似性
在此步骤之前有可能还有一步normalization,主要就是减去均值bias,有可能再除以一个自己的方差sigma
2 进行预测
只不过在这里,item是用user来进行建模的,这种模型比之前的模型包含的element要多一些。
与user-based相比,这种方式具有稳定性,可以预先计算item之间的相似性(相当于减少了计算量)
但是依然受困于sparsity的问题,还有其他的两个问题:
1 随着时间的变化,Item相似性的稳定性也在改变;
2 推荐的serendipity比较低(这个好多算法都存在这种问题)。
细节调整
normalization
实验结果表明,采用item-mean的方式进行normalization,最终的结果预测比较好。具体公式如下:
其中, |∑u,iru,i| 表示所有用户所有评分的数量, |∑uru,i| 表示物品 i 得到的评分数量。
similarity function
相似性计算可以采用cosine或者pearson correlation。计算之前也需要注意normalization。这里注意,计算cosine similarity的时候也可以使用两个Item共有的评分项进行。如下式所示:
其中, u∈U(i)∩U(j) , U(i) 为对物品 i 评分的用户的集合。
neighbourhood size
进行预测时,由经验可知,选取的neighbour的数量为20时,获得的效果比较好[1]。
model size
计算similarity的模型大小M(主要是考虑内存、准确性和覆盖率),一般情况下远大于k。
具体在解释一下,就是在计算Item相似性的时候,我们需要计算的数量远大于k,这样才能选出k个最好的最为预测时使用的Item。M就是这个数量。
damped similarity
貌似对结果没什么大的影响。主要的做法如下式:
式中, k 与
推广到unary data
unary data一般指implicit feedback,比如说purchase、click、play等等。
Unary Data与普通评分的主要区别如下:
1 原始的rate变成了现在的是否有**implicit feedback或者说是**feedback的数量有多少。但是这里引入了一个normalization的问题,因为直接的减去item的bias得到的数据根本没有意义。这里采取了如下的方法:
normalize user vector to unit vector
通过这样做,为了突出 对很多item都感兴趣的user的一次implicit feedback作用没有对item感兴趣少的user的一次implicit feedback的作用大)
2 相似性计算
直接使用cosine即可,也可以使用conditional probability,此时要注意popular item的影响,具体的说明见[3]中的Product Association)
3 预测score
直接对beighbour的相似性进行求和即可,因为此时已经没有rate了,或者说,现在的rate都已经变成1了。
Hybrids与extension
Hybrid
Hybrid的基本思想类似于机器学习中的boosting,通过不同的效果一般的简单分类器构造一个复杂的效果提升的分类器。
主要采取的方式有以下几种:
Weighting
这里举了一个Feature weighted linear Stacking的例子。一般的加权如下式所示:
这里的 ωj 是一个固定的值。
而Feature weighted linear Stacking中的权重,是与用户与物品相关的,即:
Switching
简单的开关选择,相当于switch … case。
Mixed
将不同方法混合后的结果最为最终的推荐结果
Cascade
将一种算法的输出作为另一种算法的输入进行新的预测。
Extension
User Trust
在计算similarity的时候考虑用户的trust,high-trust会导致高的得分。
Item-Item CBF
利用content来计算item之间的相似性
等等,还有其他的扩展,就是将IBCF中能够修改的地方全部修改一下,就可以最为一种新的扩展
参考文献
[1] Coursera上推荐系统导论Module6
[2] 个人对UBCF的总结
[3] 个人对“非个性化推荐”的总结