如何在训练数据集中扩展模型以涵盖训练数据的所有方面

时间:2017-06-06 22:02:26

标签: machine-learning

我在接受采访时被要求在机器学习的帮助下解决一个用例。我必须使用机器学习算法来识别交易中的欺诈行为。我的培训数据集可以说100,200笔交易,其中100,000笔是合法交易,200笔是欺诈。

我无法使用数据集作为整体来制作模型,因为它是一个有偏见的数据集,而且模型非常糟糕。

让我们举例来说,我采集了200个良好交易的样本,这些交易代表了数据集(良好的交易),以及200个欺诈的交易,并使用此作为训练数据制作模型。

我被问到的问题是,我如何将200个良好的交易扩展到100,000个良好记录的整个数据集,以便我的结果可以映射到所有类型的交易。我从来没有解决过这种情况所以我不知道如何处理它。

任何关于如何进行此操作的指导都会有所帮助。

2 个答案:

答案 0 :(得分:2)

这是一个在采访中提出的一般性问题。有关问题的信息简明扼要(我们不知道例如功能的数量!)。首先你需要问自己的是面试官要我做出什么回应?因此,基于这种背景,答案必须以类似的一般方式制定。这意味着我们不必找到解决方案'但是反过来给出的论据表明我们实际上知道如何解决问题,而不是解决它。

我们提出的问题是少数群体(欺诈)只占总数的0.2%。这显然是一个巨大的不平衡。仅预测所有案例为“非欺诈行为”的预测变量。将获得99.8%的分类准确度!因此,肯定必须要做的事情。

我们将主要任务定义为二元分类问题,我们希望预测交易是标记为正(欺诈)还是负(非欺诈)。

第一步是考虑我们可以采用哪些技术来减少不平衡。这可以通过减少多数类(欠采样)或增加少数样本数(过采样)来完成。两者都有缺点。第一个意味着数据集中潜在有用信息的严重丢失,而第二个可能存在过度拟合的问题。一些改进过度拟合的技术是SMOTE和ADASYN,它们使用策略来改善新合成样品生成的多样性。

当然,在这种情况下,交叉验证变得至关重要。此外,如果我们最终进行过采样,则必须进行协调。使用交叉验证方法确保我们充分利用这两个想法。查看http://www.marcoaltini.com/blog/dealing-with-imbalanced-data-undersampling-oversampling-and-proper-cross-validation了解更多详情。

除了这些抽样的想法,在选择我们的学习者时,可以针对特定指标训练/优化许多ML方法。在我们的例子中,我们不希望绝对优化准确性。相反,我们希望训练模型以优化 ROC-AUC 或特别寻找高召回,即使在失去准确性的情况下,因为我们想要预测所有正面'欺诈'或者至少发出警报,即使有些人会证明是误报。模型可以调整内部参数(阈值)以找到这两个指标之间的最佳平衡。有关指标的更多信息,请查看此精彩博客:https://www.analyticsvidhya.com/blog/2016/02/7-important-model-evaluation-error-metrics/

最后,只需要根据经验评估模型,以确定在给定数据集的情况下哪些选项和参数最合适。遵循这些想法并不能保证100%我们能够解决手头的问题。但它确保我们处于一个更好的位置,试图从数据中学习,并能够摆脱那些邪恶的欺诈者,同时可能在此过程中得到一份好工作;)

答案 1 :(得分:1)

在此问题中,您希望将交易分类为好或欺诈。但是您的数据真的不平衡。你可能会对Anomaly detection感兴趣。我会让你阅读所有文章了解更多细节,但我会在答案中引用一些部分。

我认为这会让你相信这是你正在寻找的解决这个问题的方法:

  

这不只是分类吗?

     

如果满足以下三个条件,答案是肯定的。

     

您已标记了训练数据异常和正常类   平衡(比如说至少1:5)数据不是自相关的。 ( 那个   数据点不依赖于早期数据点。这经常打破   在时间序列数据)。如果以上都是真的,我们就不需要了   异常检测技术,我们可以使用像Random这样的算法   森林或支持向量机(SVM)。

     

然而,通常很难找到训练数据,甚至是   你可以找到它们,大多数异常都是1:1000到1:10 ^ 6个事件在哪里   课程不平衡。

现在回答你的问题:

  

通常,使用由其构建的集合来解决类不平衡   多次重采样数据。我们的想法是首先创建新的数据集   通过获取所有异常数据点并添加正常数据的子集   点(例如,异常数据点的4倍)。然后是分类器   是使用SVM或随机森林为每个数据集构建的   使用集成学习来组合分类器。这种方法有   运作良好,取得了很好的效果。

     

如果数据点彼此自相关,则简单   分类器不会很好。我们使用时间处理这些用例   系列分类技术或递归神经网络。

我还建议解决问题的另一种方法。在这篇文章中,作者说:

  

如果您没有训练数据,仍然可能会出现异常情况   使用无监督学习和半监督学习进行检测。   但是,在构建模型之后,您将不知道它有多好   正在做,因为你没有什么可以测试它。因此,结果   这些方法需要在放入之前在现场进行测试   关键路径。

但是你确实有一些欺诈数据来测试你的无监督算法是否运行良好,如果它做得不错,它可能是第一个有助于收集更多数据来训练有监督分类器的解决方案后面。

请注意,我不是专家,这就是我在将我的知识和我最近阅读的有关该主题的一些文章混合后得出的结论。

有关机器学习的更多问题我建议您使用this stackexchange community

我希望它会对你有所帮助:)。