概述
协同过滤(Collaborative Filtering)是推荐系统中最经典的方法了,本文做一个简单的概述。
User-based Collaborative Filtering
假设一个场景,我们想买一个东西或者想吃一个东西,但是自己不知道哪种东西比较好,那么通常的选择就是去询问身边有着相似喜好的朋友寻求推荐。这就是基于用户的协同过滤,核心思想就是相似的用户(user)会喜欢相似的物品(item)。
用户数据
为了在用户群体中找到跟自己相似的用户,很明显需要收集所有用户的数据,如所有用户对多个商品的评价,那么该数据的矩阵形状为
。在该矩阵中计算其他所有用户与指定用户的相似度,并使用前
个相似用户的数据来做推荐。推荐,肯定是该用户未曾见过或用过的东西,那么需要选出这些相似用户对指定用户未评价过的物品的评价数据,再做下一步计算。
相似用户对物品的加权评价为:相似度
评分;另外,考虑到热门物品与冷门物品在评价人数上的巨大差别,还需要对加权平价做一个归一化的处理:加权评分/评价人数。对指定用户所有未接触过的物品做加权评价求和,按得分排序就得到了一个推荐物品序列。
假设现在有如下评价数据,其中的0为缺失值的填充值:
item1
item2
item3
item4
item5
item6
user1
2.5
3.5
3
3.5
2.5
3
user2
3
3.5
1.5
5
3.5
3
user3
2.5
3
0
3.5
0
4
user4
0
3.5
3
0
4
4
user5
3
4
2
3
2
3
user6
3
4
0
5
3.5
3
user7
0
4.5
0
<