optuna.importance.PedAnovaImportanceEvaluator

class optuna.importance.PedAnovaImportanceEvaluator(*, baseline_quantile=0.1, evaluate_on_local=True)[源代码]

PED-ANOVA 重要性评估器。

实现了 PED-ANOVA 超参数重要性评估算法。

PED-ANOVA 拟合优于用户指定基线的 COMPLETE 试验的 Parzen 估计器。用户可以通过分位数指定基线。重要性可以解释为每个超参数对于获得优于基线的性能有多重要。

有关 PED-ANOVA 算法的更多信息,请参阅以下论文

注意

PED-ANOVA 的性能取决于考虑的优于基线的试验数量。为了稳定分析,最好包含至少 5 个优于基线的试验。

注意

请参阅 原始工作

参数
  • baseline_quantile (float) – 计算达到前 baseline_quantile 分位数目标值的重要性。例如,baseline_quantile=0.1 意味着重要性提供了哪些参数对于在优化过程中获得前 10% 的性能很重要的信息。

  • evaluate_on_local (bool) – 我们是在局部空间还是全局空间中衡量重要性。如果为 True,则重要性表示每个参数在优化过程中有多重要。同时,evaluate_on_local=False 提供指定搜索空间中的重要性。evaluate_on_local=True 在用户在优化过程中修改搜索空间时特别有用。

示例

使用 PED-ANOVA 的一个示例如下所示

import optuna
from optuna.importance import PedAnovaImportanceEvaluator


def objective(trial):
    x1 = trial.suggest_float("x1", -10, 10)
    x2 = trial.suggest_float("x2", -10, 10)
    return x1 + x2 / 1000


study = optuna.create_study()
study.optimize(objective, n_trials=100)
evaluator = PedAnovaImportanceEvaluator()
importance = optuna.importance.get_param_importances(study, evaluator=evaluator)

注意

在 v3.6.0 中添加为实验性功能。界面在后续版本中可能会更改,恕不另行通知。请参阅 https://github.com/optuna/optuna/releases/tag/v3.6.0

方法

evaluate(study[, params, target])

根据给定研究中已完成的试验评估参数重要性。

evaluate(study, params=None, *, target=None)[源代码]

根据给定研究中已完成的试验评估参数重要性。

注意

此方法不应由库用户调用。

另请参阅

有关具体评估器应如何实现此方法的详细信息,请参阅 get_param_importances()

参数
  • study (Study) – 一个已优化的研究对象。

  • params (list[str] | None) – 要评估的参数名称列表。如果为 None,则评估所有已完成试验中都存在的参数。

  • target (Callable[[FrozenTrial], float] | None) –

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

    注意

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

返回

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

返回类型

dict[str, float]