# 可视化网页 (新功能) **OpenBox** 现提供可视化网页 以便用户查看和分析优化过程。 本教程将介绍如何使用可视化网页,并帮助理解**OpenBox**中的可视化结果。 ## 如何使用可视化网页 我们假定您已经知道如何在**OpenBox**中设置问题,如果您对此不熟悉,请参考{ref}`快速入门教程 `。 这里我们将基于 {ref}`有约束条件的多目标黑盒优化 ` 中的例子可视化优化过程。 ### 在优化前开启可视化 开启可视化网页只需在定义`Optimizer`时设置`visualization` = `basic` or `advanced`。 并且设置`auto_open_html` = `True`以自动在浏览器中打开可视化网页: ```python 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'**: 让可视化包含高级功能, 包括代理模型拟合分析和超参数重要性分析。 **注:** 使用超参数重要性分析,需要安装格外的包 `shap`和`lightgbm`(先运行`pip install shap lightgbm`)。 一旦`Optimizer`被初始化,一个HTML页面会在`${logging_dir}/history/${task_id}/`中生成。 然后在浏览器中打开这个HTML页面,就可以看到优化过程的可视化。 在优化过程中,您可以点击`Refresh`按钮更新可视化结果。 ### 在优化后开启可视化 如果您忘记了在`Optimizer`中设置可视化,没有关系, 您仍然可以在优化结束后开启可视化。 设置`open_html` 为 `True` 以自动在浏览器中打开可视化网页: ```python 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`,需要安装格外的包 `shap`和`lightgbm`(先运行`pip install shap lightgbm`)。 ## 基础可视化 ### 1 目标值函数 #### 1.1 目标值图像 这个示例展示在优化中每一个建议配置的目标值。 对于**有约束条件的问题**, 满足约束的配置将被展示为圆形 $\bigcirc$, 否则为三角形 $\triangle$
#### 1.2 约束值图像 这部分可视化只适用于**有约束条件的问题**。 这个示例展示在优化中每一个建议配置的约束值。 默认情况下,非正的约束值(**"<=0"**)表示可行。
#### 1.3 平行坐标图 这个示例展示在每个独立观察中的参数值和目标值。
### 2 多目标 这部分可视化只适用于**多目标问题**。 在多目标问题中,由于不知道哪个目标更重要,我们将寻找帕累托最优解集合。 一个帕累托最优解指的是,在不使得至少一个其他的目标变坏的情况下,这个解无法在任何一个目标上被改进。 所有的帕累托最优解组成了帕累托前沿。 我们的目标是去最大化从一个参考点到帕累托前沿的超体积。 #### 2.1 帕累托前沿 帕累托前沿可视化只适用于**多目标问题**。 帕累托前沿将被展示为曲线(2个目标时)或曲面(3个目标时)。 对于**有约束条件的问题**, 满足约束的配置将被展示为圆形 $\bigcirc$, 否则为三角形 $\triangle$
#### 2.2 帕累托前沿超体积 这个示例展示每一轮中的由帕累托前沿包围的超体积值。
### 3 历史配置 这个表格记录了每一轮观察的信息。 由于空间有限无法显示所有信息(如所有的参数值), 您可以点击数据旁的 **"..."** 查看详情。
## 高级可视化 ### 1 代理模型 在黑盒优化中,代理模型被训练去拟合配置和目标值间的关系。 我们将代理模型可视化以展现其性能。 #### 1.1 预测目标值 这个示例展示真值和预测目标值之间的关系(基于交叉验证)。 X轴是代理模型预测的目标值,Y轴是真值。 点越和线y=x接近, 说明代理模型的泛化能力越好。
#### 1.2 预测目标值排序 回顾黑盒优化的目标只是找到一个配置去最小化目标,而非精确预测每个特定配置的真值。 这里我们提供一个排序图像,这个图像和*预测目标值*图很类似。 我们基于配置的预测目标值和真值进行排序。 X轴是代理模型预测的目标值排序,Y轴是真值排序。 点越和线y=x接近, 说明代理模型的泛化能力越好。
#### 1.3 预测约束值 这个图像只适用于**有约束条件的问题**。 除了目标值,我们也可以用代理模型去预测约束值。 这个图像和*预测目标值*图很类似,除了这里我们预测的是约束值。
### 2 参数重要性 我们使用**SHAP** (SHapley Additive exPlanations) 去估计参数重要性。 关于SHAP的更多信心,请参考[**SHAP documentation**](https://shap.readthedocs.io/en/latest/)。 #### 2.1 总体参数重要性 这个示例展示每个参数对于目标值的重要性。 重要值越高,这个参数对目标值的影响越大,无论是正影响还是负影响。
#### 2.2 对于约束值的总体参数重要性 这个示例展示每个参数对于约束值的重要性。 重要值越高,这个参数对约束值的影响越大,无论是正影响还是负影响。
#### 2.3 单个参数重要性 这个示例展示目标值如何依赖于某个特定参数。 X轴是参数值,Y轴是对应的SHAP值。 SHAP值的绝对大小体现了影响程度,正值表示正相关。 您可以通过点击在上方的标签去切换参数。 对于**多目标问题**,您可以在图像上方的下拉框内选择特定目标。
#### 2.4 对于约束值的单个参数重要性 这个示例展示约束值如何依赖于某个特定参数。 X轴是参数值,Y轴是对应的SHAP值。 SHAP值的绝对大小体现了影响程度,正值表示正相关。 您可以通过点击在上方的标签去切换参数。 如果有**不止一个约束**,您可以在图像上方的下拉框内选择特定约束。