SPEAR算法
参考文献:SPEAR: Spamming-Resistant Expertise Analysis and Ranking in Collaborative Tagging Systems、[三个算法:PageRank,HITS,SPEAR]
1.背景
网络用户将他们喜欢的资源(如书签和数码照片)上传到系统,并为资源分配描述性关键字(通常称为标签),以便将其分类或与其他用户共享。标记是为了组织和共享目的而将标签分配给在线资源的行为,它基于使用描述性关键字来描述和索引资源的简单想法。这种标记的协作活动最终产生用户生成的分类方案,现在通常称为大众分类法。
大众分类法 F \mathcal F F是一个元组 F = ( U , T , D , R ) \mathcal F=(U,T,D,R) F=(U,T,D,R),其中 U U U是一组用户, T T T是一组标签, D D D是一组文档, R ⊆ U × T × D R⊆U×T×D R⊆U×T×D是一组注释。 R R R有时被称为一组标记或标签分配,它表示特定用户 u ∈ U u∈U u∈U已将标签 t ∈ T t∈T t∈T分配给文档 d ∈ D d∈D d∈D的事实。
协同标记和大众分类法的兴起为用户提供了一种在Web上搜索有趣或有用资源的新方法。标签被分配给Web上的特定资源的次数表明了它在用户中有多受欢迎,以及它与标签所代表的主题有多相关。另一方面,识别在特定领域有知识的专家并浏览他们的资源集合可能是发现有用资源的另一种有效方式。但是,这两种方式缺乏有效的资源及用户排名。
在协同标记系统中,专家应该是在特定主题方面知识渊博并拥有与该主题相关的资源集合的用户,其中该主题由一个或一组标签表示。用户对特定主题的专业知识水平主要由两个因素决定。首先,专家应该拥有高质量的资源集合,而Web资源的质量反过来又取决于为其分配标签的用户的专业知识,形成了相互促进的关系。其次,专家应该倾向于在其他用户发现之前发现有趣或有用的资源,从而使这些资源引起用户社区的注意。
SPEAR全称为Spamming-Resistant Expertise Analysis and Ranking,最初是基于图的抗垃圾邮件专家分析与排序算法。 SPEAR 算法形式上与 HITS 算法极为相似,但意义不同。SPEAR算法实现了上述思想,在协同标记系统中根据用户对特定主题的专业知识对用户进行排序。
2.算法思想
要识别专家并根据他们的专业知识对用户进行排名,首先需要对专家身上的特征有所了解。在一般情况下,专家是指在特定领域拥有高水平知识、技术或技能的人。这意味着专家是可以咨询的个人,可以作为相关资源和信息的可靠来源。该一般思想可以容易地应用于协作标记的上下文。
(1)用户专业知识和文档质量
评估用户在给定主题中的专业知识的最简单方法是通过他在某些文档上使用相应标记(或标记集)的次数,但是数量并不意味着质量。因此,专家不仅应该拥有大量用特定标签注释的文档,而且应该倾向于将高质量的文档添加到他们的集合中。反过来说,文档的质量又取决于将这些文档保存在其集合中的用户数量和专业知识。
因此可见,用户的专业知识和文档的质量之间存在一种相互强化的关系,这和HITS算法中Hub页面与Authority页面相互强化是同一道理。不同的是,HITS算法的相互强化只涉及web页面,而SPEAR的相互强化涉及到人和文档两种相互关联的不同实体。此外,SPEAR中只存在用户指向文档的链接。
于是,在SPEAR算法的思想中,用户将只收到Hub分数(即专业知识),而文档将只收到Authority分数(即质量)。这是有意义的,因为当我们通过专家找到有用的资源时,专家充当Hub页面,而文档则充当Authority页面,因为文档包含我们需要的信息。
(2)发现者与跟随者
有一个需要解决的问题就是:在衡量专家用户的专业知识时,需要考虑用户是第一个标记高质量文档的用户,还是在高质量文档已经流行时才简单标记文档。因为这直接决定了用户是否真的具有高专业知识,否则用户就可以对高质量文档进行简单标记就可以达到冒充专家用户的目的。
因此,除了了解许多高质量的文档本身之外,我们认为专家用户也能够比其他用户更早地认识到文档的有用性,从而成为第一个给文档加标签的人,并通过这样做让协同标记系统的其他用户注意到它。专家用户应该是高质量文件的发现者,而不是后来发现这些文件的追随者。用户标记文档越早,他得到的肯定就越高。这在协同标记的场景中是合理的,因为资源发现和共享是它的两个主要用途。
于是,引入标记文档的时间作为确定用户专业知识的附加维度,用户将文档添加书签的时间是其对关于该主题的新信息的敏感程度的合理估计。基于这样的理论,可以降低欺诈用户带来的危害:欺诈用户最终要么只是一个追随者(如果他专注于在用户社区中已经很受欢迎的文档),要么是一个没有任何追随者的发现者(如果他将自己的垃圾文档介绍给社区,而其他人都不关注)。
3.算法流程
SPEAR算法实质上基于这样的假设:
(1)用户对越多的高质量项目有行为、行为越早,则用户的专家分数就越高;
(2)项目被越多的专家用户实施行为,其质量分数就越高。
R t R_t Rt为从大众分类法 R t \mathcal R_t Rt中提取出来的一组标签。由于还考虑了创建标签的时间,故每个标签形式为一个元组 r = ( u , t , d , c ) r=(u,t,d,c) r=(u,t,d,c),且若 c 1 c_1 c1表示比 c 2 c_2 c2早时有 c 1 < c 2 c_1<c_2 c1<c2。将 E ⃗ \vec E E定义为用户专业知识得分的向量 E ⃗ = ( e 1 , e 2 , . . . , e M ) \vec E=(e_1,e_2,...,e_M) E=(e1,e2,...,eM), M = ∣ U t ∣ M=|U_t| M=∣Ut∣为 R t R_t Rt中用户的数量。将 Q ⃗ \vec Q Q定义为文档质量得分的向量 Q ⃗ = ( q 1 , q 2 , . . . , q N ) \vec Q=(q_1,q_2,...,q_N) Q=(q1,q2,...,qN), N = ∣ D t ∣ N=|D_t| N=∣Dt∣为 R t R_t Rt中文档的数量。 E ⃗ \vec E E和 Q ⃗ \vec Q Q初始化为各元素为1。
相互强化是指用户的专业知识分数取决于他用
t
t
t标记的文档的质量分数,而文档的质量分数取决于为其分配标签
t
t
t的用户的专业知识分数。用户-文档的交互行为状态由 M×N 维矩阵
A
\mathbf A
A 描述,其中,如果用户
i
i
i已将
t
t
t分配给文档
j
j
j,则
A
i
,
j
:
=
1
A_{i,j}:=1
Ai,j:=1,否则为
A
i
,
j
:
=
0
A_{i,j}:=0
Ai,j:=0。基于此矩阵,专业知识和质量分数的计算是一个类似于HITS算法的迭代过程:
E
⃗
k
=
α
k
A
T
Q
⃗
k
−
1
Q
⃗
k
=
β
k
A
E
⃗
k
−
1
\vec E_k =\alpha_k\mathbf A^T\vec Q_{k-1}\\ \vec Q _k=\beta_k\mathbf A\vec E_{k-1}
Ek=αkATQk−1Qk=βkAEk−1
为了实现发现者和跟随者的想法,邻接矩阵
A
\mathbf A
A不能入上述简单将0或1分配给其单元。在迭代过程之前,需要先使用以下公式填充邻接矩阵
A
\mathbf A
A:
A
i
,
j
=
∣
{
u
∣
(
u
,
t
,
d
j
,
c
)
,
(
u
i
,
t
,
d
j
,
c
i
)
∈
R
t
∧
c
i
<
c
}
∣
+
1
\mathbf A_{i,j}=|\{u|(u,t,d_j,c),(u_i,t,d_j,c_i)\in R_t ∧c_i<c\}|+1
Ai,j=∣{u∣(u,t,dj,c),(ui,t,dj,ci)∈Rt∧ci<c}∣+1
根据上述公式,元素
A
i
,
j
\mathbf A_{i,j}
Ai,j的值等于
1
1
1再加上在用户
u
i
u_i
ui之后的将标签
t
t
t分配给文档
d
j
d_j
dj的用户数。于是,如果用户
u
i
u_i
ui是第一个用
t
t
t标记文档
d
j
d_j
dj的用户,则
A
i
,
j
\mathbf A_{i,j}
Ai,j等于将
t
t
t分配给
d
j
d_j
dj的用户总数。如果
u
i
u_i
ui是将
t
t
t分配给
d
j
d_j
dj的最新用户,则
a
i
,
j
a_{i,j}
ai,j将等于
1
1
1。在这样对
A
\mathbf A
A进行初始化后,可以得到标记了给定文档
d
j
d_j
dj的任何用户的时间线排序。
最后一步是通过将信用评分函数
C
C
C应用到
A
\mathbf A
A来为用户分配适当的信用评分:
A
i
,
j
=
C
(
A
i
,
j
)
\mathbf A_{i,j}=C(\mathbf A_{i,j})
Ai,j=C(Ai,j)
信用评分函数
C
C
C的一个标准是它应该是一阶导数递减的递增函数:
C
′
(
X
)
>
0
C'(X)>0
C′(X)>0和
C
′
′
(
X
)
≤
0
C''(X)≤0
C′′(X)≤0。换句话说,该函数应该保留
A
\mathbf A
A中分数的排序,以便发现者的分数仍然高于跟随者,但它应该缩小过高的分数之间的差异。这是因为,给那些碰巧是第一批标记了非常流行的文档但在此后没有贡献任何其他高质量文档的用户给予高专业知识分数是不可取的。
函数
C
C
C一个可选方案为
C
(
x
)
:
=
x
0.5
=
x
C(x):=x^{0.5}=\sqrt x
C(x):=x0.5=x。总之,在给定某个信用评分函数的情况下,从标签数据生成用于SPEAR运算的邻接矩阵的上述过程可以由以下函数表示:
A
=
G
e
n
e
r
a
t
e
A
d
j
a
c
e
n
c
y
M
a
t
r
i
x
(
R
t
,
C
)
.
\mathbf A =Generate\ Adjacency\ Matrix (R_t,C).
A=Generate Adjacency Matrix(Rt,C).
与HITS不同之处在于:
邻接矩阵不是方阵。这是因为考虑的不是单个文档集,而是一组用户和一组文档,并且用户数量不一定等于文档数量;
邻接矩阵A中的单元不再只有1或0,因为是根据用户标记文档的时间用不同的值初始化矩阵,即若用户 i i i比用户 j j j更早对项目 v v v有行为,则 A i v > A j v A_{iv}>A_{jv} Aiv>Ajv。