论文Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

目标:检测水军和虚假评论

contributions:

  1. 提出SPEAGLE框架来做opinion spam,这个框架结合了relational data和元数据(metadata),即结合了图、行为和文本
  2. 论文中图由user-review-product图构成,三种类型的结点都有标签,user:水军与否,review:虚假与否,product:为被攻击目标与否。论文用图来做分类,用metadata来估计有关节点的类分布的先验知识。(我不把review放在中间的原因是目前还没在数据集里发现完全相同的review可以连接多个product,因此就不存在PRP路径)
  3. SPEAGLE是完全无监督的学习方法,如果有少部分标签,也可以转换为半监督学习(SPEAGLE+)
  4. 探究了我们提出的特征的有效性,设计出轻量级算法SPLITE(SPEAGLE-LIGHT),只用少量的特征

方法

fraudeagle

首先介绍作者前一篇论文提出的FRAUDEAGLE框架

该方法构建user-product二部图G=(V,E±)G=(V,E^{\pm})表示N个用户节点U=u1,...,uNU={u_1,...,u_N}和M个商品结点P=p1,...,PMP={p_1,...,P_M}

(ui,pj,s)E±(u_i,p_j,s)\in E^{\pm} ,s{+,}s \in \{+,-\}表示一个review是positive还是negative

user的类别:LU={benign,spammer}L_U=\{benign,spammer\}

product的类别:LP={goodqunality,badquality}L_P=\{good-qunality,bad-quality\}

利用MRF对网络结点进行分类,连个概率表示为单个势函数和成对势函数的乘积

P(y)=1ZYiVϕi(yi)(Yi,Yj,s)E±ψijs(yi,yj)P(y)=\frac{1}{Z}\prod_{Y_i\in V}\phi_i(y_i)\prod_{(Y_i,Y_j,s) \in E^{\pm}}\psi_{ij}^s(y_i,y_j)

y表示所有结点的标签的变量,yiy_i表示y结点具有i标签,Z是归一化常量

individual factors :
Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

表示每个节点的先验势函数

pairwise factors:Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)表示兼容势函数(成对势函数,边势函数)

为了减少模型的参数,成对势函数是共享的(拥有相同符号的边共享)

如果没有外部信息或领域知识可用,则可以将所有先验设置为无偏/无信息(即,每个类别的概率均等)。否则,可以使用外部源分别为每个节点估计它们。

在本框架中先验概率被设为ϕi={0.5,0.5},iV\phi_i=\{0.5,0.5\},\forall i \in V

成对势函数根据数据分析人工设计,根据以下四个直觉:

  1. 真实用户通常撰写积极的评论给高质量的商品
  2. 水军通常撰写积极的评论给低质量的商品或者撰写消极的评论给高质量的商品
  3. 水军也有可能撰写看起来像真实评论的评论来伪装他们的不当行为(给高质量商品撰写积极评论or给低质量商品撰写消极评论)
  4. 真实用户也有可能对高质量商品撰写消极评论
    Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

根据以上设计来求整个图的最大似然来训练参数,同样的,该过程是NPhard,所以采用LBP方法来迭代求解

但是作者想加入更多的信息,于是提出了SPEAGLE模型

SPEAGLE

商品的属性不再是高质量/低质量,改为:LP={nontarget,target}L_P=\{non-target,target\}即通过对含有虚假评论的所有评论来分析看不出到底是高质量还是低质量,得到的结果应该是该商品是不是水军的target

结点包含三种类型:商品、用户、评论

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RkPca9iw-1598756690221)(C:\Users\94205\AppData\Roaming\Typora\typora-user-images\1592707008965.png)]

(ui,rk,t=write)(u_i,r_k,t='write')表示用户i撰写了评论k

(rk,pj,t=belong)(r_k,p_j,t='belong')表示评论k是属于j商品下的

作者对数据集做的假设:spam review的撰写者是spammer,被spammer攻击过的商品就是target商品

成对势函数设计如下:

Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

接下来分析如何评估先验概率(单独的势函数)

本文对用户、评论、商品分别构建了以下特征:
Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

对一个结点i,构建特征含有F个特征的特征向量{x1i,...,xFi}\{x_{1i},...,x_{Fi}\}

H/L表示当这个特征取值high/low表示该结点的被怀疑是spammer/spam/target的怀疑值更高,为了量化特征值x的极值,使用经验累积分布函数来估计数据包含低至高值x的概率。
Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

然后计算每个节点的spam score:

Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

如果特征l的取值xlix_{li}越高表示spam score越高的话,分子越小,sis_i越高

如果没有标签的话,就是完全无监督来计算spam score

半监督的SPEAGLE
Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

轻量级算法:减少特征个数and设先验概率为0.5,0.5

实验数据

Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

Evaluation metrics

PR

ROC

[email protected]

[email protected],for k={100,200,…,1000}

semi-supervised detection

yelpchi数据集分表打标签比率{1%, 5%, 10%}

yelpnyc:{0.5%, 1%, 2%} yelpzip{0.25%, 0.5%, 1%}

table:[email protected]

figure:[email protected]
Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)
Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

与baseline对比:
Collective Opinion Spam Detection: Bridging Review Networks and Metadata(2015KDD)

后续作者做了实验来分析特征进而发现少量的特征可以和全部特征达到的结果相近,因此提出了轻量级的算法。

相关文章: