可视化网页#

(新功能) OpenBox 现提供可视化网页 以便用户查看和分析优化过程。

本教程将介绍如何使用可视化网页,并帮助理解OpenBox中的可视化结果。

如何使用可视化网页#

我们假定您已经知道如何在OpenBox中设置问题,如果您对此不熟悉,请参考快速入门教程

这里我们将基于 有约束条件的多目标黑盒优化 中的例子可视化优化过程。

在优化前开启可视化#

开启可视化网页只需在定义Optimizer时设置visualization = basic or advanced。 并且设置auto_open_html = True以自动在浏览器中打开可视化网页:

from openbox import Optimizer
opt = Optimizer(
    ..., 
    visualization='advanced',  # or 'basic'. For 'advanced', run 'pip install lightgbm shap' first
    auto_open_html=True,       # open the html file automatically
    task_id='example_task',
    logging_dir='logs',
)
history = opt.run()

visualization有三个选项:

  • ‘none’: 运行任务时不使用可视化。 没有新的文件生成。更适合运行大规模试验。

  • ‘basic’: 运行任务时使用基本可视化, 包括针对目标值和约束值的基本图像。

  • ‘advanced’: 让可视化包含高级功能, 包括代理模型拟合分析和超参数重要性分析。

注: 使用超参数重要性分析,需要安装格外的包 shaplightgbm(先运行pip install shap lightgbm)。

一旦Optimizer被初始化,一个HTML页面会在${logging_dir}/history/${task_id}/中生成。 然后在浏览器中打开这个HTML页面,就可以看到优化过程的可视化。

在优化过程中,您可以点击Refresh按钮更新可视化结果。

在优化后开启可视化#

如果您忘记了在Optimizer中设置可视化,没有关系, 您仍然可以在优化结束后开启可视化。 设置open_htmlTrue 以自动在浏览器中打开可视化网页:

history = opt.get_history()
history.visualize_html(
    open_html=True,  # open the html file automatically
    show_importance=True,
    verify_surrogate=True,
    optimizer=opt,
)

这样一个HTML页面会在${logging_dir}/history/${task_id}/中生成。

同时请注意,如果show_importance=True,需要安装格外的包 shaplightgbm(先运行pip install shap lightgbm)。

基础可视化#

1 目标值函数#

1.1 目标值图像#

这个示例展示在优化中每一个建议配置的目标值。

对于有约束条件的问题, 满足约束的配置将被展示为圆形 \(\bigcirc\), 否则为三角形 \(\triangle\)

../_images/obj_value.png

1.2 约束值图像#

这部分可视化只适用于有约束条件的问题

这个示例展示在优化中每一个建议配置的约束值。 默认情况下,非正的约束值(“<=0”)表示可行。

../_images/cons_value.png

1.3 平行坐标图#

这个示例展示在每个独立观察中的参数值和目标值。

../_images/parallel.png

2 多目标#

这部分可视化只适用于多目标问题

在多目标问题中,由于不知道哪个目标更重要,我们将寻找帕累托最优解集合。 一个帕累托最优解指的是,在不使得至少一个其他的目标变坏的情况下,这个解无法在任何一个目标上被改进。

所有的帕累托最优解组成了帕累托前沿。 我们的目标是去最大化从一个参考点到帕累托前沿的超体积。

2.1 帕累托前沿#

帕累托前沿可视化只适用于多目标问题

帕累托前沿将被展示为曲线(2个目标时)或曲面(3个目标时)。

对于有约束条件的问题, 满足约束的配置将被展示为圆形 \(\bigcirc\), 否则为三角形 \(\triangle\)

../_images/pareto_front.png

2.2 帕累托前沿超体积#

这个示例展示每一轮中的由帕累托前沿包围的超体积值。

../_images/pareto_hypervolume.png

3 历史配置#

这个表格记录了每一轮观察的信息。 由于空间有限无法显示所有信息(如所有的参数值), 您可以点击数据旁的 “…” 查看详情。

../_images/history.png

高级可视化#

1 代理模型#

在黑盒优化中,代理模型被训练去拟合配置和目标值间的关系。 我们将代理模型可视化以展现其性能。

1.1 预测目标值#

这个示例展示真值和预测目标值之间的关系(基于交叉验证)。 X轴是代理模型预测的目标值,Y轴是真值。 点越和线y=x接近, 说明代理模型的泛化能力越好。

../_images/surrogate_obj.png

1.2 预测目标值排序#

回顾黑盒优化的目标只是找到一个配置去最小化目标,而非精确预测每个特定配置的真值。 这里我们提供一个排序图像,这个图像和预测目标值图很类似。 我们基于配置的预测目标值和真值进行排序。 X轴是代理模型预测的目标值排序,Y轴是真值排序。 点越和线y=x接近, 说明代理模型的泛化能力越好。

../_images/surrogate_obj_rank.png

1.3 预测约束值#

这个图像只适用于有约束条件的问题

除了目标值,我们也可以用代理模型去预测约束值。 这个图像和预测目标值图很类似,除了这里我们预测的是约束值。

../_images/surrogate_cons.png

2 参数重要性#

我们使用SHAP (SHapley Additive exPlanations) 去估计参数重要性。 关于SHAP的更多信心,请参考SHAP documentation

2.1 总体参数重要性#

这个示例展示每个参数对于目标值的重要性。 重要值越高,这个参数对目标值的影响越大,无论是正影响还是负影响。

../_images/importance_obj.png

2.2 对于约束值的总体参数重要性#

这个示例展示每个参数对于约束值的重要性。 重要值越高,这个参数对约束值的影响越大,无论是正影响还是负影响。

../_images/importance_cons.png

2.3 单个参数重要性#

这个示例展示目标值如何依赖于某个特定参数。 X轴是参数值,Y轴是对应的SHAP值。 SHAP值的绝对大小体现了影响程度,正值表示正相关。 您可以通过点击在上方的标签去切换参数。

对于多目标问题,您可以在图像上方的下拉框内选择特定目标。

../_images/single_obj.png

2.4 对于约束值的单个参数重要性#

这个示例展示约束值如何依赖于某个特定参数。 X轴是参数值,Y轴是对应的SHAP值。 SHAP值的绝对大小体现了影响程度,正值表示正相关。 您可以通过点击在上方的标签去切换参数。

如果有不止一个约束,您可以在图像上方的下拉框内选择特定约束。

../_images/single_cons.png