微信亿级用户异常检测框架的设计与实践

微信亿级用户异常检测框架的设计与实践,第1张

微信亿级用户异常检测框架的设计与实践

月活用户越低,越容易成为乌克兰产品的目标。在怀疑的宁静和死寂状态中,正是收集黑产物的屡见不鲜和无穷无尽的变化导致了怀疑和宁静的无尽退化。这篇文章将让你一窥微疑究竟是如何做出一个非凡的检测框架的。

如何在大范围的数据中发现异常用户一直是教学和工业研究领域的一个重要课题,但它却处于一种沉寂的实践状态:

在一个圈子里,乌克兰产的邪恶战术是多变的。为了捕捉乌产多变的邪恶形态,如果采用监控方式,可以经常更新模具,保护成本低;

在另一个圈子里,通过对恶意账号停止分析的过程,我们发现恶意用户往往表现出不可避免的“社交”特征,因此需要依靠无监控或半监控的手腕来停止检测更多天的恶意用户。

然而,可疑的每日活跃账户的数量在1亿的水平。如何在有限的计算资本下从1亿个账户中找出可疑账户,给去中心化计划的思想带来了不小的挑战,本文就是解决这一成果的一个小测试。

测试非凡框架的想象目的和中心思想。

目的为了满足正在进行场景检测的用户的要求,在想象的早期阶段,我们提出以下假设:

主要用于检测恶意账号的存在,会提取属性;

该计划易于与现有图片信息等其他帮助信息融合;

该方案具有很强的可扩展性,可以间接用于数十亿用户基础下的异常检测。

思想通常由不寻常的用户基于分散的类别来检测。根据用户特征计算思想,计算节点间的相似度。基于节点间的相似性,构建节点相似邻接图,然后将得到的图进行分散,以发明恶意群。

但是,简单分析一下就会发现,上述方案在实际运用时,其实并不理想。如果要计算上亿用户之间的相似度,时间是巨大的,空之间的损失基本上是无法承受的。

为了解决这个问题,我们可以把所有的用户空分成几个sub空房间,sub空房间的用户相似度低,sub空房间的用户之间相似度低,我们只需要在每个用户的sub/[/k0]

基于那种思想,同时考虑到恶意用户自然构成的情况会提取战争属性,我们可以停止根据情况和用户属性区分所有用户空,只计算那些sub空中节点之间的相似度,基于得到的用户相似度图发现恶意用户群。

另一方面,如果两个用户见面的维度更“可疑”,那么那个维度对邪念见面的奉献程度应该更低。例如,如果两个用户在同一个“可疑”IP,与一个普通IP相比,他们之间遇到恶意的可能性会更低。在感知不变的基础上,为了计算每个用户子中用户对之间的相似度-[/k0/],我们可以根据用户社交维度的可疑度给每个维度赋予不同的权重,以所有社交维度的权重降低作为用户之间的相似度。

注:按照上面的思路,两个用户之间的相似度是在属性分离后的sub空中计算的,但是实践数据中特定属性值下的sub空会是十年。出于对时间和空的考虑,在实际 *** 作中,我们会按照不可避免的大小(比如5000)来计算极值群。(练习并尝试表达结果。看起来很远的那种,对结果不会有太大影响。)

非常检测框架场景计划

基于上述思想,非常规测试计划需要处理以下成果:

所有用户空根据特点/特性可以划分多少个子空房间?

如何权衡用户特征是否可以“可疑”?

如何根据构造得到的用户相似关系图找出异常用户群?

为了解决以上三个成果,经过多轮的尝试和迭代,我们形成了一个通用的非常规探测方案。详细的非常规检测计划框架图如图1所示:

图1异常用户检测框架

如图1所示,在最后,user空的模块将所有user空划分为sub空sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub-sub.恶意属性检测模块根据输入数据识别用户特征中的“可疑”值,在用户空分别检测到不良和邪恶属性后,用户相似度计算模块根据不良和邪恶属性检测得到的不良和邪恶属性库响应的权重策略计算成对用户之间的相似度。至于每个特征的可疑程度及其对应的差异,权重策略模块会将响应的权重值分配给每个用户,用户之间的边的权重就是联席会议。获得上一步获得的用户相似关系图后,可以使用经常使用的图解聚算法停止解聚,获得可疑的恶意用户群。

用户空

为了停止节点间相似度的计算,需要先将所有用户空划分为不同的sub空,那么如何选择用于区分的属性呢?在一系列试验和分析的最后,我们将用户特征分为以下两类:

中心特征:中心特征是指乌克兰账户如果停止社会推广需要花费更多钱的特征,主要包括一些情境特征;

支持功能(Supportfeature):支持功能是指如果要停止社交,则需要较少成本来更改乌克兰帐户的功能。

发明不容易。至于上述中心特征,避免它们的成本更高。因此,我们正在使用中心特征来分离用户空,并且我们正在计算单独获得的sub空中的节点之间的相似度。我们在空中计算节点间的相似度时,引入支持度特征停止补,同时使用中心特征和支持度特征计算用户间的相似度,以提高恶意判断的准确率和笼子覆盖率。

要“多疑”

可疑的属性引用

在肯定了属性之后,一个更重要的成果就是如何肯定哪些用户属性值是可疑的?在那里,我们主要是停止分析脱敏后的用户登录信息,依靠微疑中间多年积累的图片数据,在过程中停止通过呈现频率、离散度等维度分析用户属性值,提出一些可疑属性值。

多粒度可疑属性识别

在尝试停止保号识别的过程中,我们发现单纯依靠一些多少天登录数据的可疑信息,往往无法达到较低的笼盖率。为了解决这个问题,我们会在沉默中间融合已有的情况,比如疑惑和反糟粕数据,帮助停止判断。一些疑惑甚至怀疑的交融有以下两个好处:

融合部分疑点和平衡疑点,删除可疑属性判断的疑点度和笼子覆盖率,提高算法的笼子覆盖率;

降低了用户相似度计算的敏感性。如果一个特定的账户被一个已打开的账户的边连接,则可以通过该过程给出该边的额外权重,以减少在相同情况下对具有已知恶意的用户的账户的影响。

恶意用户识别

我们将超过不可避免阈值的用户视为恶意用户,其中阈值可以根据差值阈值得到的算法的准确率和覆盖率来选择合适的阈值。

另一方面,在功能战中,我们可以拓展思路,我们使用连通分量算法来识别可疑用户群。同时,在我们得到恶意群体后,会停止对群体的阐发,给出在集体维度上为正、正的属性值,以加强对模型的标注。

从一百万到一亿——超常检测框架的功能退化之路

一开始,我们随机选择了数百万你的用户停止尝试。为了将提议的计划扩展到数亿用户,发现可疑的用户群,我们做了如下的恶化:

火花功能退化

在基于Spark框架实现上述异常检测框架的过程中,我们还遇到了一个Spark数据处理的常见成果——数据倾斜。发明上述异常检测方案并不容易,但方案现实中会涉及大量的groupByKey、aggregateByKey、reduceByKey等分散 *** 作。为了避免散布 *** 作中数据倾斜对火花函数的影响,我们在实践现实中介绍了以下两种策略:两阶段散布战和三阶段自适应散布。

两阶段分散

如图3所示,两阶段分散将分散 *** 作分为两个阶段:部分分散和均匀分散。第一次是部分分散。首先,给每个键一个随机数,比如10以内的随机数。此时,相同的密钥会导致混淆,如(hello,1)(hello,1)(hello,1)(hello,1)(1_hello,1)(1_hello,1)(1_hello,1)然后,用reduceByKey对服从随机数的数据进行分散,停止部分分散,得到部分分散结果(1_hello,2)(2_hello,2)。然后丢掉每个键的前缀,得到(hello,2),(hello,2),再次停止整齐分散的 *** 纵,得到最后的结果(hello,4)。

图3两阶段分散

三级自适应分散

用户空根据各自属性分为若干子区间。在实践中我们发现,在亿万级的数据下,使用两级分散,某个特定键下的数据量极大,导致SparkGC频繁出现。法国人的运算速度极慢,以至于我们无法得到分散后的结果。

为了解决这个问题,注意到通过进程停止属性分离后,仍然会按照不可避免的大小对极大的组进行切割。那么,如果在间接分散的过程中没有步骤,就有可能。这样可以处理特定属性值下数据量极大的情况,促进算法乖乖运行。

三阶段自适应分散分为以下四个阶段:

部分随机分散:设置一个较大的数(如100),参考两阶段分散,在第一阶段的 *** 作中给每个密钥分配一个随机数,对于附在随机数上的密钥停止分散 *** 作;

自适应部分分散:在随机部分分散后,可以得到每个随机键下的记录数。通过流程中单个随机键下的记录数,可以停止预算该键下的数据数,并在自适应日起的第二个部分离散中调整每个原始键使用的随机值;

两轮随机部分分散;根据自适应计算得到的随机数,对每个密钥连续附加一个随机数,注意此时不同密钥使用的随机值可以不同,停止对附加随机数的密钥进行第二轮部分分散;

均匀分散:第二轮随机部分分散后,如果某个特定键下的记录数超过设定的阈值(如5000),则保存成就,不停止此阶段的均匀分散;否则,随机密钥将恢复到初始密钥值,并停止均匀散射的初始阶段。

快点,快点,快点

说到底,经过上述调整后,法国人的运算速度已经提升了10倍,阁下。但是我们在尝试发现,当停止上亿用户的相似度,按照阈值过滤边时,得到的边数仍然在百亿,占用的内存空超过2T。那么,能否减少内存占用呢?答案是肯定的。

通过对所有异常用户检测过程的详细分析,我们发现在sub空中我们其实不需要关心所有用户的相似度。通过前期对流程的试用,我们发现当用户的可疑度超过0.7时,就可以简单的判定该用户为恶意用户。根据用户怀疑度的计算公式,当节点面连接边的权重超过18.2时,其初始成绩的权重将超过0.7。基于这一思想,我们引入了静态丢弃策略。

静态丢弃策略

HashMap的引入是为了保持当前sub空之间各节点的权重值,初始降为0.0;按照原来的算法,依次遍历sub空下的节点。如果该节点的两个节点的欠加权值超过阈值(18.2),则该节点的欠加权值将被跳过;否则,将根据原始算法计算节点的欠权值,这将被简化为HashMap,并更新连接节点的欠权值。

引入静态丢弃策略后,法国人会跳过较大用户空中90%以上节点的相似度计算,大大降低了计算量;同时,数十亿用户的相似性使得死磕边缘的内存占用从2T以上降到了50G,大大降低了法语所需的内存占用。

图形分离策略

通过流程相似度计算得到的用户相似关系图节点的离散度极不均匀,大部分部门的节点度较小,少数部门的节点度较大。对于离散度严重倾斜的集合图,图分离策略的选择对图算法功能有很大影响。为了解决那个问题,我们使用EuroSys2015最佳论文提出的图分离算法HybridCut,停止区分用户相似关系图。

4图混合割图分离算法

如图4所示,HybridCut图的算法根据节点的度差采用了差异化的处理策略。对于度数较低的节点,如节点2、3、4、5、6,算法会把它们的集合排列在一起,以保证偏度,而对于度数较低的节点,如1,为了丰富 *** 纵图计算框架和检查计算的能力,算法会把它对应的边放在每台机器上。

HybridCut算法通过根据节点度对节点平面进行区别对待,在局部战争算法的收敛性上达到了很好的平衡。以上只是简单介绍了HybridCut算法的基本思想。关于算法的更多细节,请参考论文《PowerLyra:草图上的微分图计算和划分》。

总结战争咨询

使收支平衡。

特长

上述非用户检测框架具有以下优点:

它可以更好地检测用户的不良意图,如果用户可以生存,它可以提取战争属性,它具有较低的准确率和笼子覆盖率;

它能自然地融合图像信息和反糟粕信息。通过在过程中融合不同粒度的信息,可以提高算法的覆盖率,同时可以为算法提供更大的思路空,可以根据需要选择要使用的特征或信息。

优秀的可扩展性,可以间接扩展到数亿用户停止恶意用户检测,并且算法具有较低的运算合规性。

卜府

停止检测无法提取非情境战属性的恶意用户(当然那不是计划的预期目的),无法应对恶意用户利用中钩等手腕绕过情境战属性检测的情况;

上述规划权重策略部门需要指定野中权重,这无疑会减少野调涉及的东西量。如果黑产的形态或利用特性有大的变化,将有可能从零开始停止重的中介,保护成本低。

接下来…

探索积极的发电策略,以应对能力的特点或乌克兰生产形式的变化;

是否可以在散班过程中按照疑死法则进行及时的恶意冲击;

上述计划更适合检测险恶用心。如果用户可以存在,则提取战争属性,而提取关于非战争属性的恶例。没什么可做的。(一种可能的方案是分离持久属性,但这并不优雅!),所以未来会从停止维度到停止分析对用户进行测试和检验,构建响应影响模具。

参考

陈瑞,石军,陈燕,等.PowerLyra:偏斜图上的微分图计算和划分[C]//第十届欧洲计算机系统会议。美国计算机学会,2015年:1。

Spark功能退化指北-https://tech.meituan.com/spark-tuning-pro.html,初级章节

表演者:清本智思(略显多疑安静)/李奇、袁东、苗远丽(浑华大学深大研修班和死亡医院)

来源:微疑公众号:腾讯课堂(ID:TX_DJT)

标题来自PEPEPEELS,基于CC0和谈。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/777395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存