Source code for orion.benchmark.task.profet.xgboost

""" Simulated Task consisting in training an Extreme-Gradient Boosting (XGBoost) predictor.
"""
from dataclasses import dataclass
from typing import ClassVar, Dict, List, Tuple

from orion.benchmark.task.profet.profet_task import ProfetTask


[docs]class ProfetXgBoostTask(ProfetTask): """Simulated Task consisting in fitting a Extreme-Gradient Boosting predictor."""
[docs] @dataclass class ModelConfig(ProfetTask.ModelConfig): """Config for training the Profet model on an XgBoost task.""" benchmark: str = "xgboost" json_file_name: ClassVar[str] = "data_sobol_xgboost.json" hidden_space: ClassVar[int] = 5 normalize_targets: ClassVar[bool] = True log_cost: ClassVar[bool] = True log_target: ClassVar[bool] = True shapes: ClassVar[Tuple[Tuple[int, ...], Tuple[int, ...], Tuple[int, ...]]] = ( (800, 8), (11, 800), (11, 800), ) y_min: ClassVar[float] = 0.0 y_max: ClassVar[float] = 3991387.335843141 c_min: ClassVar[float] = 0.0 c_max: ClassVar[float] = 5485.541382551193
# -----------
[docs] def call( self, learning_rate: float, gamma: float, l1_regularization: float, l2_regularization: float, nb_estimators: int, subsampling: float, max_depth: int, min_child_weight: int, ) -> List[Dict]: return super().call( learning_rate=learning_rate, gamma=gamma, l1_regularization=l1_regularization, l2_regularization=l2_regularization, nb_estimators=nb_estimators, subsampling=subsampling, max_depth=max_depth, min_child_weight=min_child_weight, )
[docs] def get_search_space(self) -> Dict[str, str]: return dict( learning_rate="loguniform(1e-6, 1e-1)", gamma="uniform(0, 2, discrete=False)", l1_regularization="loguniform(1e-5, 1e3)", l2_regularization="loguniform(1e-5, 1e3)", nb_estimators="uniform(10, 500, discrete=True)", subsampling="uniform(0.1, 1)", max_depth="uniform(1, 15, discrete=True)", min_child_weight="uniform(0, 20, discrete=True)", )