Testing 如何测试机器学习模型?

Testing 如何测试机器学习模型?,testing,machine-learning,machine-learning-model,Testing,Machine Learning,Machine Learning Model,我想开发一个验证机器学习模型的框架(用于QA测试)。我和我的同龄人进行了很多讨论,并阅读了谷歌的文章 大多数讨论或文章都在告诉我们,机器学习模型将随着我们提供的测试数据而发展。如果我错了,请纠正我 开发一个框架来验证机器学习模型将给出准确结果的可能性有多大 从我读到的文章中可以找到几种测试模型的方法:分裂和多重分裂技术,变形测试 还请建议任何其他方法基于ML的软件的QA测试需要额外的、非常规的测试,因为它们对于给定的输入集的输出通常不是定义的、确定性的或先验已知的,并且它们产生的是近似值,而不是

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

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

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

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


还请建议任何其他方法

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

QA可设计为针对以下各项进行测试:

  • 朴素但可预测的基准方法:预测中的,分类中基于类频率的分类器,等等
  • (产出可行/合理):例如,预测年龄是否为正
  • 预设目标接受水平:例如,其是否>0.5
  • 极端/边界情况:例如,天气预报模型的雷雨条件
  • :其在样本内和样本外数据上的性能如何?K-折叠在这里很有用
  • 模型本身:对于相同/随机序列和测试分区,其性能度量(例如,AUCROC)在相同数据上的n次运行是否在合理范围内

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

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

    QA可设计为针对以下各项进行测试:

  • 朴素但可预测的基准方法:预测中的,分类中基于类频率的分类器,等等
  • (产出可行/合理):例如,预测年龄是否为正
  • 预设目标接受水平:例如,其是否>0.5
  • 极端/边界情况:例如,天气预报模型的雷雨条件
  • :其在样本内和样本外数据上的性能如何?K-折叠在这里很有用
  • 模型本身:对于相同/随机序列和测试分区,其性能度量(例如,AUCROC)在相同数据上的n次运行是否在合理范围内
  • 其中一些测试需要性能度量。是它们的综合库。

    我认为数据流实际上是需要在这里进行测试的数据流,例如原始输入、操作、测试输出和预测。例如,如果您有一个简单的线性模型,您实际上希望测试从该模型生成的预测,而不是模型的系数。因此,高级别的步骤可能总结如下:

  • 原始输入:原始输入有意义吗?在开始操作之前,需要确保原始数据值在预期范围内。例如,如果您通常在某些数据中看到5-10%的NA率,那么在新批次中有95%的NA率可能表明有问题
  • 训练/预测就绪输入:无论是训练新模型,还是将新数据输入已训练好的模型进行预测,都可能需要确保操纵的数据也有意义。一些ML算法对数据异常非常敏感。您不希望仅仅因为输入中存在一些数据异常就预测数千分左右的信用评分
  • 模型成功:此时,您应该对模型成功有所了解。因此,您可以在新的测试数据上测量模型的性能。如果训练和测试分数没有显著差异(即过度拟合),您也可以检查它们。如果你正在接受再培训,你可以与以前的培训分数进行比较。或者,您可以分离一些测试集并比较其分数
  • 预测:最后,在交付给生产/客户之前,您需要确保您的最终输出是合理的。例如,如果你正在预测一家非常小的商店的收入,那么每天的收入预测不能是百万美元或一些负值
  • 完全公开,我为此编写了一个小Python包。您可以按以下方式查看或下载

    pip install mlqa
    
    我认为数据流实际上是需要在这里测试的数据流,比如原始输入、操作、测试输出和预测。例如,如果您有一个简单的线性模型,您实际上希望测试从该模型生成的预测,而不是模型的系数。因此,高级别的步骤可能总结如下:

  • 原始输入:原始输入有意义吗?在开始操作之前,需要确保原始数据值在预期范围内。例如,如果您通常在某些数据中看到5-10%的NA率,那么在新批次中有95%的NA率可能表明有问题
  • 训练/预测就绪输入:无论是训练新模型,还是将新数据输入已训练好的模型进行预测,都可能需要确保操纵的数据也有意义。一些ML算法对数据异常非常敏感。您不希望仅仅因为输入中存在一些数据异常就预测数千分左右的信用评分
  • 模型成功:此时,您应该对模型成功有所了解。因此,您可以在新的测试数据上测量模型的性能。如果训练和测试分数没有显著差异(即过度拟合),您也可以检查它们。如果你正在接受再培训,你可以与以前的培训分数进行比较。或者,你可以分开一些t