Fix multi-output with alternating strategies. (#9933)

---------

Co-authored-by: Philip Hyunsu Cho <chohyu01@cs.washington.edu>
This commit is contained in:
Jiaming Yuan
2024-01-04 16:41:13 +08:00
committed by GitHub
parent 5f7b5a6921
commit 621348abb3
6 changed files with 123 additions and 73 deletions

View File

@@ -394,3 +394,14 @@ def train_result(
assert booster.feature_types == dmat.feature_types
return result
class ResetStrategy(xgb.callback.TrainingCallback):
"""Callback for testing multi-output."""
def after_iteration(self, model: xgb.Booster, epoch: int, evals_log: dict) -> bool:
if epoch % 2 == 0:
model.set_param({"multi_strategy": "multi_output_tree"})
else:
model.set_param({"multi_strategy": "one_output_per_tree"})
return False