文章目录
基于用户行为分析的推荐算法一般称为协同过滤算法。所谓协同过滤,就是指众多的用户可以齐心协力,通过不断地和网站互动,使 自己的推荐列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。常见实现方法的包括:
- 基于邻域的方法
- 隐语义模型
- 基于图的随机游走算法
本文主要讲解基于邻域的方法,又可以细分为基于用户的协同过滤算法(UserCF)和基于物品的协同过滤算法(ItemCF)。
一、基于用户的协同过滤算法(UserCF)
基于用户是指通过分析用户对商品的行为(如浏览、收藏、加入购物车、购买……)计算出哪些用户是兴趣相似的,然后把兴趣相似的用户所关注的商品相互推荐。
基于用户的协同过滤算法(UserCF)的基本思想:当给用户A推荐时,可以先找到和他有相似兴趣的其他用户,然后把相似用户喜欢的、而用户A没有接触过的物品推荐给A。
UserCF算法分为两个步骤:
- 找到和目标用户有相似兴趣的用户集合
- 从集合中找到用户可能喜欢的、但是没有接触过的物品推荐给目标用户
1,找到相似用户
假设有6个用户AF,对编号为16的物品有不同的行为。不同的行为代表对商品喜爱程度的不同,假设:浏览1分、收藏3分、加入购物车5分、购买10分。
于是可以把不同用户对不同商品的喜爱程度转换为评分矩阵:
用户/商品 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
A | 1 | 5 | 3 | |||
B | 3 | 3 | ||||
C | 5 | 10 | ||||
D | 10 | 5 | ||||
E | 5 | 1 | ||||
F | 5 | 3 | 1 |
可以看到用户A和B感兴趣的商品完全不同,但是A和E可能有相似的兴趣。为了计算用户之间的相似度,设N(u)为用户 u 有过正反馈的物品集合,N(v) 为用户 v 有过正反馈的物品集合,用户 u 和 v 的兴趣相似度可以用余弦相似度表示:
c o s < u , v > = N ( u ) ⋅ N ( v ) ∣ N ( u ) ∣ × ∣ N ( v ) ∣ cos<u, v> = \frac{N(u) \cdot N(v)}{\sqrt{|N(u)|\times|N(v)|}} cos<u,v>=∣N(u)∣×∣N(v)∣N(u)⋅N(v)
当然还有别的计算方法,例如:切比雪夫距离、欧里几得距离、曼哈顿距离、杰卡德距离、皮尔森系数等。
以余弦相似度的计算为例子:
c o s < A , C > = 1 × 5 + 5 × 0 + 3 × 0 1 2 + 5 2 + 3 2 × 5 2 + 1 0 2 = 0.08 cos <A, C> = \frac{1 \times5 + 5 \times 0 + 3 \times 0}{\sqrt{1^2 + 5^2 + 3^2} \times \sqrt{5^2 + 10^2}} = 0.08 cos<A,C>=12+52+32×52+1021×5+5