当前位置: 首页 > news >正文

SynchroTrap:基于相似度的异常检测算法

SynchroTrap简介

什么是SynchroTrap

顾名思义,SynchroTrap即在同步情况下的欺诈。黑产通过控制大量的账号,需要在有限的时间里获取最大的利益,那不可避免的就会产生多个黑产账号在某段时间内发生重合行为的现象。

原理

恶意账户在社交网络上通常会有松散同步行为,行为上具备一定的相似度,将用户产生行为的时间进行对比,构建用户的相似度网络,实现大规模筛查。

算法设计

同步性

论文采用三元组的形式,来表示用户的行为,即<U,T,C>,u表示用户id,T表示发生行为的时间戳,C表示设定的某一个场景,论文定义公式如下:
在这里插入图片描述

同步性,便是在某个场景下,用户在一定的时间差范围内,都产生了行为,则认为这两个用户具备同步性。

相似度计算

论文中给出了两种计算场景
约束相似度:比较两个用户在相同场景下的相似度;
全局相似度:比较两个用户在全场景下的相似度。

约束下的相似度

约束下的相似度,即为在某个场景下,两个用户之间的相似度计算。Jaccard公式如下:
在这里插入图片描述
其中 U i U_{i} Ui U j U_{j} Uj C k C_{k} Ck分别表示用户i,用户j,场景k; A i k A_{i}^{k} Aik A j k A_{j}^{k} Ajk分别表示用户i、j在场景k下产生的行为,即在场景k下,用户i和用户j产生的交集比上用户i和用户j产生行为的并集。

全局相似度

全局相似度,避免了在某些场景,如安装app中,相似度只能取0或者1的情况,Jaccard公式如下:
在这里插入图片描述
大家可以根据实际的不同情况,采用单独约束相似度或者单独约束相似度+全局相似度的组合。

以上,就是SynchroTrap如何计算相似度的过程,大家在构建图的过程中,可以将此部分作为节点之间的权重使用,判断节点之间的相似度是否能达到设定的阈值,来决定是否连接两个节点。

聚类计算

论文中拟采用单链层次聚类,就是先把每个节点当做一个簇,然后将每个簇中节点与新簇进行相似度计算,得出一个最小相似度,该相似度达到某个阈值后,则进行合并。
但是考虑到这种方式无法进行并行计算,因此论文作者将数据进行图化,遍历每一个连通子图,将每个子图中的边作为两个节点之间的相似度,只有相似度满足以下两个条件,才得以保留:
1、至少存在一个场景相似度大于设定的阈值,才能保留边;
2、全局相似度大于设定的阈值,才能保留边。
在这里插入图片描述

如何进行并行计算

论文中如何对用户进行并行计算呢?
在这里插入图片描述
如果t+n天需要进行计算,则按照如下方式进行:
1、将数据按照天数分割,最大时间单位为天;
2、在每天的数据中计算用户之间的相似度,如果有多个场景的话,还可以再进行细分场景计算;
3、由于每天的计算是独立进行的,因此,可以对天数进行并行计算,然后,再根据每个用户每天的行为进行合并,达到多天聚类的效果。

滑动窗口

论文中,作者给出一个缩短计算数据的方式,即设定一个滑动窗口,将每天时间按照小时级划分,则每天共有24个时间段,设定最短时间为T,那么在T时间的上线范围内,这些数据都将不再进行重复计算,如下图所示:
在这里插入图片描述
横坐标为时间T,纵向为两个用户 U 1 U_{1} U1 U 2 U_{2} U2,滑动窗口为 T s i m T_{sim} Tsim,那么在 2 T s i m 2T_{sim} 2Tsim内,数据应该两个重合的数据部分将不再进行计算,即阴影部分。

复杂度

1、在理论情况下,n个用户每天产生r个动作的情况下,全局相似度计算为 O ( r n 2 ) O(rn^2) O(rn2)
2、在约束情况下,某个场景中m个用户每日产生r个动作的情况下,相似度计算为 O ( r m 2 ) O(rm^2) O(rm2)
3、有n个用户,每个用户的全连通子图查询为 O ( n ) O(n) O(n),结合第二种情况进行相似度计算,则复杂度为 O ( r m 2 + n ) O(rm^2+n) O(rm2+n)

好了,以上就是我对SynchroTrap的理解了,大家有指正或者需要补充的地方,可以留言或者加我QQ:1143948594,随时联系。

附:论文链接Uncovering Large Groups of Active Malicious Accounts in
Online Social Networks

相关文章:

  • 【微信小程序模板直接套用】微信小程序制作模板套用平台
  • 彩虹女神跃长空,Go语言进阶之Go语言高性能Web框架Iris项目实战-用户系统EP03
  • 适合开发者使用的6款浏览器,开发者工具很实用
  • 中国智能网联汽车信息安全分析2022案例征集
  • UEditorPlus v2.4.0发布 Word图片粘贴重构,功能样式优化
  • 2366. 将数组排序的最少替换次数
  • 牛客 NC26257 小雨坐地铁
  • 基于springboot+vue+elementui的游戏攻略分享平台
  • 【设计模式】Java设计模式 - 模板模式
  • 【C++之数组与指针2】利用指针对数组求和
  • NOIP 2013 普及组初赛试题
  • 【C语言】如何理解多级指针?
  • 【golang】sorter 的两种实现方式
  • 2022.9.2 OpenCV课程群思考题
  • 408王道操作系统强化——文件管理及大题解构
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 77. Combinations
  • avalon2.2的VM生成过程
  • DataBase in Android
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6系列(二)变量的解构赋值
  • ES6系统学习----从Apollo Client看解构赋值
  • flutter的key在widget list的作用以及必要性
  • Java-详解HashMap
  • js递归,无限分级树形折叠菜单
  • Laravel 中的一个后期静态绑定
  • Linux各目录及每个目录的详细介绍
  • mysql innodb 索引使用指南
  • MySQL主从复制读写分离及奇怪的问题
  • nginx 负载服务器优化
  • pdf文件如何在线转换为jpg图片
  • Python socket服务器端、客户端传送信息
  • use Google search engine
  • vagrant 添加本地 box 安装 laravel homestead
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用parted解决大于2T的磁盘分区
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我的zsh配置, 2019最新方案
  • 源码安装memcached和php memcache扩展
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #Ubuntu(修改root信息)
  • (06)Hive——正则表达式
  • (4) PIVOT 和 UPIVOT 的使用
  • (day6) 319. 灯泡开关
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (二)Linux——Linux常用指令
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...