如何训练神经网络来检测模式的存在?

How to train a neural network to detect presence of a pattern?

问题措辞含糊不清 - 我很乐意根据反馈对其进行更改。但是,我正在尝试训练神经网络来检测网站上的欺诈交易。我有很多参数作为输入(一天中的时间、原籍国、过去一个月的访问次数、过去一个月来自唯一 IP 的访问次数、交易次数、平均交易规模等等)。总共可能有 100 多个输入。输入已经过规范化和净化,它们形成了 time series。从历史上看,我可以查看我的数据并确定交易是 A 类欺诈还是 B 类欺诈或非欺诈性交易。我的训练集可以很大(几千或几万点)。

最终,我想要一个指标:A 类欺诈、B 类欺诈或非欺诈。一般来说,欺诈交易往往符合一种模式。我无法准确识别模式(这就是我使用 NN 的原因)。然而,欺诈交易不能是任何类型的模式。所以当第三个桶是 "other".

时,将东西识别到 3 个桶中似乎很奇怪

如果这是一个开关/外壳,它会是这样的:

switch transactionData
  when transactionData.transaction_count < 0.2 && ....
    FRAUD_A
  when transactionData.transaction_count > 0.5 && ....
    FRAUD_B
  else
    NOT_FRAUD

显然,这些是简化的案例,但我的问题是如何正确训练 else 案例。我是否获得三种类型的数据(fraud_a、fraud_b 和 not_fraud)并训练它们?或者还有其他方法可以训练 other?

将其他(非欺诈)class 与您感兴趣的内容一起添加通常是完全可以的。但我理解您的担忧。基本上,NN 的工作是学习 "case/switch",并且在大多数情况下它会学习正确的,假设大多数样本属于 NOT FRAUD class。在某些病理情况下 classifiers 可以学习不同的想法,例如一切都是欺诈 A class,除非另有证明。您通常无法直接控制它,但可以通过创建更好的功能和其他一些技巧来改变它。现在,继续你所拥有的,看看会发生什么。

你可以做的一件事是训练两个 classifier,一个(FRAUD/NOT FRAUD),然后如果检测到欺诈,则将数据输入第二个 class classifier(欺诈 A/FRAUD B)。有时(但不总是)这样效果更好。