快速入门DVC(六):指标跟踪、更新训练参数以及可视化模型表现

简介: 在上一篇文章快速入门DVC(五):数据流水线中,讲述了如何完成一个机器学习模型训练流水线,以及如何重现机器学习模型。本文接下来将讲述 DVC 如何进行模型指标跟踪、修改训练参数重新训练以及使用图表可视化模型表现。

收集模型指标

首先,让我们看看获取这些 ML 属性值的机制是什么。 我们在之前的流水线中最后再添加一个评估 Stage:

$ dvc run -n evaluate \
          -d src/evaluate.py -d model.pkl -d data/features \
          -M scores.json \
          --plots-no-cache prc.json \
          --plots-no-cache roc.json \
          python src/evaluate.py model.pkl \
                 data/features scores.json prc.json roc.json
复制代码


其中,-M 参数指定了一个指标文件,而 --plots-no-cache 参数指定了一个不会被 DVC 缓存的图表文件(由这个 Stage 生成)。 dvc rundvc.yaml 文件中生成了一个新的 Stage:

evaluate:
  cmd: python src/evaluate.py model.pkl data/features ...
  deps:
    - data/features
    - model.pkl
    - src/evaluate.py
  metrics:
    - scores.json:
        cache: false
  plots:
    - prc.json:
        cache: false
    - roc.json:
        cache: false
复制代码


这个 Stage 与我们流水线中前几个 Stage 的最大区别在于两个新的部分:指标和图表。 这些指标和图表用于标记某些包含 机器学习“遥测”数据(ML "telemetry") 的文件。 指标文件包含标量值(例如:AUC)和图表文件包含用于可视化和比较的矩阵和一系列数据(例如: ROC 曲线或模型损失图)。

当这些参数使用 cache: false,DVC 跳过缓存进行输出,因为我们希望 score.jsonprc.jsonroc.json 由 Git 进行版本控制。

evaluate.py Python 文件将模型的 ROC-AUC 和平均精度(AP)写入 score.json文件,然后,使用 -M 将其标记为指标文件。 其内容如下:

{ "avg_prec": 0.5204838673030754, "roc_auc": 0.9032012604172255 }
复制代码


同时,evaluate.py Python 文件还将精度、召回率和阈值数组(使用 sklearn 的precision_recall_curve 函数获得)写入图表文件 prc.json

{
  "prc": [
    { "precision": 0.021473008227975116, "recall": 1.0, "threshold": 0.0 },
    ...,
    { "precision": 1.0, "recall": 0.009345794392523364, "threshold": 0.6 }
  ]
}
复制代码


类似地,它将 sklearn 的 roc_curve 函数生成的的数组写入 roc.json 以获得额外的图表。

DVC 不强制您使用任何特定的文件名,也不强制使用指标或图表文件的格式或结构。 它完全由用户根据具体使用场景定义。

您可以使用 DVC 查看跟踪的指标和图表。

首先,我们查看生成的指标:

$ dvc metrics show
Path         avg_prec    roc_auc
scores.json  0.52048     0.9032
复制代码


接下来,我们查看图表:

查看图表之前,需要指定用作坐标轴的数组。我们只需要这样操作一次,DVC 将保存我们的图表配置。

$ dvc plots modify prc.json -x recall -y precision
Modifying stage 'evaluate' in 'dvc.yaml'
$ dvc plots modify roc.json -x fpr -y tpr
Modifying stage 'evaluate' in 'dvc.yaml'
复制代码


现在,我们来查看图表:

$ dvc plots show
file:///Users/dvc/example-get-started/plots.html
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


我们保存这个迭代,以便稍后进行比较:

$ git add scores.json prc.json roc.json
 $ git commit -a -m "Create evaluation stage"
复制代码


稍后我们将看到如何比较和可视化不同的流水线迭代。

现在,我们来看看如何获取另一个对比较非常有用的重要信息:参数。


定义流水线 Stage 的参数

数据科学流水线包含定义可以修改的参数(以训练模型、进行预处理等操作)的配置文件是很常见的。

DVC 为 Stage 提供了一种机制,以依赖于此类配置文件(YAML、JSON、TOML 和 Python 格式均支持)的特定部分的值 。

幸运的是,我们已经在 dvc.yaml 中有一个带有参数的 Stage :

featurize:
  cmd: python src/featurization.py data/prepared data/features
  deps:
    - data/prepared
    - src/featurization.py
  params:
    - featurize.max_features
    - featurize.ngrams
  outs:
    - data/features
复制代码


我们来回忆一下这个 Stage 是如何生成的?

featurize Stage 是使用下面的 dvc run 命令创建的:

dvc run -n featurize \
           -p featurize.max_features,featurize.ngrams \
           -d src/featurization.py -d data/prepared \
           -o data/features \
           python src/featurization.py data/prepared data/features
复制代码


注意: 指定 -p 参数(--params 的缩写),params 部分定义了 featurize Stage 的参数依赖关系。 默认情况下,DVC 从 params.yaml 文件中读取这些值(featurize.max_featuresfeaturize.ngrams)。 但是,与指标和图表一样,参数文件名和结构也可以由用户根据使用场景自定义。

下面是我们的 params.yaml 文件的内容:

prepare:
  split: 0.20
  seed: 20170428
featurize:
  max_features: 500
  ngrams: 1
train:
  seed: 20170428
  n_est: 50
  min_split: 2
复制代码


更新 Stage 参数并进行流水线迭代

我们对目前获得的 AUC 指标值绝对不满意!

让我们编辑 params.yaml 文件以使用bigrams并增加特征数量:

featurize:
-  max_features: 500
-  ngrams: 1
+  max_features: 1500
+  ngrams: 2
复制代码


dvc.yaml 的美妙之处在于您现在需要做的就是运行dvc repro命令:

dvc repro
复制代码


它将分析更改的部分,使用运行缓存中现有的结果,执行所需的命令并生成新结果(模型、指标、图)。

相同的逻辑适用于其他可能的调整(编辑源代码、更新数据集),您进行更改之后、使用 dvc repro命令,然后 DVC 运行需要的内容。


比较流水线进行两次迭代的结果

最后,让我们看看更新操作是否提高模型的表现。

DVC 有一些命令可以查看指标、参数和图表的变化并使其可视化。 这些命令可以用于一个或多个流水线的迭代。 让我们将当前的"bigrams"运行结果与上次提交的"baseline"迭代结果进行比较:

dvc params diff 可以显示工作区中的参数与上次提交的差异。

$ dvc params diff
Path         Param                   HEAD  workspace
params.yaml  featurize.max_features  500   1500
params.yaml  featurize.ngrams        1     2
复制代码


dvc metrics diff 对指标执行相同的操作,显示工作区中的指标与上次提交的差异:

dvc metrics diff
Path         Metric    HEAD     workspace  Change
scores.json  avg_prec  0.52048  0.55259    0.03211
scores.json  roc_auc   0.9032   0.91536    0.01216
复制代码


最后,我们可以用一个命令比较PR曲线和ROC曲线!

$ dvc plots diff
file:///Users/dvc/example-get-started/plots.html
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


总结

本文讲述了dvc metricsdvc plots等命令,DVC 使用这些命令使得跟踪指标、更新参数和使用图表可视化模型表现变得容易。


相关文章
|
6月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
421 0
|
29天前
|
数据采集 移动开发 数据可视化
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
这篇文章介绍了数据清洗、分析、可视化、模型搭建、训练和预测的全过程,包括缺失值处理、异常值处理、特征选择、数据归一化等关键步骤,并展示了模型融合技术。
43 1
模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)
|
29天前
|
XML 机器学习/深度学习 数据可视化
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
这篇文章介绍了如何通过界面化操作YOLOv5来完成数据集的自动标注,包括修改源码、自动标注的前期准备、开始自动标注、可视化标注效果以及将XML文件转换为YOLO训练所需的TXT格式。
49 1
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
|
5月前
|
机器学习/深度学习 监控 数据可视化
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(3)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
|
29天前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
43 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
29天前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
75 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
关于Python数据分析项目的简要概述:从CSV加载数据,执行数据预处理,进行数据探索,选择线性回归模型进行训练,评估模型性能并优化,最后结果解释与可视化。
【7月更文挑战第5天】这是一个关于Python数据分析项目的简要概述:从CSV加载数据,执行数据预处理(填充缺失值,处理异常值),进行数据探索(可视化和统计分析),选择线性回归模型进行训练,评估模型性能并优化,最后结果解释与可视化。此案例展示了数据科学的典型流程。
74 2
|
6月前
|
缓存 人工智能 数据可视化
LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解
LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解
LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解
|
5月前
|
数据可视化 计算机视觉 Python
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(2)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
|
5月前
|
机器学习/深度学习 数据可视化 算法
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示(1)
【超详细】MMLab分类任务mmclassification:环境配置说明、训练、预测及模型结果可视化展示
下一篇
无影云桌面