如何从这么多的ID中找到异常的id

Tim*_*Tim 5 machine-learning spam-prevention spam

我们运营联盟计划.注册用户在成功招募其他用户时可获得积分.但是,垃圾邮件发送者滥用此程序,并自动注册大量帐户.我们希望通过关闭机器生成的帐户来防止这种情况发生.我的想法是编写一个程序来识别机器生成的帐户名,或者至少选择一个子集进行手动检查.

到目前为止,我们发现有两种类型的异常ID:

  1. 第一个是有些ID看起来与其他ID非常相似,例如:

    • wss12345
    • wss12346
    • wss12347
    • TEST1
    • TEST2
    • ...
  2. 第二个是有些ID看似随机生成的规则,例如:

    • MiDjiSxxiDekiE
    • NiMjKhJixLy
    • DAFDAB7643
    • ...

对于第一个,我使用Levenshtein(编辑)距离.这个方法可以找出一些id,这在类型1中有说明.(我已经完成了这个,并且可以获得良好的性能)

对于第二个,我可以计算id的概率,就像:

id = "DAFDAB7643:
p(id) = p(D)*p(A|D)*p(F|A)*p(D|F)*...*p(3|4)
Run Code Online (Sandbox Code Playgroud)

所以我可以使用概率来过滤掉异常的id.(只是一个想法;我还没试过.)

谁能给我关于这个话题的其他建议?我怎么能解决这个问题呢?你能否在我的尝试中看到瑕疵或遗漏?

Dav*_*ave 1

  1. 假设这些新帐户引用招聘人员的 ID,我会查看与给定招聘人员相关的新帐户的比率和/或绝对数量。

  2. 对 IP 地址或类似地址的一些分析也可能表明多个用户是否来自同一台计算机。

  3. 我会使用单词字典,并做与检测不良密码相反的操作——人类用户名应该包含字典单词、个人姓名、缺少标点符号、不包含重复字符、大部分是小写字母等。

  4. 有点回到上面的 1——如果招聘人员有一个异常紧密的 ID 集群,使用您已经确定的功能将是一个很好的标志。我认为这本质上可能是@larsmans 直接在问题下发表的评论。

我很想知道重新利用密码检查算法(第 3 项)是否能带来任何好处。