训练可视化效果(预览版)
超参数或 AutoML 试验搜索机器学习模型的最佳参数。 每个试验由多个运行组成,其中每个运行都会评估特定的参数组合。 用户可以使用 Fabric 中的 ML 试验项监视这些运行。
该 flaml.visualization
模块提供用于在 FLAML 中绘制和比较运行的函数。 用户可以使用 Plotly 与其 AutoML 试验绘图进行交互。 若要使用这些函数,用户需要输入其优化后的 flaml.AutoML
或 flaml.tune.tune.ExperimentAnalysis
对象。
本文介绍如何使用该 flaml.visualization
模块分析和探索 AutoML 试验结果。 还可以针对超参数试验执行相同的步骤。
重要
此功能目前为预览版。
创建 AutoML 试验
AutoML 提供了一套自动化流程,可识别数据集的最佳机器学习管道,使整个建模过程更加简明精确。 从本质上讲,它可避免手动优化不同模型和超参数的问题。
在下面的代码单元格中,我们将:
- 加载 Iris 数据集。
- 将数据分为训练集和测试集。
- 启动 AutoML 试验以拟合我们的训练数据。
- 从
flaml.visualization
使用可视化效果浏览 AutoML 试验的结果。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from flaml import AutoML
# Load the Iris data and split it into train and test sets
x, y = load_iris(return_X_y=True, as_frame=True)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=7654321)
# Create an AutoML instance and set the parameters
automl = AutoML()
automl_settings = {
"time_budget": 10, # Time limit in seconds
"task": "classification", # Type of machine learning task
"log_file_name": "aml_iris.log", # Name of the log file
"metric": "accuracy", # Evaluation metric
"log_type": "all", # Level of logging
}
# Fit the AutoML instance on the training data
automl.fit(X_train=x_train, y_train=y_train, **automl_settings)
可视化试验结果
运行 AutoML 试验后,需要直观显示结果,以分析模型的表现及其行为方式。 在本文档的该部分中,我们将介绍如何使用 FLAML 库中的内置实用工具实现此目的。
导入可视化效果模块
若要访问这些可视化实用工具,请运行以下导入命令:
import flaml.visualization as fviz
优化历史记录
优化历史记录图通常其 x 轴为试验/迭代次数,y 轴为性能指标(例如准确性、RMSE 等)。 随着试验次数的增加,你将看到一个指示各试验表现的线条或散点图。
fig = fviz.plot_optimization_history(automl)
# or
fig = fviz.plot(automl, "optimization_history")
fig.show()
下面是得到的绘图:
功能重要性
特征重要性绘图是一种功能强大的可视化工具,可用于了解不同输入特征在决定模型预测结果方面的重要性。
fig = fviz.plot_feature_importance(automl)
# or
fig = fviz.plot(automl, "feature_importance")
fig.show()
下面是得到的绘图:
平行坐标绘图
并行坐标图是一种可视化工具,其通过绘制对应于变量或超参数的多个垂直线(轴)来表示多维数据,数据点绘制为跨这些轴的连接线。 在 AutoML 或优化试验的环境中,它有助于可视化和分析不同超参数组合的表现。 通过跟踪高性能配置的路径,可以识别超参数选择及其交互中的模式或趋势。 此图有助于了解哪些组合会带来最佳性能,找出可进一步探索的潜在领域,并确定不同超参数之间的取舍权衡。
此实用工具采用以下其他参数:
learner
:指定要在试验中研究的学习者。 此参数仅适用于 AutoML 试验结果。 通过将其留空,系统会在整个试验中选择最佳学习者。params
:指定要显示的超参数的列表。 通过将其留空,系统将显示所有可用的超参数。
fig = fviz.plot_parallel_coordinate(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "parallel_coordinate", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()
下面是得到的绘图:
等高线图
等高线图在两个维度中可视化三维数据,其中 x 和 y 轴表示两个超参数,等高线图或填充等高线描绘性能指标的水平(例如准确性或损失)。 在 AutoML 或优化试验的环境中,等高线图有助于了解两个超参数之间的关系及其对模型性能的组合效果。
通过检查等高线的密度和定位,可以识别实现了性能优化的超参数空间区域,确定超参数之间的潜在权衡取舍,并深入了解其交互。 此可视化效果有助于优化搜索空间和优化过程。
此实用工具还采用以下参数:
learner
:指定要在试验中研究的学习者。 此参数仅适用于 AutoML 试验结果。 通过将其留空,系统会在整个试验中选择最佳学习者。params
:指定要显示的超参数的列表。 通过将其留空,系统将显示所有可用的超参数。
fig = fviz.plot_contour(automl, learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
# or
fig = fviz.plot(automl, "contour", learner="lgbm", params=["n_estimators", "num_leaves", "learning_rate"])
fig.show()
下面是得到的绘图:
经验分布函数
经验分布函数 (EDF) 绘图(通常可视化为阶跃函数),表示数据点小于或等于特定值的累积概率。 在 AutoML 或优化试验中,可以利用 EDF 绘图来可视化不同超参数配置的模型性能分布。
通过观察曲线在不同点的陡峭度或平坦度,可以分别了解良好或糟糕模型性能的集中度。 此可视化效果提供优化过程的整体有效性的见解,着重表明是大多数尝试的配置产生令人满意的结果,还是仅有少数配置脱颖而出。
注意
对于 AutoML 试验,将在训练期间应用多个模型。 各学习者的试验都表示为优化系列。 对于超参数优化试验,将只评估一个学习者。 但是,可以提供其他优化试验,以查看各学习者间的趋势。
fig = fviz.plot_edf(automl)
# or
fig = fviz.plot(automl, "edf")
fig.show()
下面是得到的绘图:
时间线图
时间线绘图,通常表示为甘特图或一系列条,直观显示一段时间内任务的开始、持续和完成。 在 AutoML 或优化试验的环境中,时间线绘图可以展示各种模型评估的进展及其各自的持续时间(根据时间绘制)。 通过观察此绘图,用户可以理解搜索过程的效率,识别任何潜在的瓶颈或空闲时段,并了解不同超参数评估的时态动态。
fig = fviz.plot_timeline(automl)
# or
fig = fviz.plot(automl, "timeline")
fig.show()
下面是得到的绘图:
切片图
在研究中将参数关系绘制为切片图。
此实用工具还采用以下参数:
learner
:指定要在试验中研究的学习者。 此参数仅适用于 AutoML 试验结果。 通过将其留空,系统会在整个试验中选择最佳学习者。params
:指定要显示的超参数的列表。 通过将其留空,系统将显示所有可用的超参数。
fig = fviz.plot_slice(automl, learner="sgd")
# or
fig = fviz.plot(automl, "slice", learner="sgd")
fig.show()
下面是得到的绘图:
超参数重要性
超参数重要性绘图根据超参数对 AutoML 或优化试验中模型性能的影响直观地对其进行排名。 它通常显示为条形图,可量化每个超参数对目标指标的影响。 通过检视此绘图,操作者可以识别哪些超参数对于决定模型结果至关重要,哪些超参数影响甚微。
此实用工具还采用以下参数:
learner
:指定要在试验中研究的学习者。 此参数仅适用于 AutoML 试验结果。 通过将其留空,系统会在整个试验中选择最佳学习者。params
:指定要显示的超参数的列表。 通过将其留空,系统将显示所有可用的超参数。
fig = fviz.plot_param_importance(automl, learner="sgd")
# or
fig = fviz.plot(automl, "param_importance", learner="sgd")
fig.show()
下面是得到的绘图: