2015-02-23 113 views
2

问题措辞含糊不清 - 我很乐意根据反馈进行更改。但是,我试图训练一个神经网络来检测网站上的欺诈交易。我有很多参数作为输入(一天中的时间,原籍国,过去一个月的访问次数,过去一个月唯一IP访问的次数,交易次数,平均交易规模等等)。总共可能有超过100个输入。输入已经正常化和消毒,并且它们形成time series。从历史上看,我可以查看我的数据并确定某项交易是A类或B类欺诈或非欺诈性欺诈行为。我的训练集可能很大(数千或数万点)。最终,我想要一个指标:A型欺诈,B型欺诈或不欺诈。一般来说,欺诈交易往往适合一种模式。我无法准确识别模式(这就是为什么我使用NN)。但是,非欺诈性交易可以是任何类型的模式。所以,当第三桶是“其他”时,将事情分成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

+0

_“我会得到三种类型的数据(fraud_a,fraud_b和not_fraud)并且训练它们吗?”_基于我对这些事情的有限理解:是的。 – 2015-02-23 14:27:31

+0

然而'not_fraud'会有许多不同类型的数据模式。可能没有任何东西将它们串在一起。 – Shamoon 2015-02-23 14:28:32

+0

听起来很不愉快,但我认为你只需要开始看看会发生什么。到目前为止,你似乎没有足够的理解你的数据和“其他”类。获取你的特征并训练它们(或者使用一些其他分析,例如聚类),以便查看数据是什么。只有这样你才能在“其他”中识别可能的子类。 – runDOSrun 2015-02-23 14:28:46

回答

1

其他(非欺诈)课程以及您感兴趣的课程通常是完全可以的,但我理解您的担忧。基本上,它的工作是学习“案例/开关”,在大多数情况下,它会学到正确的一个,假设大多数样本属于NOT FRAUD类。在一些病理情况下,分类器可以学习不同的想法,例如除非另有证明,否则一切都属于FRAUD类。通常不能直接控制它,但可以通过创建更好的功能和其他技巧来改变它。现在,继续你所拥有的,看看会发生什么。

你可以做的一件事是训练两个分类器,一个(FRAUD/NOT FRAUD),然后如果检测到欺诈,则将数据馈送到第二个两级分类器(FRAUD A/FRAUD B)。有时(但并非总是),这会更好。