现在进到各种电商网站都会在页面给你推荐一些物品,那么这些推荐的物品是怎么得出来的呢?这里介绍一种协同过滤算法:基于物品的协同过滤算法。简单的说,就是给用户推荐他之前买过且平分高的相似的物品。该算法的主要思想是:
1. 建立物品的同现矩阵
就是说按用户分组,找出每2个物品在多少用户中同时出现的次数。
2. 建立用户对物品的评分矩阵
每个用户对每个物品的评分
3. 2个矩阵相乘,计算结果。
下面以一个简单的例子进行实际开发。
一份用户对商品的评价数据:
1 101 4
1 106 3
2 105 3
2 101 1
2 106 2
2 103 2
2 104 5
2 102 2
3 101 2
3 106 5
3 103 4
4 101 2
4 102 5
4 105 4
4 104 5
5 105 4
5 104 5
6 102 1
6 104 1
6 101 4
6 103 1
7 104 4
7 101 1
7 102 2
7 105 5
7 103 2
7 106 1
8 101 2
第一个字段为用户id,第二个字段为商品id,第三个字段为评分。
1. 建立物品的同现矩阵
101 | 102 | 103 | 104 | 105 | 106 | |
101 | 7 | 4 | 4 | 4 | 3 | 4 |
102 | 4 | 4 | 3 | 4 | 3 | 2 |
103 | 4 | 4 | 4 | 3 | 2 | 3 |
104 | 4 | 4 | 3 | 5 | 4 | 2 |
105 | 3 | 3 | 2 | 4 | 4 | 2 |
106 | 4 | 2 | 3 | 2 | 2 | 4 |
2. 建立用户的评分矩阵
这里以用户4为例:
u4 | |
101 | 2 |
102 | 5 |
103 | 0 |
104 | 5 |
105 | 4 |
106 | 0 |
3. 矩阵相乘
101 | 102 | 103 | 104 | 105 | 106 | u4 | |||
101 | 7 | 4 | 4 | 4 | 3 | 4 | 101 | 2 | |
102 | 4 | 4 | 3 | 4 | 3 | 2 | 102 | 5 | |
103 | 4 | 4 | 4 | 3 | 2 | 3 | X | 103 | 0 |
104 | 4 | 4 | 3 | 5 | 4 | 2 | 104 | 5 | |
105 | 3 | 3 | 2 | 4 | 4 | 2 | 105 | 4 | |
106 | 4 | 2 | 3 | 2 | 2 | 4 | 106 | 0 |
结果为: