SybilBelief: A Semi-supervised Learning Approach for Structure-based Sybil Detection(论文笔记)

局部概率规则

节点的标签

给每个节点分配一个二值的随机变量{+1,-1}

节点 v 的prior belief

不把节点 v 的邻居信息考虑进去,只考虑节点 v 自身的内容、行为,将节点 v 的这些信息称为节点的先验信息(prior information),记为 h v h_v hv,计算这时节点 v 是正常节点的概率 P ( x v = + 1 ) P(x_v=+1) P(xv=+1),称这个值为prior belief:
P ( x v = + 1 ) = 1 1 + exp ⁡ ( − h v ) P\left(x_{v}=+1\right)=\frac{1}{1+\exp \left(-h_{v}\right)} P(xv=+1)=1+exp(hv)1

节点 v 的邻居

Γ v = { u ∣ ( u , v ) ∈ E } 是 \Gamma_{v}=\{u |(u, v) \in E\}是 Γv={u(u,v)E}节点 v 的邻居集合,邻居集合中节点的标签记为 x ˉ Γ u \bar x_{\Gamma_u} xˉΓu ,这时,我们就可以通过节点 v 的邻居节点信息,计算节点 v 是正常节点的概率:
P ( x v = + 1 ∣ x ˉ Γ v ) = 1 1 + exp ⁡ ( − ∑ u ∈ Γ v J u v x ˉ u − h v ) P\left(x_{v}=+1 | \bar{x}_{\Gamma_{v}}\right)=\frac{1}{1+\exp \left(-\sum_{u \in \Gamma_{v}} J_{u v} \bar{x}_{u}-h_{v}\right)} P(xv=+1xˉΓv)=1+exp(uΓvJuvxˉuhv)1

马尔可夫条件随机场(pairwise Markov Random Field )

我们可以利用上一节的局部概率规则构建两两马尔可夫条件随机场(pairwise Markov Random Field ,MRF),MRF定义了网络中所有节点相关的联合概率分布。

每个节点都有一个node potential, ϕ v ( x v ) \phi_v(x_v) ϕv(xv)

ϕ v ( x v ) : = { θ v  if  x v = 1 1 − θ v  if  x v = − 1 \phi_{v}\left(x_{v}\right):=\left\{\begin{array}{ll}{\theta_{v}} & {\text { if } x_{v}=1} \\ {1-\theta_{v}} & {\text { if } x_{v}=-1}\end{array}\right. ϕv(xv):={θv1θv if xv=1 if xv=1
θ v = 1 1 + e x p ( − h v ) \theta_v=\frac{1}{1+exp(-h_v)} θv=1+exp(hv)1

每条边都有一个edge potential , ψ u v ( x u , x v ) \psi_{uv}(x_u,x_v) ψuv(xu,xv)

φ u v ( x u , x v ) : = { w u v  if  x u x v = 1 1 − w u v  if  x u x v = − 1 \varphi_{u v}\left(x_{u}, x_{v}\right):=\left\{\begin{array}{ll}{w_{u v}} & {\text { if } x_{u} x_{v}=1} \\ {1-w_{u v}} & {\text { if } x_{u} x_{v}=-1}\end{array}\right. φuv(xu,xv):={wuv1wuv if xuxv=1 if xuxv=1
w u v = 1 1 + e x p ( − J u v ) w_{uv}=\frac{1}{1+exp(-J_{uv)}} wuv=1+exp(Juv)1

以下的马尔可夫条件随机场满足概率局部规则

P ( x V ) = 1 Z ∏ v ∈ V ϕ v ( x v ) ∏ ( u , v ) ∈ E φ u v ( x u , x v ) P\left(x_{V}\right)=\frac{1}{Z} \prod_{v \in V} \phi_{v}\left(x_{v}\right) \prod_{(u, v) \in E} \varphi_{u v}\left(x_{u}, x_{v}\right) P(xV)=Z1vVϕv(xv)(u,v)Eφuv(xu,xv)

Z = ∑ x V ∏ v ∈ V ϕ v ( x v ) ∏ ( u , v ) ∈ E φ u v ( x u , x v ) Z= \sum _{x_V}\prod_{v \in V} \phi_{v}\left(x_{v}\right) \prod_{(u, v) \in E} \varphi_{u v}\left(x_{u}, x_{v}\right) Z=xVvVϕv(xv)(u,v)Eφuv(xu,xv)

检测恶意节点

首先,我们对上节MRF进行修改,加入已知的节点标签,利用修正后的模型对节点进行分类(正常 or 恶意 ),也能够根据计算出的节点的 P ( x V ) P(x_V) P(xV)的大小,对节点进行排序。

已知标签的节点 L
对于其余的未知标签的节点
  1. 设置这些未知标签的节点的初始 θ = 0.5 \theta =0.5 θ=0.5
  2. 设置 w u v > 0.5 w_{uv}>0.5 wuv>0.5是为了满足我们的假设,即网络满足同质性
evidence potentials

为了方便我们后续的分析,在已知一些节点的标签后,我们利用这些节点计算节点的evidence potential:
ϕ v L ( x v ) = { ϕ v ( x v ) δ x v x ˉ v  if  v ∈ L ϕ v ( x v )  if  v ∉ L \phi_{v}^{L}\left(x_{v}\right)=\left\{\begin{array}{ll}{\phi_{v}\left(x_{v}\right) \delta_{x_{v} \bar{x}_{v}}} & {\text { if } v \in L} \\ {\phi_{v}\left(x_{v}\right)} & {\text { if } v \notin L}\end{array}\right. ϕvL(xv)={ϕv(xv)δxvxˉvϕv(xv) if vL if v/L

  • 如果一个节点不再 L 里面,不在 L 里时,就用原来的计算node potential时候的计算方法;
  • 如果一个节点在 L 里面,就又乘上了一个 δ x v x ˉ v \delta_{x_v\bar x_v} δxvxˉv:如果 x v = x ˉ v x_v=\bar x_v xv=xˉv δ x v x ˉ v = 1 \delta_{x_v\bar x_v}=1 δxvxˉv=1;否则 δ x v x ˉ v = 0 \delta_{x_v\bar x_v}=0 δxvxˉv=0
于是,修正后,节点的后验概率:

P ( x v ∣ x ˉ L ) = ∑ x V / v P ( x V ∣ x ˉ L ) = 1 Z L ∑ x V / v ∏ v ∈ V ϕ v L ( x v ) ∏ ( u , v ) ∈ E φ u v ( x u , x v ) \begin{aligned} P\left(x_{v} | \bar{x}_{L}\right) &=\sum_{x_{V} / v} P\left(x_{V} | \bar{x}_{L}\right) \\ &=\frac{1}{Z^{L}} \sum_{x_{V / v}} \prod_{v \in V} \phi_{v}^{L}\left(x_{v}\right) \prod_{(u, v) \in E} \varphi_{u v}\left(x_{u}, x_{v}\right) \end{aligned} P(xvxˉL)=xV/vP(xVxˉL)=ZL1xV/vvVϕvL(xv)(u,v)Eφuv(xu,xv)

作为最早在国内研究和实践DHT爬虫的人,我的灵感是来自芬兰Helsinki大学的这篇论文: Real-World Sybil Attacks in BitTorrent Mainline DHT 英文好的同学应该很容易读懂,跟我写的不到300行的爬虫代码大致原理一样。初次接触DHT网络的可以结合我之前的文章阅读,或者拜读Kevin Lynx的博客。所以具体原理在这里就不再阐述了。 手撕包菜一开始只是为了纯粹的技术研究,没有去想这个搜索引擎能给网民带来什么样的福利。当时采集了大量的数据,发现有一半以上的资源为限级内容,于是试图去对资源进行分类并且做了很多这方面的工作。譬如,基本上能通过一套规则能筛选出限级内容,对资源进行分类,如果是视频还能匹配出是哪一部影片。可惜,这些工作我主观上认为对生活应用并没有太大价值,于是就放弃了深入的研究。或许是因为网民使用此类搜索引擎大部分都是具有明显的目的性。 手撕包菜经历了多次点技术变更开源版本使用了django网站框架重写,之前是Flask,再早期是tornado。电影FM也是使用tornado,后来发现tornado并不适用于任何场景。以内容为王的网站还是django比较擅长,只是入门时间比其他框架都较长。早期数据库采用了MongoDB,因为配合Python读写数据很方便,也不用关注数据结构,搜索功能采用自带的关键词搜索,不过后来随着资源数量增加,性能也明显跟不上。今年换了WiredTiger引擎,自带的fulltext search还是不给力。另外Amazon的cloudsearch是个坑,土豪可以考虑,性能真的很不错,就是比较贵。最后还是搭建一个SphinxSearch吧,数据库也换成MySQL(MyISAM引擎),配合起来也很方便。Sphinx创建全文索引的速度很给力,官方的自评也很高,我自己测试1000w的资源(大概3GB),1分钟左右就索引完毕。不信,大家可以自测一下。 标签:ssbc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值