繁体   English   中英

如何测试机器学习模型?

[英]How to test a machine learning model?

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

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

开发一个框架来验证机器学习模型将给出准确结果的可能性有多大?

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

还请建议任何其他方法

基于 ML 的软件的 QA 测试需要额外的、非常规的测试,因为它们对给定输入集的输出通常不是定义的、确定的或先验的,它们产生的是近似值而不是精确的结果。

QA 可能旨在测试:

  1. 朴素但可预测的基准方法:预测中的平均方法,分类中的基于类频率的分类器等。
  2. 健全性检查(输出是否可行/合理):例如,预测年龄是否为正?
  3. 预设的客观接受水平:例如,它的AUCROC > 0.5 吗?
  4. 极端/边界情况:例如,天气预报模型的雷暴条件。
  5. 偏差-方差权衡:它在样本内和样本外数据上的表现如何? K-Fold交叉验证在这里很有用。
  6. 模型本身:是变异系数其性能度量(例如,ROC曲线下面积)的由运行在同一对/随机火车和测试分区相同数据内的合理结合?

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

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

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

完全公开,我为此编写了一个小的 Python 包。 您可以在这里查看或下载如下,

pip install mlqa

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM