optuna.importance.PedAnovaImportanceEvaluator

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

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)[source]

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

注意

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

另请参阅

请参考 get_param_importances() 来了解具体评估器应如何实现此方法。

参数:
  • study (Study) – 一个已优化的 study。

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

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

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

    注意

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

返回:

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

返回类型:

dict[str, float]