optuna.importance.FanovaImportanceEvaluator
- class optuna.importance.FanovaImportanceEvaluator(*, n_trees=64, max_depth=64, seed=None)[source]
fANOVA 重要性评估器。
实现了 An Efficient Approach for Assessing Hyperparameter Importance 这篇论文中提出的 fANOVA 超参数重要性评估算法。
fANOVA 拟合一个随机森林回归模型,该模型根据
COMPLETE
(完成)状态的试验参数配置来预测其目标值。模型的准确性越高,本类评估的重要性就越可靠。注意
当给定包含 1000+ 个试验的 Study 时,这个类需要超过 1 分钟的时间。我们发布了 optuna-fast-fanova 库,它是一个由 Cython 加速的 fANOVA 实现。使用它可以让你在几秒钟内获得超参数重要性。
注意
需要 sklearn Python 包。
注意
fANOVA 的性能取决于底层随机森林模型的预测性能。为了获得高预测性能,需要覆盖超参数搜索空间的广泛范围。建议使用探索性采样器,例如
RandomSampler
。注意
关于如何引用原始著作,请参考 https://automl.net.cn/fanova/cite.html。
- 参数:
方法
evaluate
(study[, params, target])根据给定 Study 中已完成的试验评估参数重要性。
- evaluate(study, params=None, *, target=None)[source]
根据给定 Study 中已完成的试验评估参数重要性。
注意
此方法不供库用户调用。
另请参阅
关于具体评估器如何实现此方法,请参考
get_param_importances()
。- 参数:
study (Study) – 一个已优化的 Study。
params (list[str] | None) – 要评估的参数名称列表。如果为
None
,则评估所有已完成试验中存在的参数。target (Callable[[FrozenTrial], float] | None) –
一个用于指定要评估其重要性的值的函数。如果为
None
且study
用于单目标优化,则使用目标值。也可用于其他试验属性,例如持续时间,如target=lambda t: t.duration.total_seconds()
。注意
如果
study
用于多目标优化,请指定此参数。例如,要获取第一个目标的超参数重要性,请将 target 参数设置为target=lambda t: t.values[0]
。
- 返回值:
一个
dict
,其中键是参数名称,值是评估的重要性。- 返回类型: