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

参数:
  • n_trees (int) – 森林中的树木数量。

  • max_depth (int) – 森林中树木的最大深度。

  • seed (int | None) – 控制森林的随机性。对于确定性行为,请指定一个非 None 的值。

方法

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) –

    一个用于指定要评估其重要性的值的函数。如果为 Nonestudy 用于单目标优化,则使用目标值。也可用于其他试验属性,例如持续时间,如 target=lambda t: t.duration.total_seconds()

    注意

    如果 study 用于多目标优化,请指定此参数。例如,要获取第一个目标的超参数重要性,请将 target 参数设置为 target=lambda t: t.values[0]

返回值:

一个 dict,其中键是参数名称,值是评估的重要性。

返回类型:

dict[str, float]