符合scikit learn api的模型测试
drifter-ml的Python项目详细描述
毫升测试
这个模块的目标是创建一个灵活和易于使用的模块来测试机器学习模型,特别是在SCIKIT学习中。这些测试将足够可读,任何人都可以将它们扩展到其他框架和api,主要概念保持不变,但或多或少的思想将被扩展,在这个库中不需要任何工作来扩展通过scikit学习api。
您可以read the docs获得更详细的解释。
涵盖的测试
- 根据指标进行测试
- 分类试验
- 基于规则的测试:
- 精度下限
- 调用下边界
- F1得分下限
- AUC下限
- 每个类的精度下限
- 按类调用下边界
- 每节课F1分数下限
- 每个类的AUC下限
- 基于决策的测试:
- 精确折叠低于平均值
- 召回次数低于平均值
- f1倍低于平均值
- AUC倍低于平均值
- 每节课的精确折叠低于平均值
- 每堂课召回次数低于平均值
- 每班低于平均水平1倍
- AUC低于每类平均值的倍数
- 反对新的预测
- 每类预测的比例
- 班级不平衡测试
- 概率分布相似性检验
- 校准测试
- 基于规则的测试:
- 回归检验
- 基于规则的测试:
- 均方误差上边界
- 中值绝对误差上边界
- 基于决策的测试:
- 均方误差倍高于平均值
- 绝对误差中值高于平均值
- 基于规则的测试:
- 分类试验
- 运行时性能测试
- 大小为x的模拟样本的预测运行时间
- 根据输入数据进行测试
- 需要插补的任何列的正确插补百分比
- 数据集测试-http://www.vldb.org/pvldb/vol11/p1781-schelter.pdf
- 记忆测验
- 集群测试-这是关于数据的总体结构 如果集群的数量显著增加或减少, 应该是一个指标,表明数据已经发生了足够的变化 可能需要重新运行
- 相关性测试-这是为了确保给定列与以前收集的数据之间的相关性不会发生很大变化。如果数据确实发生了变化,那么应该重新运行模型。
- 形状测试-这是为了确保给定列的一般形状不会随时间发生太大变化。这里的想法和相关测试是一样的。
可能的问题
与此相关的一些已知问题,任何机器学习测试都需要人工交互,因为统计测试的类型1和类型2错误。此外,我们只需要从多个角度来询问模型。不能只从一个角度。因此,我甚至不确定将ml测试添加到ci管道中的总体概念是否真的可行。
未来功能
- 交叉验证分数测试
- 添加自定义丢失功能
- 添加自定义精度函数
- 添加这些测试:https://www.datasciencecentral.com/profiles/blogs/a-plethora-of-original-underused-statistical-tests
- 分类聚类
- 无监督和半监督试验
- 验证簇中的相似性与标签中的相似性
- 生成一组具有代表性的小标签,然后传播其他标签
参考文献
- https://dzone.com/articles/quality-assurancetesting-the-machine-learning-mode
- https://medium.com/datadriveninvestor/how-to-perform-quality-assurance-for-ml-models-cef77bbbcfb
- uat的解释:https://www.techopedia.com/definition/3887/user-acceptance-testing-uat
- https://mice.cs.columbia.edu/getTechreport.php?techreportID=419&format=pdf
- https://www.xenonstack.com/blog/unit-testing-tdd-bdd-deep-machine-learning/