在一次面试中,我被要求在机器学习的帮助下解决一个用例。我必须使用机器学习算法来识别交易中的欺诈行为。我的训练数据集假设有100,200笔交易,其中100,000笔是合法交易,200笔是欺诈交易。
我不能将数据集作为一个整体来制作模型,因为它将是一个有偏见的数据集,并且模型将是一个非常糟糕的模型。
举个例子,我取了200个好的交易样本,它们很好地代表了数据集(好的交易),还有200个欺诈的交易,并使用它作为训练数据来建立模型。
我被问到的问题是,我如何将200个良好的事务扩展到包含100,000个良好记录的整个数据集,以便我的结果可以映射到所有类型的事务。我从来没有解决过这种情况,所以我不知道如何处理它。
任何关于我如何去做的指导都将是有帮助的。
发布于 2017-06-14 23:20:13
这是一个在面试中抛出的一般性问题。关于这个问题的信息是简洁和模糊的(例如,我们不知道功能的数量!)。你需要问自己的第一件事是,面试官希望我回答什么?因此,基于这种背景,答案必须以类似的一般方式来表达。这意味着我们不必找到“解决方案”,而是给出参数,表明我们实际上知道如何解决问题,而不是直接解决问题( it )。
我们提出的问题是,少数类(欺诈)只占总数的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/
最后,只需对模型进行经验评估,以检查在给定数据集的情况下,哪些选项和参数是最合适的。遵循这些想法并不能百分之百保证我们将能够解决手头的问题。但它确保我们处于更好的位置,可以尝试从数据中学习,并能够摆脱那些邪恶的欺诈者,同时可能在此过程中获得一份不错的工作;)
发布于 2017-06-07 22:16:24
在这个问题中,您希望将事务分类为“好”或“欺诈”。然而,不平衡你的数据是真正的不平衡。你可能会对Anomaly detection感兴趣。我会让你阅读所有的文章,了解更多细节,但我会在我的回答中引用几个部分。
我想这会让你相信这就是你想要解决这个问题的方法:
不仅仅是分类吗?
如果满足以下三个条件,答案是肯定的。
你已经标记了训练数据异常和正常类是平衡的(比如说至少1:5)数据不是自相关的。(该数据点不依赖于较早的数据点。这通常会在时间序列数据中中断)。如果以上都是真的,我们不需要异常检测技术,我们可以使用像随机森林或支持向量机(SVM)这样的算法。
然而,通常很难找到训练数据,即使您可以找到它们,大多数异常都是1:1000到1:10^6事件,其中类不平衡。
现在回答你的问题:
通常使用通过多次重新采样数据而构建的集成来解决类不平衡问题。其思想是首先通过获取所有异常数据点并添加正常数据点的子集(例如,异常数据点的4倍)来创建新的数据集。然后使用SVM或随机森林为每个数据集构建分类器,并使用集成学习对这些分类器进行组合。这种方法运行良好,并产生了非常好的结果。
如果数据点之间是自相关的,那么简单的分类器就不能很好地工作。我们使用时间序列分类技术或递归神经网络来处理这些用例。
我还建议使用problem的另一种方法。在这篇文章中,作者说:
如果您没有训练数据,仍然可以使用无监督学习和半监督学习进行异常检测。但是,在构建模型之后,您将不知道它做得有多好,因为您没有什么可用来测试它的。因此,在将这些方法放入关键路径之前,需要在现场测试这些方法的结果。
然而,你确实有一些欺诈数据来测试你的无监督算法是否做得很好,如果它做得足够好,它可以是第一个解决方案,它将有助于收集更多的数据来训练监督分类器。
请注意,我不是专家,这只是我把我的知识和我最近读到的一些关于这个主题的文章结合起来后得出的结论。
有关机器学习的更多问题,我建议您使用this stackexchange community
我希望它能对您有所帮助:)
https://stackoverflow.com/questions/44400461
复制相似问题