如何测试机器学习模型?

时间:2018-03-09 08:39:55

标签: testing machine-learning machine-learning-model

我想开发一个框架(用于QA测试目的),验证机器学习模型。我与同行进行了很多讨论,并阅读了谷歌的文章。

大多数讨论或文章都在说明机器学习模型将随着我们提供的测试数据而发展。如我错了请纠正我。

开发一个验证机器学习模型的框架会产生准确结果的可能性是什么?

从我读过的文章中测试模型的几种方法:分裂和多分裂技术,变形测试

还请建议任何其他方法

2 个答案:

答案 0 :(得分:1)

基于ML的软件的质量检查测试需要进行额外的非常规测试,因为通常对于给定输入集,其输出是不确定的,确定性的或先验的,并且它们会产生近似值,而不是精确的结果。

质量检查可能旨在针对以下方面进行测试:

  1. 天真的但可预测的基准测试方法:预测中的average method,分类中基于类频率的分类器等。
  2. sanity checks(输出是可行/合理的):例如,预测年龄是否为正?
  3. 预设客观接受水平:例如,其AUCROC> 0.5?
  4. 极端/边界案例:例如,天气预报模型的雷暴天气情况。
  5. bias-variance tradeoff:它对样本内和样本外数据的性能如何? K折cross-validation在这里很有用。
  6. 模型本身:来自 n 的性能指标(例如AUCROC)的coefficient of variation是否在相同数据上运行,以在合理范围内进行相同/随机训练和测试分区?

其中一些测试需要性能指标。 Here是它们的综合库。

答案 1 :(得分:0)

我认为数据流实际上是在这里需要测试的数据流,例如原始输入,操作,测试输出和预测。例如,如果您有一个简单的线性模型,则实际上要测试从该模型产生的预测而不是模型的系数。因此,也许高层次的步骤总结如下;

  1. 原始输入:原始输入有意义吗?在开始操作之前,您需要确保原始数据值在预期的范围内。例如,如果您通常在某些数据中看到NA率为5-10%,则新批次中的NA率为95%可能表明有问题。
  2. 训练/预测就绪输入:要么训练新模型,要么将新数据输入到已经训练好的模型中进行预测,您可能想确保操纵的数据也有意义。某些ML算法对于数据异常非常敏感。您不想仅仅因为输入中存在一些数据异常就预测约数千的信用评分。
  3. 模型成功:到此时,您应该对模型成功有所了解。因此,您可以在新的测试数据上衡量模型的性能。如果训练和测试成绩没有明显差异(即过拟合),您还可以检查它们。如果您正在重新训练,则可以与以前的训练成绩进行比较。或者,您可以分离一些测试集并比较其得分。
  4. 预测:最后,您需要确保最终输出有意义,然后才能交付给生产/客户。例如,如果您要预测一家很小的商店的收入,则每日收入预测就不能是一百万美元或某些负数。

完整披露,我为此编写了一个小型Python包。您可以检查here或按以下方式下载

pip install mlqa
相关问题