【问题标题】:predicting non-random number from a series of random number从一系列随机数中预测非随机数
【发布时间】:2012-12-25 19:48:33
【问题描述】:

我得到了以下有趣的任务:

给定一个包含 100 万个 16 位数字(例如信用卡号)的列表,其中包括 990,000 个由计算机系统生成的纯随机数字,以及 10,000 个由欺诈者手动创建的数字。这些数字被标记为真实或欺诈。构建一个算法来预测非随机数。

到目前为止,我的方法有点暴力:查看非随机数字以找到模式(例如重复数字:22222 或 01234)。

我想知道是否有现成的算法或工具来完成这类任务。我想这个任务在欺诈分析社区中应该很常见。

谢谢。

【问题讨论】:

  • 你最好在 math.stackexchange.com 上询问。 AFAIK 通常可以确定整个集合是否是随机生成的,但是您无法在随机生成的数字集中找到手动生成的数字(如果它们之间没有相关性)。

标签: algorithm random fraud-prevention


【解决方案1】:

首先,如果您知道它们是信用卡号,请使用 Luhn 算法,这是一种用于有效信用卡号的快速校验和算法。

但是,如果它们只是 16 位整数,则可以使用多种方法。很难判断单个数字是否来自随机源(因为数字 1111111111111111 与随机数生成器中的任何其他数字一样可能)。至于您重复的数字和模式,这很容易让人联想到 Kolmogorov 复杂性的概念(请参见下面的链接)。您可以尝试在这种蛮力方法中寻找模式,但我觉得它会非常不准确,因为人类实际上可能倾向于避免在这些数字中放置数字和序列!

相反,我建议关注人们生成数字的方式。您可以将人工输入视为非常糟糕的随机数生成器。因此,如果您没有其他数据集,我建议您自己制作一个随机人类输入数字的列表。然后,您可以使用机器学习生成分类器算法来区分纯随机数(那些没有您的机器学习算法已识别的“类人”属性)。就统计分类器的指标而言,Kolmogorov 复杂度可能是一个,可能是另一个指标的数字频率(参见维基百科上的 Benford 定律),以及另一个指标的重复数字的数量(人类可能会尝试避免重复数字看起来不随机的,所以让你的分类器来做吧!)

根据我的个人经验,像这样的棘手问题是机器学习算法和统计分类器的教科书案例。

希望这会有所帮助!

链接:

Kolmogorov Complexity
Complexity calculator

【讨论】:

  • 非常感谢,schmatz,提供非常有用的参考资料。我会将这个问题保留几天,以听取其他专家的意见,但您的回答很棒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
相关资源
最近更新 更多