【问题标题】:How to scale up a model in a training dataset to cover all aspects of training data如何在训练数据集中扩展模型以涵盖训练数据的所有方面
【发布时间】:2017-06-14 23:20:12
【问题描述】:

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

我不能将数据集作为一个整体来制作模型,因为这将是一个有偏见的数据集,而模型将是一个非常糟糕的模型。

比如说,我抽取了 200 个很好的交易样本,这些交易很好地代表了数据集(良好的交易)和 200 个欺诈交易,并使用它作为训练数据来制作模型。

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

任何关于我如何去做的指导都会有所帮助。

【问题讨论】:

    标签: machine-learning


    【解决方案1】:

    这是面试中提出的一般性问题。有关问题的信息简洁而模糊(例如,我们不知道特征的数量!)。您需要问自己的第一件事是面试官希望我回答什么?因此,基于这种情况,答案必须以类似的一般方式制定。这意味着我们不必找到“解决方案”,而是提供证明我们确实知道如何解决问题而不是解决问题的论据。 p>

    我们提出的问题是少数类(欺诈)仅占总数的 0.2%。这显然是一个巨大的不平衡。仅将所有案例预测为“非欺诈”的预测器将获得 99.8% 的分类准确率!因此,绝对必须做点什么。

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      不只是分类吗?

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

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

      但是,通常很难找到训练数据,即使当 你可以找到它们,大多数异常是 1:1000 到 1:10^6 事件,其中 类不平衡。

      现在回答您的问题:

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

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

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

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

      但是,您确实有一些欺诈数据来测试您的无监督算法是否表现良好,如果它做得足够好,它可能是第一个有助于收集更多数据以训练监督分类器的解决方案稍后。


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

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

      希望对你有帮助:)

      【讨论】:

      • 我正在寻找一种方法来扩大结果,而不是替代方法。
      • @sohil 如果您阅读了我在回答中引用的第二段文字,它解释了如何提升您的想法以利用您拥有的所有数据:“通常,使用由多次重新采样数据 [...]"
      猜你喜欢
      • 1970-01-01
      • 2018-05-01
      • 2021-04-26
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 2019-01-14
      • 2020-05-21
      相关资源
      最近更新 更多