数据科学 15 推荐算法(概念)
主要内容:
- 智能推荐
- 购物篮分析与运用
- 相关性在推荐中的运用
15.1 智能推荐
15.2 购物篮分析与运用
15.2.1 关联规则
1、评判规则的标准
支持度
支持度(Support)指的是LHS (左边商品)和 RHS(右边商品) 所包括的商品都同时出现的概率。即,包含规则。
LHS和RHS商品的交易次数/总的交易次数。
置信度
可信度(Confidence)是指在所有的购买了左边商品的同时购买了右边商品的交易机率。即,包含规则两边商品的交易次数/包含规则左边商品的交易次数。
上图有五个篮子分别标号1-5。以规则
A
⇒
D
A \Rightarrow D
A⇒D为例。
支持度:同时包含商品A和D的篮子数为2(篮子2、4),除以总交易次数5=2/5。
置信度:购买A商品的篮子为1、2、4,其中同时购买商品D的篮子为2、4。所以置信度=2/3。
规则X的支持度=规则X的交易次数/交易的总数
理解:支持度表示规则X是否普遍。过小支持度与过大支持度?
规则X(A→B)的置信度=规则X的交易次数/规则X中商品B的交易次数
理解:置信度是一种条件概率,表示购买了A产品的客户再购买B产品的概率。低置信度与高置信度?
提升度=置信度/无条件概率
提升度指的是两种可能性的比较,一种是在已知购买了左边商品情况下购买右边商品的可能性,另一种是任意情况下购买右边商品的可能性。两种可能性比较方式可以定义为两种可能性的概率之差值,或者两种可能性的概率之比值。
即规则的置信度/包含规则右边商品的交易次数占总交易量的比例。
Lift=P(购买=右边商品|购买=左边商品)/P(购买=右边商品)
2、Apriori算法
|
|
|
候选C4={A,B,C,E},但是{B,C,E}不是频繁项集,因此,C4为空,算法无法发现新的频繁项集而终止
3、序贯模型
序贯模型算法分为四步:
1.排序阶段。数据库D以客户号为主键,交易时间为次键进行排序。这个阶段将原来的事务数据库转换成由客户序列组成的数据库。
2.频繁项集阶段。找出所有频繁项集组成的集合L。也同步得到所有频繁1-序列组成的集合。
3.转换阶段。在找序列模式的过程中,要不断地进行检测一个给定的频繁集是否包含于一个客户序列中。
4.序列阶段利用已知的频繁集的集合来找到所需的序列。类似于关联的Apriori算法。
举例:
1、 在给出的数据库中,找出所有符合最小支持频数(定义为2)要求的频繁1-序列,这个例子中,频繁1序列为(30) 、 (40)、 (70)、 (40,70)和(90)
2、 给一个可行的映射如下所示,其目的在于将频繁1序列当做一个整体,在后续计算中更加简便与高效。
3、 进行转换:为了使这个过程尽量快,用另一种形式来替换每一个客户序列。需注意:在转换完成的客户序列中,每条交易被其所包含的所有频繁1序列所取代。如果一条交易不包含任何频繁1序列,在转换完成的序列中它将不被保留。如果一个客户序列不包含任何的频繁1序列,在转换好的数据库中这个序列也将不复存在。
这个例子中,将映射好的频繁1序列的映射值 带回原来的数据,原数据会发生改变,如下所示。
4、 生成序列模式:考察下图所示的一个客户序列组成的数据库,假定客户序列已经以转换的形式出现了,每一条交易都被包含在其中的频繁1序列取代 ,最小支持数据定义为2 已适当修改。
产生频繁序列的过程与关联规则中产生频繁项集的过程类似,即寻找到所有的频繁项集:
15.3 相关性在推荐中的运用
15.3.1 相似度和距离是相反的概念
闵可夫斯基距离Minkowski/欧式距离------
dist
(
X
,
Y
)
=
(
∑
i
=
1
n
∣
x
i
−
y
i
∣
p
)
1
p
\operatorname{dist}(X, Y)=\left(\sum_{i=1}^{n}\left|x_{i}-y_{i}\right|^{p}\right)^{\frac{1}{p}}
dist(X,Y)=(∑i=1n∣xi−yi∣p)p1
杰卡德相似系数(Jaccard)-------
J
(
A
,
B
)
=
∣
A
I
B
∣
∣
A
Y
B
∣
J(A, B)=\frac{|A \mathrm{I} B|}{|A \mathrm{YB}|}
J(A,B)=∣AYB∣∣AIB∣
余弦相似度(cosine similarity)-------
cos
(
θ
)
=
a
T
b
∣
a
∣
⋅
∣
b
∣
\cos (\theta)=\frac{a^{T} b}{|a| \cdot|b|}
cos(θ)=∣a∣⋅∣b∣aTb
Pearson相似系数-------
ρ
x
x
=
cov
(
X
,
Y
)
σ
x
σ
r
=
E
[
(
X
−
μ
x
)
(
Y
−
μ
r
)
]
σ
x
σ
r
=
∑
i
=
1
n
(
X
i
−
μ
x
)
(
Y
i
−
μ
r
)
∑
i
=
1
n
(
X
i
−
μ
x
)
2
∑
i
=
1
n
(
Y
i
−
μ
r
)
2
\rho_{x x}=\frac{\operatorname{cov}(X, Y)}{\sigma_{x} \sigma_{r}}=\frac{E\left[\left(X-\mu_{x}\right)\left(Y-\mu_{r}\right)\right]}{\sigma_{x} \sigma_{r}}=\frac{\sum_{i=1}^{n}\left(X_{i}-\mu_{x}\right)\left(Y_{i}-\mu_{r}\right)}{\sqrt{\sum_{i=1}^{n}\left(X_{i}-\mu_{x}\right)^{2}} \sqrt{\sum_{i=1}^{n}\left(Y_{i}-\mu_{r}\right)^{2}}}
ρxx=σxσrcov(X,Y)=σxσrE[(X−μx)(Y−μr)]=∑i=1n(Xi−μx)2∑i=1n(Yi−μr)2∑i=1n(Xi−μx)(Yi−μr)
相对熵(K-L距离)-------
D
(
p
∥
q
)
=
∑
x
p
(
x
)
log
p
(
x
)
q
(
x
)
=
E
p
(
x
)
log
p
(
x
)
q
(
x
)
D(p \| q)=\sum_{x} p(x) \log \frac{p(x)}{q(x)}=E_{p(x)} \log \frac{p(x)}{q(x)}
D(p∥q)=∑xp(x)logq(x)p(x)=Ep(x)logq(x)p(x)
Hellinger距离-------
D
α
(
p
∥
q
)
=
2
1
−
α
2
(
1
−
∫
p
(
x
)
1
+
α
2
q
(
x
)
1
−
α
2
d
x
)
D_{\alpha}(p \| q)=\frac{2}{1-\alpha^{2}}\left(1-\int p(x)^{\frac{1+\alpha}{2}} q(x)^{\frac{1-\alpha}{2}} d x\right)
Dα(p∥q)=1−α22(1−∫p(x)21+αq(x)21−αdx)
15.3.2 协同过滤
- 协同(collaborating)是群体行为,过滤(filtering)则是针对个人的行为。
- 协同过滤基于如下基本假设:如果一个人A在一个问题上和另一个人B持相同观点,那么对于另外一个问题,比起随机选择的一个路人甲,A更有可能同B持相同观点。
关联规则v.s.协同过滤
关联规则:
回答问题:某消费者购买商品A,那么他还可能买什么商品?
特征:直接的推荐,从整体的数据中挖掘潜在关联,与单个人的偏好无关,适用于item不多,并且非重度个性化的场景,如超市购物,汽车导购,交通规划等。
协同过滤:
回答问题: 1)与A客户相似的客户群是谁?将客户群中的物品推荐给A(A没有的物品);2)与A物品相似的物品群是什么?对某用户,若其已经购买或收藏A,则推荐该用户与A相似的物品群。
特征:间接推荐,即先找到相似的人(user based)或物(item based) ,然后再根据品味相似的人的偏好进行推荐。适用于重个性化并且item非常多的场景,比如音乐,电影等。
相同点:
协同过滤和关联规则,都使用了集体智慧,基于大众行为数据作出决策推荐
不同点:
协同过滤= 协同(集体智慧的部分)+过滤(针对具体某个人又做了一次个性化)
关联规则,基本上只做了集体智慧的部分,在关联规则应用场景,你和我看到的结果基本一致的。
15.3.3Item-based CF 和 User-based CF
Item-based CF
通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐;
User-based CF
通过不同用户对item的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐。
基于用户的协同过滤算法(UserCF)
基于用户的协同过滤,通过不同用户对物品的评分来评测用户之间的相似性,基于用户之间的相似性做出推荐。
简单来讲就是:给用户推荐和他兴趣相似的其他用户喜欢的物品。
- 基于UserCF的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。
- 计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。
- 上图给出了一个例子,对于用户A,根据用户的历史偏好,这里只计算得到一个邻居–用户C,然后将用户C 喜欢的物品D 推荐给用户A。
基于物品的协同过滤算法(ItemCF)
- 基于item的协同过滤,通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐。
- 简单来讲就是:给用户推荐和他之前喜欢的物品相似的物品。
基于物品的协同过滤算法(ItemCF)
- 基于ItemCF的原理和基于UserCF类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。
- 从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。
- 上图给出了一个例子,对于物品A,根据所有用户的历史偏好,喜欢物品A 的用户都喜欢物品C,得出物品A 和物品C 比较相似,而用户C 喜欢物品A,那么可以推断出用户C 可能也喜欢物品C。
User CF vs. Item CF
- 对于电子商务,用户数量一般大大超过商品数量,此时Item CF的计算复杂度较低
- 在非社交网络的网站中,内容内在的联系是很重要的推荐原则,它比基于相似用户的推荐原则更加有效。比如在购书网站上,当你看一本书的时候,推荐引擎会给你推荐相关的书籍,这个推荐的重要性超过了网站首页对该用户的综合推荐。可以看到,在这种情况下,Item CF 的推荐成为了引导用户浏览的重要手段。基于物品的协同过滤算法,是目前电子商务采用最广泛的推荐算法。
- 在社交网络站点中,User CF 是一个更不错的选择,User CF 加上社会网络信息,可以增加用户对推荐解释的信服程度。
- 推荐多样性和精度,各有千秋
- 用户对推荐算法的适应度
15.3.4 基于物品的协同过滤举例
步骤1:建立物品的同现矩阵
步骤2:建立用户对物品的评分矩阵
步骤3:矩阵计算推荐结果