Deepchecks 测试机器学习模型 | Python

2024 年 8 月 29 日 | 阅读 6 分钟

引言

本文我们讨论 Deepchecks:测试机器学习模型(Python)。一个成功且可靠的知识系统在版本迭代过程中必须经过各个阶段的成熟。它始于数据收集和整理、准确划分数据集、以及对模型进行正确的训练、测试和验证,以确保其在实际应用中的性能。Deepchecks 是一个框架,可以帮助我们在构建应用程序的同时,快速检查和验证要部署的数据和模型。本文将对 Deepchecks 进行简要概述,并深入分析测试和验证机器学习模型及数据的步骤。

与 Python 提供的众多包不同,Deepchecks 是一个用于无缝测试和验证机器学习模型和数据的 Python 包,作为机器学习模型和数据验证测试的基本前提,包括与性能相关的故障排除。它可以根据不同的测试条件对模型进行泛化,并检查数据完整性以及数据在不同类别或类别之间的平衡性,以消除类别不平衡带来的问题,并确保只有在大量类别上才能获得高性能。因此,简而言之,“深度检查”正如其名,有助于深入检查模型整体性能、数据完整性等不同方面,并提供对机器学习模型如何演进的见解。可用数据用于改变场景和环境。该框架是一个简单但有效的 Python 一次性框架,易于安装,并可通过 pip 命令使用,从而易于解读模型性能和数据不一致的各种参数。

什么是数据验证?

正如其名称所示,验证数据用于在模型拟合的事实上验证模型性能,验证数据是拟合到模型中的信息的一定比例。利用模型拟合,我们可以结合各种指标确定模型的损失和准确率。我们还可以用于调整模型健康配置中模型的许多超参数。

什么是测试数据?

测试数据本质上是模型开发过程中未见过的数据。它通常是一些真实世界的数据,以便更好地测试已开发系统的学习模型性能。因此,简而言之,测试数据可以称为用于评估系统学习模型性能的数据。

使用 Deepchecks 的条件

如前所述,Deepchecks 是 Python 的一个包。它用于评估已开发的数据和系统学习模型的通用性和可行性。使用该包更容易,但需要满足以下一些前提条件:

  1. 数据的一个子集,即未经任何预处理,如数据清理和预处理。
  2. 带标签的模型训练数据的一个子集。
  3. 模型未见过的数据的一个子集,或者简单地说,是测试数据。
  4. 在 Deepcheck 下使用支持的模型。

使用 Deepchecks 的优势

使用 Deepchecks 的最重要优势之一是,它有助于顺畅地解读与数据相关的缺陷,以及在实际应用中采取的学习系统模型。此外,Deepcheck 中 Suite 的能力是一个主要关注点。它将是机器学习工程师和开发人员的绝佳选择,因为可以处理所有主要的担忧,并在各种因素之间进行深入检查。稍后,Suite 将负责生成可解释且有用的报告。

此外,可以使用具有出色参数的预定义套件。但是,如有必要,可以根据要求修改某些参数。因此,可以生成评估来分析与所选数据或系统学习模型相关的差异,以及用于排序和验证。下面提到了套件中的一些预定义测试及其功能,以便更好地理解。

  1. dataset_integrity:顾名思义,此参数负责检查所选特定测试所考虑的数据集中的完整性。
  2. train_test_validation:迭代一系列检查,以确定数据在训练和测试阶段划分的正确性。
  3. model_evaluation:迭代一系列检查,以通过测试模型的性能、通用性以及是否存在过拟合的迹象。

测试和验证系统学习模型及数据步骤

在 Deepchecks 中内置的步骤之前,让我们了解一下 Deepchecks 中存在的用于生成结果的测试。因此,Deepcheck 中主要有三种类型的测试。它们如下:

  1. 数据完整性检查
  2. 检查训练和测试数据的分布。
  3. 对未见过的数据或接近实际世界的数据的模型性能评估

Deepchecks 主要对系统学习模型和数据进行无缝测试和验证,遵循上述基本测试过程。这是对每个阶段测试的评估。但是,对于不同样本之间数据标签不平衡的常见问题,以及数据泄露的结果,都有深入的检查。在 Deepcheck 中,测试和验证系统学习模型和数据的方法统称为 Suite。因此,Suite 是 Deepcheck 框架内部进行的一系列测试,上述类型的测试将在其中一起进行验证。

因此,可用数据被划分为不同的训练和测试比例。Deepchecks API 负责检查与数据不一致相关的主要问题,并评估已开发的模型在各种通用性参数上的表现。因此,Suite 内部运行了多个测试,并负责提供对所执行测试的深入报告,以及与已开发数据和系统学习模型相关的问题。

测试和验证我们的模型和数据

让我们从头开始实现 Deepcheck,并理解一些重要的参数和术语。本文考虑使用葡萄酒分类数据集,该数据集有三个类别(1、2、3)。您可以使用 Deepcheck 对整个包运行集体检查,或者如果您只有一个数据集,您可以使用一个数据集对 Deepcheck 包中使用的数据执行数据完整性检查。首先,在数据集完全验证后,下面可视化了一些新特征。

所有其他数据都以报告的形式生成,并附有对预测曲线下面积(AUC)、接收者操作曲线(ROC)性能等的解释。如前所述,使用了相同的数据集和单一的完整性检查以获得更好的结果和解释。数据集中某些特征的预测能力得分表明,由于损耗,某些特征具有更高的预测能力。但是,在此案例中,预测能力估计在一个显著的范围内,并且没有数据泄露的迹象。这可以在下面的图片中可视化。通过参考书中提到的笔记本,可以找到与所用数据相关的所有其他参数和问题,以获得更好的理解。

结论

Deepcheck 通过易于理解的报告形式识别并解决任何实时数据和系统学习模型可能面临的每个敏感参数和问题。这有助于在测试和验证用于实际数据或改变参数的系统学习模型时产生可靠的结果。这使得 Deepcheck 成为机器学习工程师和开发人员的友好包,用于使用和交付可靠的机器学习模型以获得正确的结果。Deepchecks 是一个框架,可以帮助我们在构建应用程序的同时,快速检查和验证要部署的数据和模型。本文将对 Deepchecks 进行简要概述,并深入分析测试和验证机器学习模型及数据的步骤。

Deepcheck 中的一个重要评估指标是 DriftScore,它使我们能够访问有关部署和生产阶段中的数据行为和已开发模型的数据。目前,Deepcheck 的使用仅限于某些数据类型和特定的数据格式,预计未来 Deepcheck 将支持更多的数据类型和机器学习模型。