一、概述
上节课我们详细介绍了基于用户的协同过滤算法(User-CF)的原理以及实现代码协同过滤推荐算法(一),本节课我们继续介绍协同过滤算法的另外一个常用算法—基于物品的协同过滤算法(Item-CF)。
二、基于物品的协同过滤算法
基于物品的协同过滤算法(Item-CF,下面简称Item-CF算法)与User-CF类似,协同过滤算法的核心在于找相似性。不同的是,User-CF算法重点是找用户之间的相似性,而Item-CF算法主要是要找出物品之间的相似性。打个比方,例如某人购买了一件商品,那么我们可以另外推荐一款类似且该用户之前从未购买过的商品给他,原因就是这两件商品相似,用户很可能会购买。
假设我们知道小丽之前在某宝上购买了一件H&M的T恤,那么如果平台要再推荐另外一件风格且价格接近的T恤给她,推荐哪个牌子的T恤比较合适呢?这里的关键就是要计算出各个品牌之间商品的相似性,根据上一篇文章可以知道,计算相似的方法很多,本节课我们还是继续沿用上节课的计算用户相似性的方法—余弦相似性。还是结合栗子进行说明,如下表所示。
注:表格中的数据代表每个用户对之前购买过的商品评分,评分为0的商品表示用户未发生购买,当然也可以用均值代替,这里主要是为了方便计算。
那么可以得到每组商品之间的评分向量分别为:
H&M T恤(3,4,4.5,0)
优衣库 T恤(4,4,0,3)
韩都衣舍 T恤(0,5,0,0)
李宁 T恤(0,0,0,4)
ONLY T恤(0,3,0,0)
根据上节课,H&M(3,4,4.5,0)与优衣库(4,4,0,3)由余弦距离公式可以得到
分子:3*4 4*4 4.5*0 0*3=28
分母:sqrt(3^2 4^2 4.5^2 0^2) * sqrt(4^2 4^2 0^2 3^2) = 43.07261311
故H&M与优衣库之间的余弦相似性为28/43.07261311=0.65
同理可以计算得到,H&M与韩都衣舍、H&M与李宁、H&M与ONLY之间的相似性分别为0.59、0、0.59,即H&M与各品牌之间的相似性大小排序为:优衣库>韩都衣舍=ONLY>李宁,所以如果某宝基于商品之间的相似性要给小丽在再推荐一件T恤的话,最适合推荐的就是优衣库,其次是韩都衣舍和ONLY,李宁相对不适合推荐。
三、总结
到这里协同过滤的两种常用的算法User-CF以及Item-CF就全部介绍完了,当然最近两节课都主要在介绍协同过滤推荐算法的相似性原理以及计算,而衡量相似性的方法有很多,这里只是简单用余弦相似性进行说明。在实际的推荐系统中,除了要考虑相似性以外,还要考虑很多其他的因素,例如召回的多样性、用户的惊喜度以及冷启动等问题都是需要考虑的。不过老shi还是希望大家能从这两节课中学有所获,真正掌握协同过滤推荐算法的基本原理。如果喜欢老shi的文章,可以分享、收藏、点赞加关注,感谢大家的支持!