网站spam用户识别

tags:@Jarrmy spam 数据挖掘 幂律分布


前一段时间,在一家互联网公司实习,主要做一些数据整理相关的工作,期间完成了这样一个有趣的课题:spam detect。

初探幽径

接到这个任务时,手里掌握的是以用户UID为键值的数据表。由于刚接手工作,在原始数据表的基础上认识用户,占据初期的绝大多数时间。最先想到的是“臆测权值函数法”,将用户数据分为静态数据(注册邮箱、用户名、账户余额等)和动态行为数据(评论、关注、赠送礼物等)而后统计各种属性的不同值时user为spam的概率:

其中思考点有:

  • uname、email满足某种RE pattern,决定其度量值
  • 以评论、关注、赠送礼物的个数的分段函数决定动态行为的度量值

但是随着工作的深入发现,自己很难利用自己的知识和工具统计出度量的标准,同样在综合各属性值的加权也很难给出一个合理的数值。曾想过KNN最近邻的策略,但是由于自己数据挖掘方面实践基础薄弱,同时感觉到在范数的度量上同样存在很大不确定性最后采用了“特殊值豁免”的策略,得出了一部分spam用户信息。
(PS:虽然暴力,但为下一步发现更深层次的特征打下基础)

意外惊喜

在意识到上述方法的困难后,就想到了这样一个feature:多数spam是以PC端软件为基础的活动时间集中的一个群体,同时联想到spam软件中的UID基本以软件注册为基础(想象一下,某个地下室一个孤独的身影,鼠标键盘2小时注册了40个UID,简直伤心病狂),所以这个群体不但具有每日活动时间聚集同时具有UID聚集的双重特征。

在excel中对可以用户进行lastLoginTime增序排序后,奇迹发生了,UID序列出现某种小范围的聚集。而后,当以groupBy(uidGroup,lastLoginTimeGroup),观察到多数group中的UID数量即用户数为1,也就是说,大约占据每日活动用户的40%是独立出现的,但是group中UID数量为K(MAX(group))的活动用户所占比竟然为5%-10%,直觉+简单概率告诉我们,group[MAX]中的用户绝对不正常,我们找到了异常点。

高人点拨

在把这个连蒙带猜的idea告诉我的teamLeader后,一位数据挖掘的大神,终于揭开了蒙在spam身上的最后一层面纱——幂律分布,这个神奇的分布。当我们重新举起数学的琅琊榜,一切都回归了本原。关于这个定律,我觉得应该完全独占这篇文章的价值。下面一段是某知名豆友的总结:

Power Law 一般满足几个性质(同人于野贡献了其中两个看法:
http://book.douban.com/review/1541336/)

1)Scalable,比如如果你上班拿工资,你就不是 scalable 的,因为你的财富取决于你工作时间的长短,而你的工作时间是绝对有限的。反过来说如果你写书,那么你就是 scalable 的,你写一本书,这本书可以的销量可以无穷大。黑天鹅变量因为可以很极端,所以一定是 scalable的。Scalable, 意思就是可以随便做大数乘法。

2)self-reinforcing,这个性质与迭代性(分形性密切相关),越是自然的属性,就越蕴含着分形的原则,也就越蕴含着self-reinforcing的可能。举个例子,越富有的人,越容易赚到更多的钱;越出名的作家,书越容易卖,然后正反馈,作家就更出名。财富的增加几率随着财富本身的增大而增大。正是这个性质决定了 power law 的分布,这也表明,这其实是一种极其接近自然的规律。这个问题本身就有蕴含着另一本书“问题的解决之道”的循环为问题解决(或质量增加)的关键突破点这一智慧,见我的另一评论:http://book.douban.com/review/3128830/

再续前缘

当我们抛弃观察用户的其他行为关注、观看、礼物、交易等和属性标签 邮箱、用户名、头像等。我们仍然得到了稳定而确切的结果,不得不思考前期思路的偏差。

  • 假使我们能判断匹配某特定pattern的uname为spam,但spam软件注册用户时,完全可以从微博活跃用户名中随机抽取来注册用户,这样我们的评估函数中的uname一项就失效,同理email、头像URL等
  • spam用户可能是一个虚假关注者,一个红包收集者等,但是单一行为的频数完全不具备度量UID是否为spam的可能性,或者说从更为丰富的场景不能具有稳健性和一致性。

最后一点感想:一种群体行为或者self-reinforcing的行为,基于统计预测的模型可能都会遭遇这种瓶颈。


作者 @Jarrmy
2015 年 11月 4日

你可能感兴趣的:(网站spam用户识别)