Java 用户评价可信度计算
用户评价可信度算法
每个用户在使用完服务后都会给出一个评价,所有用户对该服务的主观评价值聚合成对该服务的主观信誉度评价。显然,并不是所有用户的评价都会是公正、无偏见的,同时由于用户专业背景和服务使用环境的不同,也会导致评价出现不合理的偏差,这就需要对用户评价的可信度进行评估。通常,影响用户评价可信度(user credi-bility,UC)的因素主要有用户评价的波动性(sub-jective rating similarity,SMS)以及用户主观评价与用户主流评价值的相似度(subjective and majority rating similarity,SOS)。它们之间的关系式如下式所示。
u
c
=
1
/
(
α
∗
s
r
f
+
β
∗
s
o
s
+
ε
∗
s
,
s
m
s
)
uc =1/(α*srf+β*sos+ε*s,sms)
uc=1/(α∗srf+β∗sos+ε∗s,sms)
其中:
0
<
(
α
,
β
,
ε
)
<
1
,
α
+
β
+
ε
=
1
0<(α,β,ε)<1,α+β+ε=1
0<(α,β,ε)<1,α+β+ε=1
根据实际研究的经验,以及对项目的研究,本人选择:
α
=
0.3
,
β
=
0.4
,
ε
=
0.3
α=0.3,β=0.4,ε=0.3
α=0.3,β=0.4,ε=0.3
主观评价波动
在不同环境或不同时间,同一用户对同一服务多次使用效果的评价会出现波动。但是这个波动应该在一个合理的范围内,如果评价波动过大,往往是由于评价人员给出的评价值缺乏理性判断或是不具备相应的专业知识。因此评价的波动(离散程度)可以从一个方面反映用户评价的可信度。这里采用用户主观评价序列的均方差来说明用户评价的离散程度,如下式所示。
s
r
f
=
(
∑
t
=
1
w
(
s
r
t
−
s
r
ˉ
)
2
/
c
w
)
srf=\sqrt{(\sum_{t=1}^{w}}(sr_{t}-\bar{sr})^2/cw)
srf=(t=1∑w(srt−srˉ)2/cw)
其中srt为规范化处理的用户主观评价序列值且srt属于[0.1,1];sr的平均值为该评价序列均值,cw为用户评价信度窗。srf越大,说明该用户关于该服务的主观评价值的离散程度越大,评价的跳跃性大,从而使用户评价的可以新都越小;反之,srf越小,则说明用户评价比较集中的分布在sr的平均值周围,评价值比较平稳,用户评价值理性可信。
主观评价与客观评价的相似度
主观评价与客观评价从两个角度衡量了服务的性能,这两组评价值之间应该呈现出一致性或较高的相似性。因为客观评价是根据用户需求和实际检测值计算出来的,具有较高参考价值,可以作为衡量主观评价是否可信的参照点。本人把同一评价信度窗内的用户主观评价序列sr=(sr1,sr2,----,srn)和客观评价序列or=(or1,or2,-----,orn)看作n维欧式空间的两个点,这样评价序列相似度就转换成n维欧式空间中两个点之间的距离。距离越小,说明相似度越大,主观评价的可信度就越高。利用欧氏距离来计算用户主观评价与客观评价的相似度sos,如下式所示:
s
o
s
=
(
s
r
1
−
o
r
1
)
+
(
s
r
2
−
o
r
2
)
+
…
…
+
(
s
r
n
−
o
r
n
)
2
sos=\sqrt{(sr_1-or_1)+(sr_2-or_2)+……+(sr_n-or_n)^2}
sos=(sr1−or1)+(sr2−or2)+……+(srn−orn)2
其中:sr和or分别为一个评价信度窗内主、客观评价序列向量
0
≦
s
r
i
∈
s
r
≦
1
,
0
≦
o
r
i
≦
1
0\leqq{sr_i}\in{sr}\leqq1,0\leqq{or_i}\leqq1
0≦sri∈sr≦1,0≦ori≦1
主观评价与主流评价的相似度
通常假定在一个评价体系中大部分用户的主观评价信息是理性可信的。基于此,本人把一个时间窗w内的评价信息划分成若干簇,然后选取最大簇的型心作为时间窗w内的用户主流评价值,计算方法如下式所示:
s
m
r
=
c
n
t
e
r
(
m
a
x
(
δ
(
s
r
k
)
)
)
smr=cnter(max(δ(sr_k)))
smr=cnter(max(δ(srk)))
通过该式可得到用户主观评价聚类中最大簇的形心smr,即时间窗w内的主流评价向量,然后以smr为参照,通过用户主观评价向量sr与smr的欧式距离来计算sms。sms的值表示在该时间窗内特定用户的主观评价与所有用户主流评价的相似度,该值越小说明该特定用户的评价越接近大多数用户的评价,因此可信度越高;反之,则说明该特定用户的主观评价值与主流的评价值偏离较大,离散度较高,导致其评价可信度降低。
其中形心公式如下:
C
x
=
1
6
A
∑
i
=
0
n
−
1
(
x
i
+
x
i
+
1
)
(
x
i
y
i
+
1
−
x
i
+
1
y
i
)
C_x=\frac{1}{6A}\sum_{i=0}^{n-1}(x_i+x_{i+1})(x_iy_{i+1}-x_{i+1}y_i)
Cx=6A1i=0∑n−1(xi+xi+1)(xiyi+1−xi+1yi)
C
y
=
1
6
A
∑
i
=
0
n
=
1
(
y
i
+
y
i
+
1
(
x
i
y
i
+
1
−
x
i
+
1
y
i
)
)
C_y=\frac{1}{6A}\sum_{i=0}^{n=1}(y_i+y_{i+1}(x_iy_{i+1}-x_{i+1}y_i))
Cy=6A1i=0∑n=1(yi+yi+1(xiyi+1−xi+1yi))
A
=
1
2
∑
i
=
0
n
−
1
(
x
i
y
i
+
1
−
x
i
+
1
y
i
)
A=\frac{1}{2}\sum_{i=0}^{n-1}(x_iy_{i+1}-x_{i+1}y_i)
A=21i=0∑n−1(xiyi+1−xi+1yi)
同时需要注意首尾点必须相同,这样才代表闭合。
而用户的主观评价向量sr,我们可以把用户评价的分数以及评价该分数的次数进行统计,之后就可以获取sr的形心,再根据这个值我们就可以求出sms。