TIFS_2013_Empirical Evaluation and New Design for Fighting Evolving Twitter Spammers

整篇文章基本上是描述对于twitter上的spammer进行检测。

本文中作者不关心twitter中的广告用户,只对含有恶意URL链接的用户感兴趣。

首先是用了2个方法来检测恶意或者是钓鱼的URL。

①Google Safe Browsing (GSB) 该方法是基于黑名单

②URL honeypot 基于Capture-HPC 在虚拟机中使用真实浏览器浏览URL


接着对恶意用户的规避策略进行了分析。

大致上可以分为两类:

①profile-based feature   根据关注数、粉丝数、发推数(followings、followers、tweets)

②content-based feature 根据发推内容包含的URL链接所占比例

恶意账号可以通过获取更多的粉丝(gainning more followers:购买、交换、自我创造)和发送更多推文(使用工具:Auto Twitter 、Twitter API)两种方法来规避基于轮廓的特征策略。

通过混要正常推文发送(Mixing Normal Tweets)和发送混杂推文(Posting Heterogeneous Tweets:不同的描述方式来重复同一内容:Spinbot)这两种方法来规避基于内容的特征策略。


作者设计了10个检测特征,包含:3个基于图的特征(graph-based features)、3个基于邻接点的特征(Neighbor-based features)、3个基于自动化的特征(automation-based features)和1个基于时间的特征(timing-based feature)。

基于图的特征和基于邻接点的特征是为了检测那些企图通过控制自己的社交行为来绕过基于轮廓特征检测策略的恶意账号,这些账号可以在一定程度上管理自己的行为,但是难以改变他们的关注用户和粉丝的行为。

基于自动化的特征和基于时间的特征是为了检测那些通过增加合理合法推文来规避内容检测的用户。


A.Graph-based feature

即使spammer能改变其自身的一些行为,但是想改变其在图中所处的位置还是比较难的。

将 twitter account 视为 结点→ i

每个关注关系视为有向边 → e

得到有向图(directed graph) G=(V,E)

设置了三个特征值

①local clustering coefficient   本地集聚系数

|ev| 表示所有邻接节点之间的所有的边数

Kv表示该节点入度出度的和


可见spammer的本地集聚系数会比较小。

②betweenness centrality  中介中心性(中间中心度)


δst(v)表示从s到t所有包含v结点的最短路径数

δst表示从s到t所有的最短路径数

n表示所有结点数

中间成员对路径两端的成员具有更大的“人际关系影响”。如果一个成员位于其他成员的多条最短路径上,那么该成员就是核心成员,就具有较大的中间核心性。

量化:

(1)各条线路的权系数相等;

(2)通讯过程中总是走最短路径;

(3)当存在不止一条最短路径时,每一条的使用概率相等。

本质:网络中包含成员 i 的所有最短路径的条数占所有最短路径条数的百分比。表示成员 i 的控制能力。(更多内容可以参考维基百科)


可见spammer会有更高的中介中心性。

③bi-directional links ratio   双向链接比


Nbilink表示双向链接数

Nfing表示关注的人数


B.Neighbor-based feature

①average neighbors' followers

②average neighbors' tweets

③following to median neighbors' followers

前两个特征主要是关注用户的粉丝数量平均值与发推数量平均值。

C.Automation-based feature

API2 Ratio  通过API发推数/总发推数

②API URL Ratio  包含URL的通过API发送的推数/通过API发推总数

③API Tweet Similarity API发推的相似度

D.Timing-based feature

following rate  关注其他用户的速度


(未完待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抱歉,我之前的回答中漏掉了定义 `calculate_empirical_distribution` 函数的部分。下面是补充完整的代码: ```python import numpy as np import scipy.stats as stats # 设置参数 k = 3 # 随机游动序列的数量 n = 100 # 样本长度 # 生成随机游动序列 def generate_random_walk_sequence(k, n): sequences = [] for i in range(k): sequence = np.cumsum(np.random.randn(n)) sequences.append(sequence) return sequences # 计算Xt的值 def calculate_Xt(Xc, I): return Xc - 1 + I # 训练ANN模型 def train_ann_model(inputs, targets): # 使用合适的训练算法和损失函数训练ANN模型 # 这里只是一个示例,具体的训练过程需要根据实际情况进行选择和实现 model = YourANNModel() model.train(inputs, targets) return model # 估计参数Δ和计算t统计量 def estimate_delta_and_calculate_t_statistic(errors): delta = np.mean(errors) t_statistic = delta / (np.std(errors) / np.sqrt(len(errors))) return delta, t_statistic # 重复计算并收集t统计量 def calculate_t_statistics(sequences, Xc): t_statistics = [] for sequence in sequences: I = np.random.randn(len(sequence)) Xt = calculate_Xt(Xc, I) inputs = np.array([Xt, sequence]).T targets = sequence model = train_ann_model(inputs, targets) predicted_sequence = model.predict(inputs) errors = predicted_sequence - sequence _, t_statistic = estimate_delta_and_calculate_t_statistic(errors) t_statistics.append(t_statistic) return t_statistics # 计算经验分布 def calculate_empirical_distribution(t_statistics): return stats.norm.fit(t_statistics) # 计算临界值 def calculate_critical_value(empirical_distribution, confidence_level): return stats.norm.ppf(1 - (1 - confidence_level) / 2, *empirical_distribution) # 主函数 def main(): # 生成随机游动序列 sequences = generate_random_walk_sequence(k, n) # 设置参数 Xc = 0 # 计算t统计量 t_statistics = calculate_t_statistics(sequences, Xc) # 计算经验分布 empirical_distribution = calculate_empirical_distribution(t_statistics) # 计算临界值 confidence_level = 0.95 critical_value = calculate_critical_value(empirical_distribution, confidence_level) print("Critical value:", critical_value) if __name__ == "__main__": main() ``` 请注意,这只是一个简单的示例代码,具体的实现需要根据实际情况进行适当的修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值