From 06045703bf90f58f3b89acb01b50c8fe2c65b93b Mon Sep 17 00:00:00 2001 From: Qingyun Wu Date: Sat, 10 Apr 2021 21:14:28 -0400 Subject: [PATCH] Lgbm w customized obj (#64) * add customized lgbm learner * add comments * fix format issue * format * OpenMLError * add test * add notebook Co-authored-by: Chi Wang (MSR) Co-authored-by: Chi Wang --- flaml/model.py | 20 +- flaml/version.py | 2 +- notebook/flaml_lightgbm.ipynb | 418 ++++++++++++++-------------------- notebook/flaml_xgboost.ipynb | 259 ++++++++++----------- test/test_automl.py | 56 ++++- test/test_xgboost2d.py | 2 +- 6 files changed, 365 insertions(+), 392 deletions(-) diff --git a/flaml/model.py b/flaml/model.py index 1dc373d5a..692238c3f 100644 --- a/flaml/model.py +++ b/flaml/model.py @@ -362,7 +362,6 @@ class XGBoostEstimator(SKLearnEstimator): ): super().__init__(task, **params) self._n_estimators = int(round(n_estimators)) - self._max_leaves = int(round(max_leaves)) self.params = { 'max_leaves': int(round(max_leaves)), 'max_depth': params.get('max_depth', 0), @@ -378,6 +377,7 @@ class XGBoostEstimator(SKLearnEstimator): 'booster': params.get('booster', 'gbtree'), 'colsample_bylevel': float(colsample_bylevel), 'colsample_bytree': float(colsample_bytree), + 'objective': params.get("objective") } if all_thread: del self.params['nthread'] @@ -398,13 +398,19 @@ class XGBoostEstimator(SKLearnEstimator): else: dtrain = xgb.DMatrix(X_train, label=y_train) - if self._max_leaves > 0: - self._model = xgb.train(self.params, dtrain, self._n_estimators) - del dtrain - train_time = time.time() - start_time - return train_time + objective = self.params.get('objective') + if isinstance(objective, str): + obj = None else: - return None + obj = objective + if 'objective' in self.params: + del self.params['objective'] + self._model = xgb.train(self.params, dtrain, self._n_estimators, + obj=obj) + self.params['objective'] = objective + del dtrain + train_time = time.time() - start_time + return train_time def predict(self, X_test): if not issparse(X_test): diff --git a/flaml/version.py b/flaml/version.py index 493f7415d..260c070a8 100644 --- a/flaml/version.py +++ b/flaml/version.py @@ -1 +1 @@ -__version__ = "0.3.0" +__version__ = "0.3.1" diff --git a/notebook/flaml_lightgbm.ipynb b/notebook/flaml_lightgbm.ipynb index e51c85219..4e1ee7bca 100644 --- a/notebook/flaml_lightgbm.ipynb +++ b/notebook/flaml_lightgbm.ipynb @@ -69,9 +69,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "load dataset from ./openml_ds537.pkl\nDataset name: houses\nX_train.shape: (15480, 8), y_train.shape: (15480,);\nX_test.shape: (5160, 8), y_test.shape: (5160,)\n" - ] + "text": "load dataset from./openml_ds537.pkl\nDataset name:houses\nX_train.shape: (15480, 8), y_train.shape: (15480,);\nX_test.shape: (5160, 8), y_test.shape: (5160,)\n" } ], "source": [ @@ -93,11 +91,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "slideshow": { "slide_type": "slide" - } + }, + "tags": [] }, "outputs": [], "source": [ @@ -108,7 +107,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" @@ -127,7 +126,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": { "slideshow": { "slide_type": "slide" @@ -138,104 +137,7 @@ { "output_type": "stream", "name": "stderr", - "text": [ - "[flaml.automl: 04-07 09:44:04] {890} INFO - Evaluation method: cv\n", - "[flaml.automl: 04-07 09:44:04] {606} INFO - Using RepeatedKFold\n", - "[flaml.automl: 04-07 09:44:04] {911} INFO - Minimizing error metric: 1-r2\n", - "[flaml.automl: 04-07 09:44:04] {929} INFO - List of ML learners in AutoML Run: ['lgbm']\n", - "[flaml.automl: 04-07 09:44:04] {993} INFO - iteration 0, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:05] {1141} INFO - at 0.4s,\tbest lgbm's error=0.7383,\tbest lgbm's error=0.7383\n", - "[flaml.automl: 04-07 09:44:05] {993} INFO - iteration 1, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:05] {1141} INFO - at 0.5s,\tbest lgbm's error=0.7383,\tbest lgbm's error=0.7383\n", - "[flaml.automl: 04-07 09:44:05] {993} INFO - iteration 2, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:05] {1141} INFO - at 0.8s,\tbest lgbm's error=0.3888,\tbest lgbm's error=0.3888\n", - "[flaml.automl: 04-07 09:44:05] {993} INFO - iteration 3, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:05] {1141} INFO - at 0.9s,\tbest lgbm's error=0.3888,\tbest lgbm's error=0.3888\n", - "[flaml.automl: 04-07 09:44:05] {993} INFO - iteration 4, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:05] {1141} INFO - at 1.3s,\tbest lgbm's error=0.2657,\tbest lgbm's error=0.2657\n", - "[flaml.automl: 04-07 09:44:05] {993} INFO - iteration 5, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:06] {1141} INFO - at 1.7s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n", - "[flaml.automl: 04-07 09:44:06] {993} INFO - iteration 6, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:06] {1141} INFO - at 1.9s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n", - "[flaml.automl: 04-07 09:44:06] {993} INFO - iteration 7, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:06] {1141} INFO - at 2.3s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n", - "[flaml.automl: 04-07 09:44:06] {993} INFO - iteration 8, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:07] {1141} INFO - at 2.5s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n", - "[flaml.automl: 04-07 09:44:07] {993} INFO - iteration 9, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:07] {1141} INFO - at 2.8s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n", - "[flaml.automl: 04-07 09:44:07] {993} INFO - iteration 10, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:07] {1141} INFO - at 3.0s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n", - "[flaml.automl: 04-07 09:44:07] {993} INFO - iteration 11, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:08] {1141} INFO - at 3.6s,\tbest lgbm's error=0.2099,\tbest lgbm's error=0.2099\n", - "[flaml.automl: 04-07 09:44:08] {993} INFO - iteration 12, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:09] {1141} INFO - at 4.7s,\tbest lgbm's error=0.2099,\tbest lgbm's error=0.2099\n", - "[flaml.automl: 04-07 09:44:09] {993} INFO - iteration 13, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:09] {1141} INFO - at 4.9s,\tbest lgbm's error=0.2099,\tbest lgbm's error=0.2099\n", - "[flaml.automl: 04-07 09:44:09] {993} INFO - iteration 14, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:10] {1141} INFO - at 6.3s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:10] {993} INFO - iteration 15, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:11] {1141} INFO - at 7.0s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:11] {993} INFO - iteration 16, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:19] {1141} INFO - at 14.9s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:19] {993} INFO - iteration 17, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:20] {1141} INFO - at 16.0s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:20] {993} INFO - iteration 18, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:25] {1141} INFO - at 20.4s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:25] {993} INFO - iteration 19, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:25] {1141} INFO - at 20.9s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:25] {993} INFO - iteration 20, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:26] {1141} INFO - at 21.9s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:26] {993} INFO - iteration 21, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:26] {1141} INFO - at 22.4s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:26] {993} INFO - iteration 22, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:31] {1141} INFO - at 26.9s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:31] {993} INFO - iteration 23, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:33] {1141} INFO - at 28.4s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:33] {993} INFO - iteration 24, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:34] {1141} INFO - at 29.7s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:34] {993} INFO - iteration 25, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:35] {1141} INFO - at 30.8s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:35] {993} INFO - iteration 26, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:37] {1141} INFO - at 32.5s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:37] {993} INFO - iteration 27, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:37] {1141} INFO - at 33.2s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:37] {993} INFO - iteration 28, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:39] {1141} INFO - at 34.8s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n", - "[flaml.automl: 04-07 09:44:39] {993} INFO - iteration 29, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:44] {1141} INFO - at 39.6s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:44:44] {993} INFO - iteration 30, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:44] {1141} INFO - at 40.2s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:44:44] {993} INFO - iteration 31, current learner lgbm\n", - "[flaml.automl: 04-07 09:44:58] {1141} INFO - at 54.3s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:44:58] {993} INFO - iteration 32, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:02] {1141} INFO - at 58.0s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:02] {993} INFO - iteration 33, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:03] {1141} INFO - at 58.6s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:03] {993} INFO - iteration 34, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:28] {1141} INFO - at 83.5s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:28] {993} INFO - iteration 35, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:34] {1141} INFO - at 89.9s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:34] {993} INFO - iteration 36, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:37] {1141} INFO - at 92.4s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:37] {993} INFO - iteration 37, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:40] {1141} INFO - at 95.7s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:40] {993} INFO - iteration 38, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:42] {1141} INFO - at 97.5s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:42] {993} INFO - iteration 39, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:52] {1141} INFO - at 107.4s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:52] {993} INFO - iteration 40, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:56] {1141} INFO - at 111.4s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:56] {993} INFO - iteration 41, current learner lgbm\n", - "[flaml.automl: 04-07 09:45:58] {1141} INFO - at 113.6s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:45:58] {993} INFO - iteration 42, current learner lgbm\n", - "[flaml.automl: 04-07 09:46:03] {1141} INFO - at 118.5s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n", - "[flaml.automl: 04-07 09:46:03] {1187} INFO - selected model: LGBMRegressor(colsample_bytree=0.7586723794764185,\n", - " learning_rate=0.10418050364992694, max_bin=127,\n", - " min_child_samples=21, n_estimators=95, num_leaves=254,\n", - " objective='regression', reg_alpha=0.09228337080759572,\n", - " reg_lambda=0.46673178167010676, subsample=0.9097941662911945)\n", - "[flaml.automl: 04-07 09:46:03] {944} INFO - fit succeeded\n" - ] + "text": "[flaml.automl: 04-09 19:57:58] {890} INFO - Evaluation method: cv\n[flaml.automl: 04-09 19:57:58] {606} INFO - Using RepeatedKFold\n[flaml.automl: 04-09 19:57:58] {911} INFO - Minimizing error metric: 1-r2\n[flaml.automl: 04-09 19:57:58] {930} INFO - List of ML learners in AutoML Run: ['lgbm']\n[flaml.automl: 04-09 19:57:58] {994} INFO - iteration 0, current learner lgbm\n[flaml.automl: 04-09 19:57:58] {1147} INFO - at 0.2s,\tbest lgbm's error=0.7383,\tbest lgbm's error=0.7383\n[flaml.automl: 04-09 19:57:58] {994} INFO - iteration 1, current learner lgbm\n[flaml.automl: 04-09 19:57:58] {1147} INFO - at 0.3s,\tbest lgbm's error=0.7383,\tbest lgbm's error=0.7383\n[flaml.automl: 04-09 19:57:58] {994} INFO - iteration 2, current learner lgbm\n[flaml.automl: 04-09 19:57:59] {1147} INFO - at 0.3s,\tbest lgbm's error=0.3888,\tbest lgbm's error=0.3888\n[flaml.automl: 04-09 19:57:59] {994} INFO - iteration 3, current learner lgbm\n[flaml.automl: 04-09 19:57:59] {1147} INFO - at 0.4s,\tbest lgbm's error=0.3888,\tbest lgbm's error=0.3888\n[flaml.automl: 04-09 19:57:59] {994} INFO - iteration 4, current learner lgbm\n[flaml.automl: 04-09 19:57:59] {1147} INFO - at 0.6s,\tbest lgbm's error=0.2657,\tbest lgbm's error=0.2657\n[flaml.automl: 04-09 19:57:59] {994} INFO - iteration 5, current learner lgbm\n[flaml.automl: 04-09 19:57:59] {1147} INFO - at 0.8s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n[flaml.automl: 04-09 19:57:59] {994} INFO - iteration 6, current learner lgbm\n[flaml.automl: 04-09 19:57:59] {1147} INFO - at 0.9s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n[flaml.automl: 04-09 19:57:59] {994} INFO - iteration 7, current learner lgbm\n[flaml.automl: 04-09 19:57:59] {1147} INFO - at 1.1s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n[flaml.automl: 04-09 19:57:59] {994} INFO - iteration 8, current learner lgbm\n[flaml.automl: 04-09 19:57:59] {1147} INFO - at 1.2s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n[flaml.automl: 04-09 19:57:59] {994} INFO - iteration 9, current learner lgbm\n[flaml.automl: 04-09 19:58:00] {1147} INFO - at 1.4s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n[flaml.automl: 04-09 19:58:00] {994} INFO - iteration 10, current learner lgbm\n[flaml.automl: 04-09 19:58:00] {1147} INFO - at 1.5s,\tbest lgbm's error=0.2256,\tbest lgbm's error=0.2256\n[flaml.automl: 04-09 19:58:00] {994} INFO - iteration 11, current learner lgbm\n[flaml.automl: 04-09 19:58:00] {1147} INFO - at 2.0s,\tbest lgbm's error=0.2099,\tbest lgbm's error=0.2099\n[flaml.automl: 04-09 19:58:00] {994} INFO - iteration 12, current learner lgbm\n[flaml.automl: 04-09 19:58:01] {1147} INFO - at 2.9s,\tbest lgbm's error=0.2099,\tbest lgbm's error=0.2099\n[flaml.automl: 04-09 19:58:01] {994} INFO - iteration 13, current learner lgbm\n[flaml.automl: 04-09 19:58:01] {1147} INFO - at 3.0s,\tbest lgbm's error=0.2099,\tbest lgbm's error=0.2099\n[flaml.automl: 04-09 19:58:01] {994} INFO - iteration 14, current learner lgbm\n[flaml.automl: 04-09 19:58:03] {1147} INFO - at 4.7s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:03] {994} INFO - iteration 15, current learner lgbm\n[flaml.automl: 04-09 19:58:04] {1147} INFO - at 5.3s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:04] {994} INFO - iteration 16, current learner lgbm\n[flaml.automl: 04-09 19:58:13] {1147} INFO - at 14.6s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:13] {994} INFO - iteration 17, current learner lgbm\n[flaml.automl: 04-09 19:58:14] {1147} INFO - at 15.4s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:14] {994} INFO - iteration 18, current learner lgbm\n[flaml.automl: 04-09 19:58:18] {1147} INFO - at 20.0s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:18] {994} INFO - iteration 19, current learner lgbm\n[flaml.automl: 04-09 19:58:19] {1147} INFO - at 20.7s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:19] {994} INFO - iteration 20, current learner lgbm\n[flaml.automl: 04-09 19:58:20] {1147} INFO - at 21.9s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:20] {994} INFO - iteration 21, current learner lgbm\n[flaml.automl: 04-09 19:58:20] {1147} INFO - at 22.3s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:20] {994} INFO - iteration 22, current learner lgbm\n[flaml.automl: 04-09 19:58:25] {1147} INFO - at 27.2s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:25] {994} INFO - iteration 23, current learner lgbm\n[flaml.automl: 04-09 19:58:28] {1147} INFO - at 29.6s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:28] {994} INFO - iteration 24, current learner lgbm\n[flaml.automl: 04-09 19:58:29] {1147} INFO - at 30.7s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:29] {994} INFO - iteration 25, current learner lgbm\n[flaml.automl: 04-09 19:58:30] {1147} INFO - at 31.7s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:30] {994} INFO - iteration 26, current learner lgbm\n[flaml.automl: 04-09 19:58:32] {1147} INFO - at 34.1s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:32] {994} INFO - iteration 27, current learner lgbm\n[flaml.automl: 04-09 19:58:33] {1147} INFO - at 34.6s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:33] {994} INFO - iteration 28, current learner lgbm\n[flaml.automl: 04-09 19:58:35] {1147} INFO - at 36.4s,\tbest lgbm's error=0.1644,\tbest lgbm's error=0.1644\n[flaml.automl: 04-09 19:58:35] {994} INFO - iteration 29, current learner lgbm\n[flaml.automl: 04-09 19:58:42] {1147} INFO - at 44.3s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n[flaml.automl: 04-09 19:58:42] {994} INFO - iteration 30, current learner lgbm\n[flaml.automl: 04-09 19:58:43] {1147} INFO - at 44.9s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n[flaml.automl: 04-09 19:58:43] {994} INFO - iteration 31, current learner lgbm\n[flaml.automl: 04-09 19:59:01] {1147} INFO - at 62.5s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n[flaml.automl: 04-09 19:59:01] {994} INFO - iteration 32, current learner lgbm\n[flaml.automl: 04-09 19:59:06] {1147} INFO - at 68.0s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n[flaml.automl: 04-09 19:59:06] {994} INFO - iteration 33, current learner lgbm\n[flaml.automl: 04-09 19:59:07] {1147} INFO - at 68.8s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n[flaml.automl: 04-09 19:59:07] {994} INFO - iteration 34, current learner lgbm\n[flaml.automl: 04-09 19:59:57] {1147} INFO - at 118.9s,\tbest lgbm's error=0.1604,\tbest lgbm's error=0.1604\n[flaml.automl: 04-09 19:59:57] {1187} INFO - selected model: LGBMRegressor(colsample_bytree=0.7586723794764185,\n learning_rate=0.10418050364992694, max_bin=127,\n min_child_samples=21, n_estimators=95, num_leaves=254,\n objective='regression', reg_alpha=0.09228337080759572,\n reg_lambda=0.46673178167010676, subsample=0.9097941662911945)\n[flaml.automl: 04-09 19:59:57] {944} INFO - fit succeeded\n" } ], "source": [ @@ -256,7 +158,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { "slideshow": { "slide_type": "slide" @@ -267,9 +169,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "Best hyperparmeter config: {'n_estimators': 95.0, 'num_leaves': 254.0, 'min_child_samples': 21.0, 'learning_rate': 0.10418050364992694, 'subsample': 0.9097941662911945, 'log_max_bin': 7.0, 'colsample_bytree': 0.7586723794764185, 'reg_alpha': 0.09228337080759572, 'reg_lambda': 0.46673178167010676}\nBest r2 on validation data: 0.8396\nTraining duration of best run: 4.812 s\n" - ] + "text": "Best hyperparmeter config:{'n_estimators': 95.0, 'num_leaves': 254.0, 'min_child_samples': 21.0, 'learning_rate': 0.10418050364992694, 'subsample': 0.9097941662911945, 'log_max_bin': 7.0, 'colsample_bytree': 0.7586723794764185, 'reg_alpha': 0.09228337080759572, 'reg_lambda': 0.46673178167010676}\nBest r2 on validation data: 0.8396\nTraining duration of best run: 7.868 s\n" } ], "source": [ @@ -281,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": { "slideshow": { "slide_type": "slide" @@ -291,16 +191,10 @@ { "output_type": "execute_result", "data": { - "text/plain": [ - "LGBMRegressor(colsample_bytree=0.7586723794764185,\n", - " learning_rate=0.10418050364992694, max_bin=127,\n", - " min_child_samples=21, n_estimators=95, num_leaves=254,\n", - " objective='regression', reg_alpha=0.09228337080759572,\n", - " reg_lambda=0.46673178167010676, subsample=0.9097941662911945)" - ] + "text/plain": "LGBMRegressor(colsample_bytree=0.7586723794764185,\n learning_rate=0.10418050364992694, max_bin=127,\n min_child_samples=21, n_estimators=95, num_leaves=254,\n objective='regression', reg_alpha=0.09228337080759572,\n reg_lambda=0.46673178167010676, subsample=0.9097941662911945)" }, "metadata": {}, - "execution_count": 7 + "execution_count": 9 } ], "source": [ @@ -309,7 +203,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "slideshow": { "slide_type": "slide" @@ -325,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": { "slideshow": { "slide_type": "slide" @@ -336,9 +230,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "Predicted labels [150367.25556214 263353.37798151 136897.76625025 ... 190606.68038356\n 237816.02972335 263063.11183796]\nTrue labels [136900. 241300. 200700. ... 160900. 227300. 265600.]\n" - ] + "text": "Predicted labels[150367.25556214 263353.37798151 136897.76625025 ... 190606.68038356\n 237816.02972335 263063.11183796]\nTrue labels[136900. 241300. 200700. ... 160900. 227300. 265600.]\n" } ], "source": [ @@ -350,7 +242,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": { "slideshow": { "slide_type": "slide" @@ -361,9 +253,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "r2 = 0.8500929784828137\nmse = 1981546944.5284543\nmae = 29485.579651356835\n" - ] + "text": "r2=0.8500929784828137\nmse=1981546944.5284543\nmae=29485.579651356835\n" } ], "source": [ @@ -376,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": { "slideshow": { "slide_type": "subslide" @@ -387,9 +277,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4, 'num_leaves': 4, 'min_child_samples': 20, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4, 'num_leaves': 4, 'min_child_samples': 20, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4.0, 'num_leaves': 4.0, 'min_child_samples': 25.0, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'log_max_bin': 10.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4.0, 'num_leaves': 4.0, 'min_child_samples': 25.0, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'log_max_bin': 10.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 20.0, 'num_leaves': 4.0, 'min_child_samples': 48.0, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'log_max_bin': 10.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 20.0, 'num_leaves': 4.0, 'min_child_samples': 48.0, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'log_max_bin': 10.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 11.0, 'num_leaves': 15.0, 'min_child_samples': 42.0, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 11.0, 'num_leaves': 15.0, 'min_child_samples': 42.0, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 22.0, 'num_leaves': 44.0, 'min_child_samples': 33.0, 'learning_rate': 0.7277554644304967, 'subsample': 0.8890322269681047, 'log_max_bin': 9.0, 'colsample_bytree': 0.8917187085424868, 'reg_alpha': 0.3477637978466495, 'reg_lambda': 0.24655709710146537}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 22.0, 'num_leaves': 44.0, 'min_child_samples': 33.0, 'learning_rate': 0.7277554644304967, 'subsample': 0.8890322269681047, 'log_max_bin': 9.0, 'colsample_bytree': 0.8917187085424868, 'reg_alpha': 0.3477637978466495, 'reg_lambda': 0.24655709710146537}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 60.0, 'num_leaves': 72.0, 'min_child_samples': 37.0, 'learning_rate': 0.23811059538783155, 'subsample': 1.0, 'log_max_bin': 8.0, 'colsample_bytree': 0.9162072323824675, 'reg_alpha': 0.7017839907881602, 'reg_lambda': 0.23027329389914142}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 60.0, 'num_leaves': 72.0, 'min_child_samples': 37.0, 'learning_rate': 0.23811059538783155, 'subsample': 1.0, 'log_max_bin': 8.0, 'colsample_bytree': 0.9162072323824675, 'reg_alpha': 0.7017839907881602, 'reg_lambda': 0.23027329389914142}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 95.0, 'num_leaves': 254.0, 'min_child_samples': 21.0, 'learning_rate': 0.10418050364992694, 'subsample': 0.9097941662911945, 'log_max_bin': 7.0, 'colsample_bytree': 0.7586723794764185, 'reg_alpha': 0.09228337080759572, 'reg_lambda': 0.46673178167010676}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 95.0, 'num_leaves': 254.0, 'min_child_samples': 21.0, 'learning_rate': 0.10418050364992694, 'subsample': 0.9097941662911945, 'log_max_bin': 7.0, 'colsample_bytree': 0.7586723794764185, 'reg_alpha': 0.09228337080759572, 'reg_lambda': 0.46673178167010676}}\n" - ] + "text": "{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4, 'num_leaves': 4, 'min_child_samples': 20, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4, 'num_leaves': 4, 'min_child_samples': 20, 'learning_rate': 0.1, 'subsample': 1.0, 'log_max_bin': 8, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4.0, 'num_leaves': 4.0, 'min_child_samples': 25.0, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'log_max_bin': 10.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 4.0, 'num_leaves': 4.0, 'min_child_samples': 25.0, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'log_max_bin': 10.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 20.0, 'num_leaves': 4.0, 'min_child_samples': 48.0, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'log_max_bin': 10.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 20.0, 'num_leaves': 4.0, 'min_child_samples': 48.0, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'log_max_bin': 10.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 11.0, 'num_leaves': 15.0, 'min_child_samples': 42.0, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 11.0, 'num_leaves': 15.0, 'min_child_samples': 42.0, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'log_max_bin': 10.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 22.0, 'num_leaves': 44.0, 'min_child_samples': 33.0, 'learning_rate': 0.7277554644304967, 'subsample': 0.8890322269681047, 'log_max_bin': 9.0, 'colsample_bytree': 0.8917187085424868, 'reg_alpha': 0.3477637978466495, 'reg_lambda': 0.24655709710146537}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 22.0, 'num_leaves': 44.0, 'min_child_samples': 33.0, 'learning_rate': 0.7277554644304967, 'subsample': 0.8890322269681047, 'log_max_bin': 9.0, 'colsample_bytree': 0.8917187085424868, 'reg_alpha': 0.3477637978466495, 'reg_lambda': 0.24655709710146537}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 60.0, 'num_leaves': 72.0, 'min_child_samples': 37.0, 'learning_rate': 0.23811059538783155, 'subsample': 1.0, 'log_max_bin': 8.0, 'colsample_bytree': 0.9162072323824675, 'reg_alpha': 0.7017839907881602, 'reg_lambda': 0.23027329389914142}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 60.0, 'num_leaves': 72.0, 'min_child_samples': 37.0, 'learning_rate': 0.23811059538783155, 'subsample': 1.0, 'log_max_bin': 8.0, 'colsample_bytree': 0.9162072323824675, 'reg_alpha': 0.7017839907881602, 'reg_lambda': 0.23027329389914142}}\n{'Current Learner': 'lgbm', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 95.0, 'num_leaves': 254.0, 'min_child_samples': 21.0, 'learning_rate': 0.10418050364992694, 'subsample': 0.9097941662911945, 'log_max_bin': 7.0, 'colsample_bytree': 0.7586723794764185, 'reg_alpha': 0.09228337080759572, 'reg_lambda': 0.46673178167010676}, 'Best Learner': 'lgbm', 'Best Hyper-parameters': {'n_estimators': 95.0, 'num_leaves': 254.0, 'min_child_samples': 21.0, 'learning_rate': 0.10418050364992694, 'subsample': 0.9097941662911945, 'log_max_bin': 7.0, 'colsample_bytree': 0.7586723794764185, 'reg_alpha': 0.09228337080759572, 'reg_lambda': 0.46673178167010676}}\n" } ], "source": [ @@ -403,7 +291,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 14, "metadata": { "slideshow": { "slide_type": "slide" @@ -414,8 +302,8 @@ "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -445,15 +333,15 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, + "execution_count": 15, + "metadata": { + "tags": [] + }, "outputs": [ { "output_type": "stream", "name": "stdout", - "text": [ - "flaml r2 = 0.8500929784828137\n" - ] + "text": "flaml r2=0.8500929784828137\n" } ], "source": [ @@ -469,7 +357,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -479,18 +367,16 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { - "text/plain": [ - "LGBMRegressor()" - ] + "text/plain": "LGBMRegressor()" }, "metadata": {}, - "execution_count": 15 + "execution_count": 17 } ], "source": [ @@ -499,15 +385,15 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, + "execution_count": 18, + "metadata": { + "tags": [] + }, "outputs": [ { "output_type": "stream", "name": "stdout", - "text": [ - "default lgbm r2 = 0.8296179648694404\n" - ] + "text": "default lgbm r2=0.8296179648694404\n" } ], "source": [ @@ -525,7 +411,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -534,7 +420,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 40, "metadata": {}, "outputs": [], "source": [ @@ -552,93 +438,15 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 41, "metadata": { - "tags": [ - "outputPrepend" - ] + "tags": [] }, "outputs": [ { "output_type": "stream", "name": "stderr", - "text": [ - "ture_fraction': 0.6}. Best is trial 1 with value: 2168792363.2716327.\u001b[0m\n", - "feature_fraction, val_score: 2168792363.271633: 43%|####2 | 3/7 [00:06<00:08, 2.09s/it]\u001b[32m[I 2021-04-07 09:46:14,689]\u001b[0m Trial 2 finished with value: 2203882864.83228 and parameters: {'feature_fraction': 0.5}. Best is trial 1 with value: 2168792363.2716327.\u001b[0m\n", - "feature_fraction, val_score: 2141150566.925444: 57%|#####7 | 4/7 [00:08<00:06, 2.08s/it]\u001b[32m[I 2021-04-07 09:46:16,760]\u001b[0m Trial 3 finished with value: 2141150566.9254436 and parameters: {'feature_fraction': 0.8}. Best is trial 3 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction, val_score: 2141150566.925444: 71%|#######1 | 5/7 [00:10<00:04, 2.18s/it]\u001b[32m[I 2021-04-07 09:46:19,171]\u001b[0m Trial 4 finished with value: 2222173233.287535 and parameters: {'feature_fraction': 1.0}. Best is trial 3 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction, val_score: 2141150566.925444: 86%|########5 | 6/7 [00:12<00:02, 2.11s/it]\u001b[32m[I 2021-04-07 09:46:21,120]\u001b[0m Trial 5 finished with value: 2434969459.590528 and parameters: {'feature_fraction': 0.4}. Best is trial 3 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction, val_score: 2141150566.925444: 100%|##########| 7/7 [00:14<00:00, 2.06s/it]\u001b[32m[I 2021-04-07 09:46:23,051]\u001b[0m Trial 6 finished with value: 2141150566.9254436 and parameters: {'feature_fraction': 0.7}. Best is trial 3 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction, val_score: 2141150566.925444: 100%|##########| 7/7 [00:14<00:00, 2.06s/it]\n", - "num_leaves, val_score: 2141150566.925444: 5%|5 | 1/20 [00:04<01:29, 4.69s/it]\u001b[32m[I 2021-04-07 09:46:27,748]\u001b[0m Trial 7 finished with value: 2221392827.567352 and parameters: {'num_leaves': 102}. Best is trial 7 with value: 2221392827.567352.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 10%|# | 2/20 [00:11<01:34, 5.28s/it]\u001b[32m[I 2021-04-07 09:46:34,392]\u001b[0m Trial 8 finished with value: 2209090245.9009995 and parameters: {'num_leaves': 153}. Best is trial 8 with value: 2209090245.9009995.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 15%|#5 | 3/20 [00:21<01:54, 6.71s/it]\u001b[32m[I 2021-04-07 09:46:44,453]\u001b[0m Trial 9 finished with value: 2213438622.2234197 and parameters: {'num_leaves': 207}. Best is trial 8 with value: 2209090245.9009995.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 20%|## | 4/20 [00:22<01:21, 5.11s/it]\u001b[32m[I 2021-04-07 09:46:45,816]\u001b[0m Trial 10 finished with value: 2260840758.3015094 and parameters: {'num_leaves': 11}. Best is trial 8 with value: 2209090245.9009995.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 25%|##5 | 5/20 [00:24<01:02, 4.19s/it]\u001b[32m[I 2021-04-07 09:46:47,877]\u001b[0m Trial 11 finished with value: 2189414110.8748965 and parameters: {'num_leaves': 28}. Best is trial 11 with value: 2189414110.8748965.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 30%|### | 6/20 [00:35<01:26, 6.15s/it]\u001b[32m[I 2021-04-07 09:46:58,592]\u001b[0m Trial 12 finished with value: 2205695162.3326616 and parameters: {'num_leaves': 250}. Best is trial 11 with value: 2189414110.8748965.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 35%|###5 | 7/20 [00:40<01:15, 5.78s/it]\u001b[32m[I 2021-04-07 09:47:03,503]\u001b[0m Trial 13 finished with value: 2249106235.2104974 and parameters: {'num_leaves': 87}. Best is trial 11 with value: 2189414110.8748965.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 40%|#### | 8/20 [00:57<01:51, 9.28s/it]\u001b[32m[I 2021-04-07 09:47:20,942]\u001b[0m Trial 14 finished with value: 2204001547.9940004 and parameters: {'num_leaves': 256}. Best is trial 11 with value: 2189414110.8748965.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 45%|####5 | 9/20 [01:09<01:48, 9.83s/it]\u001b[32m[I 2021-04-07 09:47:32,063]\u001b[0m Trial 15 finished with value: 2204043662.7487397 and parameters: {'num_leaves': 180}. Best is trial 11 with value: 2189414110.8748965.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 50%|##### | 10/20 [01:13<01:23, 8.34s/it]\u001b[32m[I 2021-04-07 09:47:36,944]\u001b[0m Trial 16 finished with value: 2185138465.178819 and parameters: {'num_leaves': 50}. Best is trial 16 with value: 2185138465.178819.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 55%|#####5 | 11/20 [01:31<01:40, 11.12s/it]\u001b[32m[I 2021-04-07 09:47:54,525]\u001b[0m Trial 17 finished with value: 2218934177.762569 and parameters: {'num_leaves': 217}. Best is trial 16 with value: 2185138465.178819.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 60%|###### | 12/20 [01:39<01:20, 10.04s/it]\u001b[32m[I 2021-04-07 09:48:02,060]\u001b[0m Trial 18 finished with value: 2178018049.391758 and parameters: {'num_leaves': 126}. Best is trial 18 with value: 2178018049.391758.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 65%|######5 | 13/20 [01:42<00:57, 8.21s/it]\u001b[32m[I 2021-04-07 09:48:05,995]\u001b[0m Trial 19 finished with value: 2174930961.807095 and parameters: {'num_leaves': 67}. Best is trial 19 with value: 2174930961.807095.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 70%|####### | 14/20 [01:51<00:49, 8.28s/it]\u001b[32m[I 2021-04-07 09:48:14,424]\u001b[0m Trial 20 finished with value: 2219052218.0844493 and parameters: {'num_leaves': 167}. Best is trial 19 with value: 2174930961.807095.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 75%|#######5 | 15/20 [01:52<00:31, 6.27s/it]\u001b[32m[I 2021-04-07 09:48:16,027]\u001b[0m Trial 21 finished with value: 2327836585.7967525 and parameters: {'num_leaves': 8}. Best is trial 19 with value: 2174930961.807095.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 80%|######## | 16/20 [01:59<00:25, 6.43s/it]\u001b[32m[I 2021-04-07 09:48:22,821]\u001b[0m Trial 22 finished with value: 2218546943.8393993 and parameters: {'num_leaves': 131}. Best is trial 19 with value: 2174930961.807095.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 85%|########5 | 17/20 [02:10<00:23, 7.83s/it]\u001b[32m[I 2021-04-07 09:48:33,908]\u001b[0m Trial 23 finished with value: 2198057734.031422 and parameters: {'num_leaves': 223}. Best is trial 19 with value: 2174930961.807095.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 90%|######### | 18/20 [02:13<00:12, 6.18s/it]\u001b[32m[I 2021-04-07 09:48:36,256]\u001b[0m Trial 24 finished with value: 2213091258.3774385 and parameters: {'num_leaves': 40}. Best is trial 19 with value: 2174930961.807095.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 95%|#########5| 19/20 [02:21<00:06, 6.84s/it]\u001b[32m[I 2021-04-07 09:48:44,615]\u001b[0m Trial 25 finished with value: 2174165556.463721 and parameters: {'num_leaves': 187}. Best is trial 25 with value: 2174165556.463721.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 100%|##########| 20/20 [02:26<00:00, 6.36s/it]\u001b[32m[I 2021-04-07 09:48:49,851]\u001b[0m Trial 26 finished with value: 2234043799.4520364 and parameters: {'num_leaves': 107}. Best is trial 25 with value: 2174165556.463721.\u001b[0m\n", - "num_leaves, val_score: 2141150566.925444: 100%|##########| 20/20 [02:26<00:00, 7.34s/it]\n", - "bagging, val_score: 2141150566.925444: 10%|# | 1/10 [00:03<00:33, 3.74s/it]\u001b[32m[I 2021-04-07 09:48:53,597]\u001b[0m Trial 27 finished with value: 2194976294.3425474 and parameters: {'bagging_fraction': 0.9381257201628649, 'bagging_freq': 2}. Best is trial 27 with value: 2194976294.3425474.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 20%|## | 2/10 [00:07<00:29, 3.69s/it]\u001b[32m[I 2021-04-07 09:48:57,185]\u001b[0m Trial 28 finished with value: 2342329430.8664627 and parameters: {'bagging_fraction': 0.41898866342782093, 'bagging_freq': 7}. Best is trial 27 with value: 2194976294.3425474.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 30%|### | 3/10 [00:11<00:27, 3.97s/it]\u001b[32m[I 2021-04-07 09:49:01,816]\u001b[0m Trial 29 finished with value: 2328041384.6089053 and parameters: {'bagging_fraction': 0.42240147371851844, 'bagging_freq': 7}. Best is trial 27 with value: 2194976294.3425474.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 40%|#### | 4/10 [00:15<00:23, 3.89s/it]\u001b[32m[I 2021-04-07 09:49:05,524]\u001b[0m Trial 30 finished with value: 2220585084.5260315 and parameters: {'bagging_fraction': 0.7602049748396973, 'bagging_freq': 1}. Best is trial 27 with value: 2194976294.3425474.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 50%|##### | 5/10 [00:18<00:18, 3.68s/it]\u001b[32m[I 2021-04-07 09:49:08,687]\u001b[0m Trial 31 finished with value: 2151535025.6906157 and parameters: {'bagging_fraction': 0.9886357335328686, 'bagging_freq': 4}. Best is trial 31 with value: 2151535025.6906157.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 60%|###### | 6/10 [00:22<00:14, 3.66s/it]\u001b[32m[I 2021-04-07 09:49:12,307]\u001b[0m Trial 32 finished with value: 2157453394.751742 and parameters: {'bagging_fraction': 0.948059097995945, 'bagging_freq': 4}. Best is trial 31 with value: 2151535025.6906157.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 70%|####### | 7/10 [00:25<00:10, 3.62s/it]\u001b[32m[I 2021-04-07 09:49:15,835]\u001b[0m Trial 33 finished with value: 2195134563.4246325 and parameters: {'bagging_fraction': 0.9992531270613643, 'bagging_freq': 4}. Best is trial 31 with value: 2151535025.6906157.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 80%|######## | 8/10 [00:28<00:06, 3.39s/it]\u001b[32m[I 2021-04-07 09:49:18,679]\u001b[0m Trial 34 finished with value: 2201514253.966678 and parameters: {'bagging_fraction': 0.8603945993074557, 'bagging_freq': 4}. Best is trial 31 with value: 2151535025.6906157.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 90%|######### | 9/10 [00:31<00:03, 3.32s/it]\u001b[32m[I 2021-04-07 09:49:21,839]\u001b[0m Trial 35 finished with value: 2177340359.8120227 and parameters: {'bagging_fraction': 0.9944809344338572, 'bagging_freq': 5}. Best is trial 31 with value: 2151535025.6906157.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 100%|##########| 10/10 [00:35<00:00, 3.43s/it]\u001b[32m[I 2021-04-07 09:49:25,521]\u001b[0m Trial 36 finished with value: 2256532597.998516 and parameters: {'bagging_fraction': 0.6149278740592209, 'bagging_freq': 3}. Best is trial 31 with value: 2151535025.6906157.\u001b[0m\n", - "bagging, val_score: 2141150566.925444: 100%|##########| 10/10 [00:35<00:00, 3.57s/it]\n", - "feature_fraction_stage2, val_score: 2141150566.925444: 17%|#6 | 1/6 [00:02<00:10, 2.15s/it]\u001b[32m[I 2021-04-07 09:49:27,677]\u001b[0m Trial 37 finished with value: 2196528967.9181175 and parameters: {'feature_fraction': 0.88}. Best is trial 37 with value: 2196528967.9181175.\u001b[0m\n", - "feature_fraction_stage2, val_score: 2141150566.925444: 33%|###3 | 2/6 [00:04<00:09, 2.33s/it]\u001b[32m[I 2021-04-07 09:49:30,418]\u001b[0m Trial 38 finished with value: 2196528967.9181175 and parameters: {'feature_fraction': 0.8160000000000001}. Best is trial 37 with value: 2196528967.9181175.\u001b[0m\n", - "feature_fraction_stage2, val_score: 2141150566.925444: 50%|##### | 3/6 [00:07<00:07, 2.39s/it]\u001b[32m[I 2021-04-07 09:49:32,970]\u001b[0m Trial 39 finished with value: 2141150566.9254436 and parameters: {'feature_fraction': 0.7520000000000001}. Best is trial 39 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction_stage2, val_score: 2141150566.925444: 67%|######6 | 4/6 [00:10<00:05, 2.64s/it]\u001b[32m[I 2021-04-07 09:49:36,199]\u001b[0m Trial 40 finished with value: 2141150566.9254436 and parameters: {'feature_fraction': 0.784}. Best is trial 39 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction_stage2, val_score: 2141150566.925444: 83%|########3 | 5/6 [00:14<00:02, 2.97s/it]\u001b[32m[I 2021-04-07 09:49:39,926]\u001b[0m Trial 41 finished with value: 2196528967.9181175 and parameters: {'feature_fraction': 0.8480000000000001}. Best is trial 39 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction_stage2, val_score: 2141150566.925444: 100%|##########| 6/6 [00:17<00:00, 3.09s/it]\u001b[32m[I 2021-04-07 09:49:43,305]\u001b[0m Trial 42 finished with value: 2141150566.9254436 and parameters: {'feature_fraction': 0.7200000000000001}. Best is trial 39 with value: 2141150566.9254436.\u001b[0m\n", - "feature_fraction_stage2, val_score: 2141150566.925444: 100%|##########| 6/6 [00:17<00:00, 2.96s/it]\n", - "regularization_factors, val_score: 2141150384.773846: 5%|5 | 1/20 [00:02<00:44, 2.33s/it]\u001b[32m[I 2021-04-07 09:49:45,641]\u001b[0m Trial 43 finished with value: 2141150384.7738457 and parameters: {'lambda_l1': 0.06294194806191455, 'lambda_l2': 4.3876112262829564e-05}. Best is trial 43 with value: 2141150384.7738457.\u001b[0m\n", - "regularization_factors, val_score: 2115227274.261475: 10%|# | 2/20 [00:04<00:41, 2.28s/it]\u001b[32m[I 2021-04-07 09:49:47,814]\u001b[0m Trial 44 finished with value: 2115227274.2614753 and parameters: {'lambda_l1': 0.10310301230335357, 'lambda_l2': 8.873754009714573e-05}. Best is trial 44 with value: 2115227274.2614753.\u001b[0m\n", - "regularization_factors, val_score: 2115227274.261475: 15%|#5 | 3/20 [00:06<00:39, 2.31s/it]\u001b[32m[I 2021-04-07 09:49:50,193]\u001b[0m Trial 45 finished with value: 2141150410.2318819 and parameters: {'lambda_l1': 0.1156997936219081, 'lambda_l2': 3.3172871939656863e-05}. Best is trial 44 with value: 2115227274.2614753.\u001b[0m\n", - "regularization_factors, val_score: 2115227274.261475: 20%|## | 4/20 [00:09<00:39, 2.47s/it]\u001b[32m[I 2021-04-07 09:49:53,027]\u001b[0m Trial 46 finished with value: 2141150309.358196 and parameters: {'lambda_l1': 0.13173318624572986, 'lambda_l2': 5.888295892154888e-05}. Best is trial 44 with value: 2115227274.2614753.\u001b[0m\n", - "regularization_factors, val_score: 2115227274.261475: 25%|##5 | 5/20 [00:12<00:36, 2.43s/it]\u001b[32m[I 2021-04-07 09:49:55,374]\u001b[0m Trial 47 finished with value: 2141150340.1057699 and parameters: {'lambda_l1': 0.14472391805658655, 'lambda_l2': 4.9688537888110276e-05}. Best is trial 44 with value: 2115227274.2614753.\u001b[0m\n", - "regularization_factors, val_score: 2115227274.261475: 30%|### | 6/20 [00:14<00:33, 2.39s/it]\u001b[32m[I 2021-04-07 09:49:57,660]\u001b[0m Trial 48 finished with value: 2141150335.5146017 and parameters: {'lambda_l1': 0.076040157489334, 'lambda_l2': 5.6173432118995905e-05}. Best is trial 44 with value: 2115227274.2614753.\u001b[0m\n", - "regularization_factors, val_score: 2115227274.261475: 35%|###5 | 7/20 [00:16<00:30, 2.34s/it]\u001b[32m[I 2021-04-07 09:49:59,876]\u001b[0m Trial 49 finished with value: 2141150302.209143 and parameters: {'lambda_l1': 0.09052718358387855, 'lambda_l2': 6.390283061599122e-05}. Best is trial 44 with value: 2115227274.2614753.\u001b[0m\n", - "regularization_factors, val_score: 2115227274.261475: 40%|#### | 8/20 [00:20<00:32, 2.74s/it]\u001b[32m[I 2021-04-07 09:50:03,559]\u001b[0m Trial 50 finished with value: 2141150251.1968682 and parameters: {'lambda_l1': 0.10237603744220825, 'lambda_l2': 7.654698252019428e-05}. Best is trial 44 with value: 2115227274.2614753.\u001b[0m\n", - "regularization_factors, val_score: 2115227258.465188: 45%|####5 | 9/20 [00:22<00:28, 2.56s/it]\u001b[32m[I 2021-04-07 09:50:05,683]\u001b[0m Trial 51 finished with value: 2115227258.4651875 and parameters: {'lambda_l1': 0.16517523834461412, 'lambda_l2': 8.822808793625208e-05}. Best is trial 51 with value: 2115227258.4651875.\u001b[0m\n", - "regularization_factors, val_score: 2115227258.465188: 50%|##### | 10/20 [00:24<00:24, 2.41s/it]\u001b[32m[I 2021-04-07 09:50:07,755]\u001b[0m Trial 52 finished with value: 2115227271.294053 and parameters: {'lambda_l1': 0.10300814643324889, 'lambda_l2': 8.986477964053952e-05}. Best is trial 51 with value: 2115227258.4651875.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 55%|#####5 | 11/20 [00:26<00:20, 2.29s/it]\u001b[32m[I 2021-04-07 09:50:09,772]\u001b[0m Trial 53 finished with value: 2115227066.5604246 and parameters: {'lambda_l1': 0.1641168724158022, 'lambda_l2': 0.0001526989159908344}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 60%|###### | 12/20 [00:28<00:17, 2.22s/it]\u001b[32m[I 2021-04-07 09:50:11,832]\u001b[0m Trial 54 finished with value: 2146215291.9992926 and parameters: {'lambda_l1': 0.15939243928354838, 'lambda_l2': 0.0006817203686132486}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 65%|######5 | 13/20 [00:30<00:15, 2.26s/it]\u001b[32m[I 2021-04-07 09:50:14,173]\u001b[0m Trial 55 finished with value: 2124575175.9074316 and parameters: {'lambda_l1': 1.590701206686507, 'lambda_l2': 0.0004836750671216936}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 70%|####### | 14/20 [00:33<00:13, 2.25s/it]\u001b[32m[I 2021-04-07 09:50:16,402]\u001b[0m Trial 56 finished with value: 2215145015.078994 and parameters: {'lambda_l1': 6.558085959732524, 'lambda_l2': 0.036794303002768765}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 75%|#######5 | 15/20 [00:35<00:11, 2.24s/it]\u001b[32m[I 2021-04-07 09:50:18,616]\u001b[0m Trial 57 finished with value: 2128795697.287768 and parameters: {'lambda_l1': 1.9780457030427747, 'lambda_l2': 0.0025698103247060802}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 80%|######## | 16/20 [00:37<00:09, 2.29s/it]\u001b[32m[I 2021-04-07 09:50:21,014]\u001b[0m Trial 58 finished with value: 2142481678.8166425 and parameters: {'lambda_l1': 5.446960909510068, 'lambda_l2': 0.0049375987390305265}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 85%|########5 | 17/20 [00:39<00:06, 2.23s/it]\u001b[32m[I 2021-04-07 09:50:23,116]\u001b[0m Trial 59 finished with value: 2141150565.1464455 and parameters: {'lambda_l1': 4.560996301544332e-07, 'lambda_l2': 6.012037841700167e-07}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 90%|######### | 18/20 [00:42<00:04, 2.24s/it]\u001b[32m[I 2021-04-07 09:50:25,376]\u001b[0m Trial 60 finished with value: 2131740079.3508956 and parameters: {'lambda_l1': 3.2803363921216047, 'lambda_l2': 0.0020327218351278574}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 95%|#########5| 19/20 [00:44<00:02, 2.27s/it]\u001b[32m[I 2021-04-07 09:50:27,726]\u001b[0m Trial 61 finished with value: 2117851257.56334 and parameters: {'lambda_l1': 3.720228982707488, 'lambda_l2': 0.0018619995969515544}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 100%|##########| 20/20 [00:46<00:00, 2.24s/it]\u001b[32m[I 2021-04-07 09:50:29,895]\u001b[0m Trial 62 finished with value: 2129019536.0433643 and parameters: {'lambda_l1': 2.024171578537482, 'lambda_l2': 0.000987105837490513}. Best is trial 53 with value: 2115227066.5604246.\u001b[0m\n", - "regularization_factors, val_score: 2115227066.560425: 100%|##########| 20/20 [00:46<00:00, 2.33s/it]\n", - "min_data_in_leaf, val_score: 2115227066.560425: 20%|## | 1/5 [00:02<00:09, 2.48s/it]\u001b[32m[I 2021-04-07 09:50:32,380]\u001b[0m Trial 63 finished with value: 2164909720.933062 and parameters: {'min_child_samples': 25}. Best is trial 63 with value: 2164909720.933062.\u001b[0m\n", - "min_data_in_leaf, val_score: 2115227066.560425: 40%|#### | 2/5 [00:04<00:07, 2.45s/it]\u001b[32m[I 2021-04-07 09:50:34,769]\u001b[0m Trial 64 finished with value: 2216971696.818525 and parameters: {'min_child_samples': 50}. Best is trial 63 with value: 2164909720.933062.\u001b[0m\n", - "min_data_in_leaf, val_score: 2115227066.560425: 60%|###### | 3/5 [00:07<00:05, 2.61s/it]\u001b[32m[I 2021-04-07 09:50:37,755]\u001b[0m Trial 65 finished with value: 2254180298.9772987 and parameters: {'min_child_samples': 100}. Best is trial 63 with value: 2164909720.933062.\u001b[0m\n", - "min_data_in_leaf, val_score: 2115227066.560425: 80%|######## | 4/5 [00:09<00:02, 2.46s/it]\u001b[32m[I 2021-04-07 09:50:39,872]\u001b[0m Trial 66 finished with value: 2166633996.5077305 and parameters: {'min_child_samples': 10}. Best is trial 63 with value: 2164909720.933062.\u001b[0m\n", - "min_data_in_leaf, val_score: 2115227066.560425: 100%|##########| 5/5 [00:12<00:00, 2.34s/it]\u001b[32m[I 2021-04-07 09:50:41,932]\u001b[0m Trial 67 finished with value: 2147448653.8826163 and parameters: {'min_child_samples': 5}. Best is trial 67 with value: 2147448653.8826163.\u001b[0m\n", - "min_data_in_leaf, val_score: 2115227066.560425: 100%|##########| 5/5 [00:12<00:00, 2.41s/it]CPU times: user 4min 15s, sys: 12.3 s, total: 4min 27s\n", - "Wall time: 4min 33s\n", - "\n" - ] + "text": "\u001b[32m[I 2021-04-09 19:56:13,788]\u001b[0m A new study created in memory with name: no-name-be796674-63fe-4736-9436-82e0a952f36b\u001b[0m\nfeature_fraction, val_score: 2001137767.143790: 14%|#4 | 1/7 [00:02<00:13, 2.30s/it]\u001b[32m[I 2021-04-09 19:56:16,095]\u001b[0m Trial 0 finished with value: 2001137767.14379 and parameters: {'feature_fraction': 0.7}. Best is trial 0 with value: 2001137767.14379.\u001b[0m\nfeature_fraction, val_score: 2001137767.143790: 29%|##8 | 2/7 [00:04<00:11, 2.24s/it]\u001b[32m[I 2021-04-09 19:56:18,289]\u001b[0m Trial 1 finished with value: 2009099143.533758 and parameters: {'feature_fraction': 0.6}. Best is trial 0 with value: 2001137767.14379.\u001b[0m\nfeature_fraction, val_score: 2001137767.143790: 43%|####2 | 3/7 [00:06<00:09, 2.27s/it]\u001b[32m[I 2021-04-09 19:56:20,588]\u001b[0m Trial 2 finished with value: 2001137767.14379 and parameters: {'feature_fraction': 0.8}. Best is trial 0 with value: 2001137767.14379.\u001b[0m\nfeature_fraction, val_score: 2001137767.143790: 57%|#####7 | 4/7 [00:09<00:07, 2.38s/it]\u001b[32m[I 2021-04-09 19:56:23,148]\u001b[0m Trial 3 finished with value: 2017941196.0559783 and parameters: {'feature_fraction': 1.0}. Best is trial 0 with value: 2001137767.14379.\u001b[0m\nfeature_fraction, val_score: 1977065482.707781: 71%|#######1 | 5/7 [00:11<00:04, 2.27s/it]\u001b[32m[I 2021-04-09 19:56:25,222]\u001b[0m Trial 4 finished with value: 1977065482.7077813 and parameters: {'feature_fraction': 0.5}. Best is trial 4 with value: 1977065482.7077813.\u001b[0m\nfeature_fraction, val_score: 1977065482.707781: 71%|#######1 | 5/7 [00:11<00:04, 2.27s/it]" } ], "source": [ @@ -647,29 +455,145 @@ ] }, { - "cell_type": "code", - "execution_count": 20, + "cell_type": "markdown", "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Optuna LightGBM Tuner r2 = 0.8454837791695002\n" - ] - } - ], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ "y_pred = model.predict(X_test)\n", "from flaml.ml import sklearn_metric_loss_score\n", "print('Optuna LightGBM Tuner r2', '=', 1 - sklearn_metric_loss_score('r2', y_pred, y_test))" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Add a customized LightGBM learner in FLAML\n", + "The native API of LightGBM allows one to specify a custom objective function in the model constructor. You can easily enable it by adding a customized LightGBM learner in FLAML. In the following example, we show how to add such a customized LightGBM learner with a custom objective function." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Create a customized LightGBM learner with a custom objective function" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "import numpy as np \n", + "\n", + "''' define your customized objective function '''\n", + "def my_loss_obj(y_true, y_pred):\n", + " c = 0.5\n", + " residual = y_pred - y_true\n", + " grad = c * residual /(np.abs(residual) + c)\n", + " hess = c ** 2 / (np.abs(residual) + c) ** 2\n", + " # rmse grad and hess\n", + " grad_rmse = residual\n", + " hess_rmse = 1.0\n", + " \n", + " # mae grad and hess\n", + " grad_mae = np.array(residual)\n", + " grad_mae[grad_mae > 0] = 1.\n", + " grad_mae[grad_mae <= 0] = -1.\n", + " hess_mae = 1.0\n", + "\n", + " coef = [0.4, 0.3, 0.3]\n", + " return coef[0] * grad + coef[1] * grad_rmse + coef[2] * grad_mae, \\\n", + " coef[0] * hess + coef[1] * hess_rmse + coef[2] * hess_mae\n", + "\n", + "\n", + "from flaml.model import LGBMEstimator\n", + "\n", + "''' create a customized LightGBM learner class with your objective function '''\n", + "class MyLGBM(LGBMEstimator):\n", + " '''LGBMEstimator with my_loss_obj as the objective function\n", + " '''\n", + "\n", + " def __init__(self, **params):\n", + " super().__init__(objective=my_loss_obj, **params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Add the customized learner in FLAML" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": "[flaml.automl: 04-09 21:16:36] {890} INFO - Evaluation method: cv\n[flaml.automl: 04-09 21:16:36] {606} INFO - Using RepeatedKFold\n[flaml.automl: 04-09 21:16:36] {911} INFO - Minimizing error metric: 1-r2\n[flaml.automl: 04-09 21:16:36] {930} INFO - List of ML learners in AutoML Run: ['my_lgbm']\n[flaml.automl: 04-09 21:16:36] {994} INFO - iteration 0, current learner my_lgbm\n[flaml.automl: 04-09 21:16:37] {1147} INFO - at 0.2s,\tbest my_lgbm's error=2.9883,\tbest my_lgbm's error=2.9883\n[flaml.automl: 04-09 21:16:37] {994} INFO - iteration 1, current learner my_lgbm\n[flaml.automl: 04-09 21:16:37] {1147} INFO - at 0.3s,\tbest my_lgbm's error=2.9883,\tbest my_lgbm's error=2.9883\n[flaml.automl: 04-09 21:16:37] {994} INFO - iteration 2, current learner my_lgbm\n[flaml.automl: 04-09 21:16:37] {1147} INFO - at 0.4s,\tbest my_lgbm's error=0.4472,\tbest my_lgbm's error=0.4472\n[flaml.automl: 04-09 21:16:37] {994} INFO - iteration 3, current learner my_lgbm\n[flaml.automl: 04-09 21:16:37] {1147} INFO - at 0.5s,\tbest my_lgbm's error=0.4472,\tbest my_lgbm's error=0.4472\n[flaml.automl: 04-09 21:16:37] {994} INFO - iteration 4, current learner my_lgbm\n[flaml.automl: 04-09 21:16:37] {1147} INFO - at 0.7s,\tbest my_lgbm's error=0.2682,\tbest my_lgbm's error=0.2682\n[flaml.automl: 04-09 21:16:37] {994} INFO - iteration 5, current learner my_lgbm\n[flaml.automl: 04-09 21:16:37] {1147} INFO - at 0.9s,\tbest my_lgbm's error=0.2682,\tbest my_lgbm's error=0.2682\n[flaml.automl: 04-09 21:16:37] {994} INFO - iteration 6, current learner my_lgbm\n[flaml.automl: 04-09 21:16:37] {1147} INFO - at 1.1s,\tbest my_lgbm's error=0.2682,\tbest my_lgbm's error=0.2682\n[flaml.automl: 04-09 21:16:37] {994} INFO - iteration 7, current learner my_lgbm\n[flaml.automl: 04-09 21:16:38] {1147} INFO - at 1.3s,\tbest my_lgbm's error=0.2256,\tbest my_lgbm's error=0.2256\n[flaml.automl: 04-09 21:16:38] {994} INFO - iteration 8, current learner my_lgbm\n[flaml.automl: 04-09 21:16:38] {1147} INFO - at 1.5s,\tbest my_lgbm's error=0.2256,\tbest my_lgbm's error=0.2256\n[flaml.automl: 04-09 21:16:38] {994} INFO - iteration 9, current learner my_lgbm\n[flaml.automl: 04-09 21:16:38] {1147} INFO - at 1.6s,\tbest my_lgbm's error=0.2256,\tbest my_lgbm's error=0.2256\n[flaml.automl: 04-09 21:16:38] {994} INFO - iteration 10, current learner my_lgbm\n[flaml.automl: 04-09 21:16:38] {1147} INFO - at 1.8s,\tbest my_lgbm's error=0.2256,\tbest my_lgbm's error=0.2256\n[flaml.automl: 04-09 21:16:38] {994} INFO - iteration 11, current learner my_lgbm\n[flaml.automl: 04-09 21:16:39] {1147} INFO - at 2.3s,\tbest my_lgbm's error=0.1866,\tbest my_lgbm's error=0.1866\n[flaml.automl: 04-09 21:16:39] {994} INFO - iteration 12, current learner my_lgbm\n[flaml.automl: 04-09 21:16:39] {1147} INFO - at 2.9s,\tbest my_lgbm's error=0.1866,\tbest my_lgbm's error=0.1866\n[flaml.automl: 04-09 21:16:39] {994} INFO - iteration 13, current learner my_lgbm\n[flaml.automl: 04-09 21:16:39] {1147} INFO - at 3.1s,\tbest my_lgbm's error=0.1866,\tbest my_lgbm's error=0.1866\n[flaml.automl: 04-09 21:16:39] {994} INFO - iteration 14, current learner my_lgbm\n[flaml.automl: 04-09 21:16:41] {1147} INFO - at 5.0s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:41] {994} INFO - iteration 15, current learner my_lgbm\n[flaml.automl: 04-09 21:16:42] {1147} INFO - at 5.6s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:42] {994} INFO - iteration 16, current learner my_lgbm\n[flaml.automl: 04-09 21:16:48] {1147} INFO - at 11.9s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:48] {994} INFO - iteration 17, current learner my_lgbm\n[flaml.automl: 04-09 21:16:49] {1147} INFO - at 13.1s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:49] {994} INFO - iteration 18, current learner my_lgbm\n[flaml.automl: 04-09 21:16:54] {1147} INFO - at 17.7s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:54] {994} INFO - iteration 19, current learner my_lgbm\n[flaml.automl: 04-09 21:16:55] {1147} INFO - at 18.3s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:55] {994} INFO - iteration 20, current learner my_lgbm\n[flaml.automl: 04-09 21:16:57] {1147} INFO - at 20.2s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:57] {994} INFO - iteration 21, current learner my_lgbm\n[flaml.automl: 04-09 21:16:57] {1147} INFO - at 20.5s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:16:57] {994} INFO - iteration 22, current learner my_lgbm\n[flaml.automl: 04-09 21:17:00] {1147} INFO - at 23.9s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:00] {994} INFO - iteration 23, current learner my_lgbm\n[flaml.automl: 04-09 21:17:03] {1147} INFO - at 26.3s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:03] {994} INFO - iteration 24, current learner my_lgbm\n[flaml.automl: 04-09 21:17:04] {1147} INFO - at 27.2s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:04] {994} INFO - iteration 25, current learner my_lgbm\n[flaml.automl: 04-09 21:17:06] {1147} INFO - at 29.6s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:06] {994} INFO - iteration 26, current learner my_lgbm\n[flaml.automl: 04-09 21:17:07] {1147} INFO - at 31.0s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:07] {994} INFO - iteration 27, current learner my_lgbm\n[flaml.automl: 04-09 21:17:08] {1147} INFO - at 31.7s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:08] {994} INFO - iteration 28, current learner my_lgbm\n[flaml.automl: 04-09 21:17:10] {1147} INFO - at 33.3s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:10] {994} INFO - iteration 29, current learner my_lgbm\n[flaml.automl: 04-09 21:17:16] {1147} INFO - at 39.7s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:16] {994} INFO - iteration 30, current learner my_lgbm\n[flaml.automl: 04-09 21:17:16] {1147} INFO - at 40.0s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:16] {994} INFO - iteration 31, current learner my_lgbm\n[flaml.automl: 04-09 21:17:20] {1147} INFO - at 44.1s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:20] {994} INFO - iteration 32, current learner my_lgbm\n[flaml.automl: 04-09 21:17:22] {1147} INFO - at 45.4s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:22] {994} INFO - iteration 33, current learner my_lgbm\n[flaml.automl: 04-09 21:17:22] {1147} INFO - at 45.6s,\tbest my_lgbm's error=0.1639,\tbest my_lgbm's error=0.1639\n[flaml.automl: 04-09 21:17:22] {994} INFO - iteration 34, current learner my_lgbm\n[flaml.automl: 04-09 21:17:35] {1147} INFO - at 59.1s,\tbest my_lgbm's error=0.1610,\tbest my_lgbm's error=0.1610\n[flaml.automl: 04-09 21:17:35] {994} INFO - iteration 35, current learner my_lgbm\n[flaml.automl: 04-09 21:17:59] {1147} INFO - at 82.8s,\tbest my_lgbm's error=0.1610,\tbest my_lgbm's error=0.1610\n[flaml.automl: 04-09 21:17:59] {994} INFO - iteration 36, current learner my_lgbm\n[flaml.automl: 04-09 21:18:06] {1147} INFO - at 89.3s,\tbest my_lgbm's error=0.1610,\tbest my_lgbm's error=0.1610\n[flaml.automl: 04-09 21:18:06] {994} INFO - iteration 37, current learner my_lgbm\n[flaml.automl: 04-09 21:18:12] {1147} INFO - at 95.7s,\tbest my_lgbm's error=0.1610,\tbest my_lgbm's error=0.1610\n[flaml.automl: 04-09 21:18:12] {994} INFO - iteration 38, current learner my_lgbm\n[flaml.automl: 04-09 21:18:20] {1147} INFO - at 103.6s,\tbest my_lgbm's error=0.1610,\tbest my_lgbm's error=0.1610\n[flaml.automl: 04-09 21:18:20] {994} INFO - iteration 39, current learner my_lgbm\n[flaml.automl: 04-09 21:18:36] {1147} INFO - at 119.4s,\tbest my_lgbm's error=0.1610,\tbest my_lgbm's error=0.1610\n[flaml.automl: 04-09 21:18:36] {1187} INFO - selected model: LGBMRegressor(colsample_bytree=0.613734331916688,\n learning_rate=0.06283686776885493, max_bin=1023,\n min_child_samples=81, n_estimators=287, num_leaves=247,\n objective=,\n reg_alpha=0.006495889833184046, reg_lambda=0.005049036990045567,\n subsample=0.7669214501226506)\n[flaml.automl: 04-09 21:18:36] {944} INFO - fit succeeded\n" + } + ], + "source": [ + "automl = AutoML()\n", + "automl.add_learner(learner_name='my_lgbm', learner_class=MyLGBM)\n", + "settings = {\n", + " \"time_budget\": 120, # total running time in seconds\n", + " \"metric\": 'r2', # primary metrics for regression can be chosen from: ['mae','mse','r2']\n", + " \"estimator_list\": ['my_lgbm',], # list of ML learners; we tune lightgbm in this example\n", + " \"task\": 'regression', # task type \n", + " \"log_file_name\": 'houses_experiment_my_lgbm.log', # flaml log file\n", + "}\n", + "automl.fit(X_train=X_train, y_train=y_train, **settings)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Best hyperparmeter config:{'n_estimators': 287.0, 'num_leaves': 247.0, 'min_child_samples': 81.0, 'learning_rate': 0.06283686776885493, 'subsample': 0.7669214501226506, 'log_max_bin': 10.0, 'colsample_bytree': 0.613734331916688, 'reg_alpha': 0.006495889833184046, 'reg_lambda': 0.005049036990045567}\nBest r2 on validation data: 0.839\nTraining duration of best run: 13.51 s\nPredicted labels[136183.28410995 260302.1656523 136575.03214257 ... 213737.94780122\n 248465.64921701 275744.71459095]\nTrue labels[136900. 241300. 200700. ... 160900. 227300. 265600.]\nr2=0.8449104679441721\nmse=2050051993.9844227\nmae=30061.65329294407\n" + } + ], + "source": [ + "print('Best hyperparmeter config:', automl.best_config)\n", + "print('Best r2 on validation data: {0:.4g}'.format(1-automl.best_loss))\n", + "print('Training duration of best run: {0:.4g} s'.format(automl.best_config_train_time))\n", + "\n", + "y_pred = automl.predict(X_test)\n", + "print('Predicted labels', y_pred)\n", + "print('True labels', y_test)\n", + "\n", + "from flaml.ml import sklearn_metric_loss_score\n", + "print('r2', '=', 1 - sklearn_metric_loss_score('r2', y_pred, y_test))\n", + "print('mse', '=', sklearn_metric_loss_score('mse', y_pred, y_test))\n", + "print('mae', '=', sklearn_metric_loss_score('mae', y_pred, y_test))" + ] } ], "metadata": { "kernelspec": { - "name": "python3", - "display_name": "Python 3.8.0 64-bit ('blend': conda)", + "name": "python37764bitbsconda5b158f6acec0414d8c5c2401992dd9e1", + "display_name": "Python 3.7.7 64-bit ('bs': conda)", "metadata": { "interpreter": { "hash": "0cfea3304185a9579d09e0953576b57c8581e46e6ebc6dfeb681bc5a511f7544" @@ -686,7 +610,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.0" + "version": "3.7.7-final" } }, "nbformat": 4, diff --git a/notebook/flaml_xgboost.ipynb b/notebook/flaml_xgboost.ipynb index 6cffa8e0d..300102af7 100644 --- a/notebook/flaml_xgboost.ipynb +++ b/notebook/flaml_xgboost.ipynb @@ -69,9 +69,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "load dataset from ./openml_ds537.pkl\nDataset name: houses\nX_train.shape: (15480, 8), y_train.shape: (15480,);\nX_test.shape: (5160, 8), y_test.shape: (5160,)\n" - ] + "text": "load dataset from./openml_ds537.pkl\nDataset name:houses\nX_train.shape: (15480, 8), y_train.shape: (15480,);\nX_test.shape: (5160, 8), y_test.shape: (5160,)\n" } ], "source": [ @@ -138,100 +136,7 @@ { "output_type": "stream", "name": "stderr", - "text": [ - "[flaml.automl: 04-07 09:53:43] {890} INFO - Evaluation method: cv\n", - "[flaml.automl: 04-07 09:53:43] {606} INFO - Using RepeatedKFold\n", - "[flaml.automl: 04-07 09:53:43] {911} INFO - Minimizing error metric: 1-r2\n", - "[flaml.automl: 04-07 09:53:43] {929} INFO - List of ML learners in AutoML Run: ['xgboost']\n", - "[flaml.automl: 04-07 09:53:43] {993} INFO - iteration 0, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:43] {1141} INFO - at 0.4s,\tbest xgboost's error=2.1267,\tbest xgboost's error=2.1267\n", - "[flaml.automl: 04-07 09:53:43] {993} INFO - iteration 1, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:43] {1141} INFO - at 0.6s,\tbest xgboost's error=2.1267,\tbest xgboost's error=2.1267\n", - "[flaml.automl: 04-07 09:53:43] {993} INFO - iteration 2, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:44] {1141} INFO - at 0.9s,\tbest xgboost's error=0.3799,\tbest xgboost's error=0.3799\n", - "[flaml.automl: 04-07 09:53:44] {993} INFO - iteration 3, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:44] {1141} INFO - at 1.1s,\tbest xgboost's error=0.3799,\tbest xgboost's error=0.3799\n", - "[flaml.automl: 04-07 09:53:44] {993} INFO - iteration 4, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:45] {1141} INFO - at 1.7s,\tbest xgboost's error=0.2664,\tbest xgboost's error=0.2664\n", - "[flaml.automl: 04-07 09:53:45] {993} INFO - iteration 5, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:45] {1141} INFO - at 2.2s,\tbest xgboost's error=0.2281,\tbest xgboost's error=0.2281\n", - "[flaml.automl: 04-07 09:53:45] {993} INFO - iteration 6, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:45] {1141} INFO - at 2.4s,\tbest xgboost's error=0.2281,\tbest xgboost's error=0.2281\n", - "[flaml.automl: 04-07 09:53:45] {993} INFO - iteration 7, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:46] {1141} INFO - at 2.7s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n", - "[flaml.automl: 04-07 09:53:46] {993} INFO - iteration 8, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:46] {1141} INFO - at 3.0s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n", - "[flaml.automl: 04-07 09:53:46] {993} INFO - iteration 9, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:46] {1141} INFO - at 3.2s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n", - "[flaml.automl: 04-07 09:53:46] {993} INFO - iteration 10, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:46] {1141} INFO - at 3.4s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n", - "[flaml.automl: 04-07 09:53:46] {993} INFO - iteration 11, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:47] {1141} INFO - at 4.1s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n", - "[flaml.automl: 04-07 09:53:47] {993} INFO - iteration 12, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:47] {1141} INFO - at 4.4s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n", - "[flaml.automl: 04-07 09:53:47] {993} INFO - iteration 13, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:47] {1141} INFO - at 4.6s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n", - "[flaml.automl: 04-07 09:53:47] {993} INFO - iteration 14, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:48] {1141} INFO - at 5.2s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:48] {993} INFO - iteration 15, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:48] {1141} INFO - at 5.6s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:48] {993} INFO - iteration 16, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:50] {1141} INFO - at 6.8s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:50] {993} INFO - iteration 17, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:51] {1141} INFO - at 7.7s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:51] {993} INFO - iteration 18, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:52] {1141} INFO - at 9.5s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:52] {993} INFO - iteration 19, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:53] {1141} INFO - at 9.9s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:53] {993} INFO - iteration 20, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:53] {1141} INFO - at 10.5s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:53] {993} INFO - iteration 21, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:54] {1141} INFO - at 10.8s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:54] {993} INFO - iteration 22, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:55] {1141} INFO - at 11.7s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:55] {993} INFO - iteration 23, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:55] {1141} INFO - at 12.4s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:55] {993} INFO - iteration 24, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:56] {1141} INFO - at 12.7s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:56] {993} INFO - iteration 25, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:56] {1141} INFO - at 13.5s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:56] {993} INFO - iteration 26, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:57] {1141} INFO - at 14.0s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:57] {993} INFO - iteration 27, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:57] {1141} INFO - at 14.4s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:57] {993} INFO - iteration 28, current learner xgboost\n", - "[flaml.automl: 04-07 09:53:58] {1141} INFO - at 14.9s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n", - "[flaml.automl: 04-07 09:53:58] {993} INFO - iteration 29, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:00] {1141} INFO - at 16.8s,\tbest xgboost's error=0.1812,\tbest xgboost's error=0.1812\n", - "[flaml.automl: 04-07 09:54:00] {993} INFO - iteration 30, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:00] {1141} INFO - at 17.2s,\tbest xgboost's error=0.1812,\tbest xgboost's error=0.1812\n", - "[flaml.automl: 04-07 09:54:00] {993} INFO - iteration 31, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:05] {1141} INFO - at 22.1s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n", - "[flaml.automl: 04-07 09:54:05] {993} INFO - iteration 32, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:08] {1141} INFO - at 25.0s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n", - "[flaml.automl: 04-07 09:54:08] {993} INFO - iteration 33, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:09] {1141} INFO - at 25.8s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n", - "[flaml.automl: 04-07 09:54:09] {993} INFO - iteration 34, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:20] {1141} INFO - at 37.5s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n", - "[flaml.automl: 04-07 09:54:20] {993} INFO - iteration 35, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:28] {1141} INFO - at 45.2s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n", - "[flaml.automl: 04-07 09:54:28] {993} INFO - iteration 36, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:30] {1141} INFO - at 47.4s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n", - "[flaml.automl: 04-07 09:54:30] {993} INFO - iteration 37, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:32] {1141} INFO - at 49.3s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n", - "[flaml.automl: 04-07 09:54:32] {993} INFO - iteration 38, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:34] {1141} INFO - at 51.6s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n", - "[flaml.automl: 04-07 09:54:34] {993} INFO - iteration 39, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:38] {1141} INFO - at 54.9s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n", - "[flaml.automl: 04-07 09:54:38] {993} INFO - iteration 40, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:40] {1141} INFO - at 57.1s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n", - "[flaml.automl: 04-07 09:54:40] {993} INFO - iteration 41, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:41] {1141} INFO - at 58.1s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n", - "[flaml.automl: 04-07 09:54:41] {993} INFO - iteration 42, current learner xgboost\n", - "[flaml.automl: 04-07 09:54:43] {1141} INFO - at 60.4s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n", - "[flaml.automl: 04-07 09:54:43] {1187} INFO - selected model: \n", - "[flaml.automl: 04-07 09:54:43] {944} INFO - fit succeeded\n" - ] + "text": "[flaml.automl: 04-10 11:34:26] {890} INFO - Evaluation method: cv\n[flaml.automl: 04-10 11:34:26] {606} INFO - Using RepeatedKFold\n[flaml.automl: 04-10 11:34:26] {911} INFO - Minimizing error metric: 1-r2\n[flaml.automl: 04-10 11:34:26] {930} INFO - List of ML learners in AutoML Run: ['xgboost']\n[flaml.automl: 04-10 11:34:26] {994} INFO - iteration 0, current learner xgboost\n[flaml.automl: 04-10 11:34:26] {1147} INFO - at 0.2s,\tbest xgboost's error=2.1267,\tbest xgboost's error=2.1267\n[flaml.automl: 04-10 11:34:26] {994} INFO - iteration 1, current learner xgboost\n[flaml.automl: 04-10 11:34:27] {1147} INFO - at 0.4s,\tbest xgboost's error=2.1267,\tbest xgboost's error=2.1267\n[flaml.automl: 04-10 11:34:27] {994} INFO - iteration 2, current learner xgboost\n[flaml.automl: 04-10 11:34:27] {1147} INFO - at 0.6s,\tbest xgboost's error=0.3799,\tbest xgboost's error=0.3799\n[flaml.automl: 04-10 11:34:27] {994} INFO - iteration 3, current learner xgboost\n[flaml.automl: 04-10 11:34:27] {1147} INFO - at 0.8s,\tbest xgboost's error=0.3799,\tbest xgboost's error=0.3799\n[flaml.automl: 04-10 11:34:27] {994} INFO - iteration 4, current learner xgboost\n[flaml.automl: 04-10 11:34:27] {1147} INFO - at 1.2s,\tbest xgboost's error=0.2664,\tbest xgboost's error=0.2664\n[flaml.automl: 04-10 11:34:27] {994} INFO - iteration 5, current learner xgboost\n[flaml.automl: 04-10 11:34:28] {1147} INFO - at 1.6s,\tbest xgboost's error=0.2281,\tbest xgboost's error=0.2281\n[flaml.automl: 04-10 11:34:28] {994} INFO - iteration 6, current learner xgboost\n[flaml.automl: 04-10 11:34:28] {1147} INFO - at 1.8s,\tbest xgboost's error=0.2281,\tbest xgboost's error=0.2281\n[flaml.automl: 04-10 11:34:28] {994} INFO - iteration 7, current learner xgboost\n[flaml.automl: 04-10 11:34:28] {1147} INFO - at 2.1s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n[flaml.automl: 04-10 11:34:28] {994} INFO - iteration 8, current learner xgboost\n[flaml.automl: 04-10 11:34:28] {1147} INFO - at 2.3s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n[flaml.automl: 04-10 11:34:28] {994} INFO - iteration 9, current learner xgboost\n[flaml.automl: 04-10 11:34:29] {1147} INFO - at 2.5s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n[flaml.automl: 04-10 11:34:29] {994} INFO - iteration 10, current learner xgboost\n[flaml.automl: 04-10 11:34:29] {1147} INFO - at 2.8s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n[flaml.automl: 04-10 11:34:29] {994} INFO - iteration 11, current learner xgboost\n[flaml.automl: 04-10 11:34:30] {1147} INFO - at 3.5s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n[flaml.automl: 04-10 11:34:30] {994} INFO - iteration 12, current learner xgboost\n[flaml.automl: 04-10 11:34:30] {1147} INFO - at 3.7s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n[flaml.automl: 04-10 11:34:30] {994} INFO - iteration 13, current learner xgboost\n[flaml.automl: 04-10 11:34:30] {1147} INFO - at 3.9s,\tbest xgboost's error=0.2234,\tbest xgboost's error=0.2234\n[flaml.automl: 04-10 11:34:30] {994} INFO - iteration 14, current learner xgboost\n[flaml.automl: 04-10 11:34:31] {1147} INFO - at 4.6s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:31] {994} INFO - iteration 15, current learner xgboost\n[flaml.automl: 04-10 11:34:31] {1147} INFO - at 4.9s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:31] {994} INFO - iteration 16, current learner xgboost\n[flaml.automl: 04-10 11:34:33] {1147} INFO - at 6.4s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:33] {994} INFO - iteration 17, current learner xgboost\n[flaml.automl: 04-10 11:34:34] {1147} INFO - at 7.4s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:34] {994} INFO - iteration 18, current learner xgboost\n[flaml.automl: 04-10 11:34:35] {1147} INFO - at 9.3s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:35] {994} INFO - iteration 19, current learner xgboost\n[flaml.automl: 04-10 11:34:36] {1147} INFO - at 9.7s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:36] {994} INFO - iteration 20, current learner xgboost\n[flaml.automl: 04-10 11:34:36] {1147} INFO - at 10.3s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:36] {994} INFO - iteration 21, current learner xgboost\n[flaml.automl: 04-10 11:34:37] {1147} INFO - at 10.5s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:37] {994} INFO - iteration 22, current learner xgboost\n[flaml.automl: 04-10 11:34:38] {1147} INFO - at 11.5s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:38] {994} INFO - iteration 23, current learner xgboost\n[flaml.automl: 04-10 11:34:39] {1147} INFO - at 12.4s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:39] {994} INFO - iteration 24, current learner xgboost\n[flaml.automl: 04-10 11:34:39] {1147} INFO - at 12.8s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:39] {994} INFO - iteration 25, current learner xgboost\n[flaml.automl: 04-10 11:34:40] {1147} INFO - at 13.7s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:40] {994} INFO - iteration 26, current learner xgboost\n[flaml.automl: 04-10 11:34:40] {1147} INFO - at 14.3s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:40] {994} INFO - iteration 27, current learner xgboost\n[flaml.automl: 04-10 11:34:41] {1147} INFO - at 14.7s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:41] {994} INFO - iteration 28, current learner xgboost\n[flaml.automl: 04-10 11:34:41] {1147} INFO - at 15.2s,\tbest xgboost's error=0.1820,\tbest xgboost's error=0.1820\n[flaml.automl: 04-10 11:34:41] {994} INFO - iteration 29, current learner xgboost\n[flaml.automl: 04-10 11:34:43] {1147} INFO - at 17.4s,\tbest xgboost's error=0.1812,\tbest xgboost's error=0.1812\n[flaml.automl: 04-10 11:34:43] {994} INFO - iteration 30, current learner xgboost\n[flaml.automl: 04-10 11:34:44] {1147} INFO - at 17.8s,\tbest xgboost's error=0.1812,\tbest xgboost's error=0.1812\n[flaml.automl: 04-10 11:34:44] {994} INFO - iteration 31, current learner xgboost\n[flaml.automl: 04-10 11:34:49] {1147} INFO - at 22.8s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n[flaml.automl: 04-10 11:34:49] {994} INFO - iteration 32, current learner xgboost\n[flaml.automl: 04-10 11:34:52] {1147} INFO - at 26.2s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n[flaml.automl: 04-10 11:34:52] {994} INFO - iteration 33, current learner xgboost\n[flaml.automl: 04-10 11:34:53] {1147} INFO - at 26.9s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n[flaml.automl: 04-10 11:34:53] {994} INFO - iteration 34, current learner xgboost\n[flaml.automl: 04-10 11:35:07] {1147} INFO - at 41.0s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n[flaml.automl: 04-10 11:35:07] {994} INFO - iteration 35, current learner xgboost\n[flaml.automl: 04-10 11:35:16] {1147} INFO - at 50.1s,\tbest xgboost's error=0.1712,\tbest xgboost's error=0.1712\n[flaml.automl: 04-10 11:35:16] {994} INFO - iteration 36, current learner xgboost\n[flaml.automl: 04-10 11:35:19] {1147} INFO - at 52.9s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n[flaml.automl: 04-10 11:35:19] {994} INFO - iteration 37, current learner xgboost\n[flaml.automl: 04-10 11:35:21] {1147} INFO - at 55.1s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n[flaml.automl: 04-10 11:35:21] {994} INFO - iteration 38, current learner xgboost\n[flaml.automl: 04-10 11:35:24] {1147} INFO - at 57.9s,\tbest xgboost's error=0.1708,\tbest xgboost's error=0.1708\n[flaml.automl: 04-10 11:35:24] {1187} INFO - selected model: \n[flaml.automl: 04-10 11:35:24] {944} INFO - fit succeeded\n" } ], "source": [ @@ -263,9 +168,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "Best hyperparmeter config: {'n_estimators': 102.0, 'max_leaves': 65.0, 'min_child_weight': 128.0, 'learning_rate': 0.11244600616797214, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.869583478411346, 'reg_alpha': 0.007099803569534422, 'reg_lambda': 3.0138982869145257}\nBest r2 on validation data: 0.8292\nTraining duration of best run: 2.205 s\n" - ] + "text": "Best hyperparmeter config:{'n_estimators': 102.0, 'max_leaves': 65.0, 'min_child_weight': 128.0, 'learning_rate': 0.11244600616797214, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.869583478411346, 'reg_alpha': 0.007099803569534422, 'reg_lambda': 3.0138982869145257}\nBest r2 on validation data: 0.8292\nTraining duration of best run: 2.752 s\n" } ], "source": [ @@ -287,9 +190,7 @@ { "output_type": "execute_result", "data": { - "text/plain": [ - "" - ] + "text/plain": "" }, "metadata": {}, "execution_count": 6 @@ -328,9 +229,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "Predicted labels [139985.8 258609.5 147321.94 ... 245122.38 243654.11 271184.34]\nTrue labels [136900. 241300. 200700. ... 160900. 227300. 265600.]\n" - ] + "text": "Predicted labels[139985.8 258609.5 147321.94 ... 245122.38 243654.11 271184.34]\nTrue labels[136900. 241300. 200700. ... 160900. 227300. 265600.]\n" } ], "source": [ @@ -353,9 +252,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "r2 = 0.8324355914726785\nmse = 2214951230.2261615\nmae = 31314.021581274224\n" - ] + "text": "r2=0.8324355914726785\nmse=2214951230.2261615\nmae=31314.021581274224\n" } ], "source": [ @@ -379,9 +276,7 @@ { "output_type": "stream", "name": "stdout", - "text": [ - "{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 1, 'learning_rate': 0.1, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 1, 'learning_rate': 0.1, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 1.8630223791107017, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 1.8630223791107017, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 20.0, 'max_leaves': 4.0, 'min_child_weight': 12.035965728320889, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 20.0, 'max_leaves': 4.0, 'min_child_weight': 12.035965728320889, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 15.0, 'min_child_weight': 8.517629386811183, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 15.0, 'min_child_weight': 8.517629386811183, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 7.0, 'max_leaves': 41.0, 'min_child_weight': 36.70427494512747, 'learning_rate': 0.829848065653668, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9462273188918029, 'reg_alpha': 0.03855312356344618, 'reg_lambda': 0.11780549418358223}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 7.0, 'max_leaves': 41.0, 'min_child_weight': 36.70427494512747, 'learning_rate': 0.829848065653668, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9462273188918029, 'reg_alpha': 0.03855312356344618, 'reg_lambda': 0.11780549418358223}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 19.0, 'max_leaves': 67.0, 'min_child_weight': 50.99082180813152, 'learning_rate': 0.2715137524235054, 'subsample': 1.0, 'colsample_bylevel': 0.9209151683339658, 'colsample_bytree': 0.9707158427317836, 'reg_alpha': 0.07779983160764462, 'reg_lambda': 0.11002505912010285}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 19.0, 'max_leaves': 67.0, 'min_child_weight': 50.99082180813152, 'learning_rate': 0.2715137524235054, 'subsample': 1.0, 'colsample_bylevel': 0.9209151683339658, 'colsample_bytree': 0.9707158427317836, 'reg_alpha': 0.07779983160764462, 'reg_lambda': 0.11002505912010285}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 30.0, 'max_leaves': 236.0, 'min_child_weight': 9.853369895127964, 'learning_rate': 0.11879538341958183, 'subsample': 0.9097941662911945, 'colsample_bylevel': 0.8226978679658046, 'colsample_bytree': 0.8131809898257346, 'reg_alpha': 0.010230542165764517, 'reg_lambda': 0.2230054167461401}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 30.0, 'max_leaves': 236.0, 'min_child_weight': 9.853369895127964, 'learning_rate': 0.11879538341958183, 'subsample': 0.9097941662911945, 'colsample_bylevel': 0.8226978679658046, 'colsample_bytree': 0.8131809898257346, 'reg_alpha': 0.010230542165764517, 'reg_lambda': 0.2230054167461401}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 116.0, 'max_leaves': 181.0, 'min_child_weight': 121.26153395918108, 'learning_rate': 0.10509781099106284, 'subsample': 0.9632459632197474, 'colsample_bylevel': 0.8924959880815224, 'colsample_bytree': 0.9632899031790462, 'reg_alpha': 0.005131047214558587, 'reg_lambda': 0.5508272328115283}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 116.0, 'max_leaves': 181.0, 'min_child_weight': 121.26153395918108, 'learning_rate': 0.10509781099106284, 'subsample': 0.9632459632197474, 'colsample_bylevel': 0.8924959880815224, 'colsample_bytree': 0.9632899031790462, 'reg_alpha': 0.005131047214558587, 'reg_lambda': 0.5508272328115283}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 102.0, 'max_leaves': 65.0, 'min_child_weight': 128.0, 'learning_rate': 0.11244600616797214, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.869583478411346, 'reg_alpha': 0.007099803569534422, 'reg_lambda': 3.0138982869145257}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 102.0, 'max_leaves': 65.0, 'min_child_weight': 128.0, 'learning_rate': 0.11244600616797214, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.869583478411346, 'reg_alpha': 0.007099803569534422, 'reg_lambda': 3.0138982869145257}}\n" - ] + "text": "{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 1, 'learning_rate': 0.1, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 4, 'max_leaves': 4, 'min_child_weight': 1, 'learning_rate': 0.1, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.0009765625, 'reg_lambda': 1.0}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 1.8630223791107017, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 4.0, 'max_leaves': 4.0, 'min_child_weight': 1.8630223791107017, 'learning_rate': 1.0, 'subsample': 0.8513627344387318, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9684145930669938, 'reg_alpha': 0.001831177697321707, 'reg_lambda': 0.2790165919053839}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 20.0, 'max_leaves': 4.0, 'min_child_weight': 12.035965728320889, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 20.0, 'max_leaves': 4.0, 'min_child_weight': 12.035965728320889, 'learning_rate': 1.0, 'subsample': 0.9814787163243813, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9534346594834143, 'reg_alpha': 0.002208534076096185, 'reg_lambda': 0.5460627024738886}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 15.0, 'min_child_weight': 8.517629386811183, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 11.0, 'max_leaves': 15.0, 'min_child_weight': 8.517629386811183, 'learning_rate': 0.4743416464891248, 'subsample': 0.9233328006239466, 'colsample_bylevel': 1.0, 'colsample_bytree': 1.0, 'reg_alpha': 0.034996420228767956, 'reg_lambda': 0.6169079461473814}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 7.0, 'max_leaves': 41.0, 'min_child_weight': 36.70427494512747, 'learning_rate': 0.829848065653668, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9462273188918029, 'reg_alpha': 0.03855312356344618, 'reg_lambda': 0.11780549418358223}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 7.0, 'max_leaves': 41.0, 'min_child_weight': 36.70427494512747, 'learning_rate': 0.829848065653668, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.9462273188918029, 'reg_alpha': 0.03855312356344618, 'reg_lambda': 0.11780549418358223}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 19.0, 'max_leaves': 67.0, 'min_child_weight': 50.99082180813152, 'learning_rate': 0.2715137524235054, 'subsample': 1.0, 'colsample_bylevel': 0.9209151683339658, 'colsample_bytree': 0.9707158427317836, 'reg_alpha': 0.07779983160764462, 'reg_lambda': 0.11002505912010285}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 19.0, 'max_leaves': 67.0, 'min_child_weight': 50.99082180813152, 'learning_rate': 0.2715137524235054, 'subsample': 1.0, 'colsample_bylevel': 0.9209151683339658, 'colsample_bytree': 0.9707158427317836, 'reg_alpha': 0.07779983160764462, 'reg_lambda': 0.11002505912010285}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 30.0, 'max_leaves': 236.0, 'min_child_weight': 9.853369895127964, 'learning_rate': 0.11879538341958183, 'subsample': 0.9097941662911945, 'colsample_bylevel': 0.8226978679658046, 'colsample_bytree': 0.8131809898257346, 'reg_alpha': 0.010230542165764517, 'reg_lambda': 0.2230054167461401}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 30.0, 'max_leaves': 236.0, 'min_child_weight': 9.853369895127964, 'learning_rate': 0.11879538341958183, 'subsample': 0.9097941662911945, 'colsample_bylevel': 0.8226978679658046, 'colsample_bytree': 0.8131809898257346, 'reg_alpha': 0.010230542165764517, 'reg_lambda': 0.2230054167461401}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 116.0, 'max_leaves': 181.0, 'min_child_weight': 121.26153395918108, 'learning_rate': 0.10509781099106284, 'subsample': 0.9632459632197474, 'colsample_bylevel': 0.8924959880815224, 'colsample_bytree': 0.9632899031790462, 'reg_alpha': 0.005131047214558587, 'reg_lambda': 0.5508272328115283}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 116.0, 'max_leaves': 181.0, 'min_child_weight': 121.26153395918108, 'learning_rate': 0.10509781099106284, 'subsample': 0.9632459632197474, 'colsample_bylevel': 0.8924959880815224, 'colsample_bytree': 0.9632899031790462, 'reg_alpha': 0.005131047214558587, 'reg_lambda': 0.5508272328115283}}\n{'Current Learner': 'xgboost', 'Current Sample': 15480, 'Current Hyper-parameters': {'n_estimators': 102.0, 'max_leaves': 65.0, 'min_child_weight': 128.0, 'learning_rate': 0.11244600616797214, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.869583478411346, 'reg_alpha': 0.007099803569534422, 'reg_lambda': 3.0138982869145257}, 'Best Learner': 'xgboost', 'Best Hyper-parameters': {'n_estimators': 102.0, 'max_leaves': 65.0, 'min_child_weight': 128.0, 'learning_rate': 0.11244600616797214, 'subsample': 1.0, 'colsample_bylevel': 1.0, 'colsample_bytree': 0.869583478411346, 'reg_alpha': 0.007099803569534422, 'reg_lambda': 3.0138982869145257}}\n" } ], "source": [ @@ -406,8 +301,8 @@ "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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\n" }, "metadata": { "needs_background": "light" @@ -438,14 +333,14 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "tags": [] + }, "outputs": [ { "output_type": "stream", "name": "stdout", - "text": [ - "flaml (60s) r2 = 0.8324355914726785\n" - ] + "text": "flaml (60s) r2=0.8324355914726785\n" } ], "source": [ @@ -477,16 +372,7 @@ { "output_type": "execute_result", "data": { - "text/plain": [ - "XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n", - " colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n", - " importance_type='gain', interaction_constraints='',\n", - " learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n", - " min_child_weight=1, missing=nan, monotone_constraints='()',\n", - " n_estimators=100, n_jobs=0, num_parallel_tree=1, random_state=0,\n", - " reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,\n", - " tree_method='exact', validate_parameters=1, verbosity=None)" - ] + "text/plain": "XGBRegressor(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n importance_type='gain', interaction_constraints='',\n learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n min_child_weight=1, missing=nan, monotone_constraints='()',\n n_estimators=100, n_jobs=0, num_parallel_tree=1, random_state=0,\n reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1,\n tree_method='exact', validate_parameters=1, verbosity=None)" }, "metadata": {}, "execution_count": 14 @@ -499,14 +385,14 @@ { "cell_type": "code", "execution_count": 15, - "metadata": {}, + "metadata": { + "tags": [] + }, "outputs": [ { "output_type": "stream", "name": "stdout", - "text": [ - "default xgboost r2 = 0.8265451174596482\n" - ] + "text": "default xgboost r2=0.8265451174596482\n" } ], "source": [ @@ -514,12 +400,115 @@ "from flaml.ml import sklearn_metric_loss_score\n", "print('default xgboost r2', '=', 1 - sklearn_metric_loss_score('r2', y_pred, y_test))" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 4. Add customized XGBoost learners in FLAML\n", + "You can easily enable a custom objective function by adding a customized XGBoost learner (XGBoostEstimator for regression tasks, and XGBoostSklearnEstimator for classification tasks) in FLAML. In the following example, we show how to add such a customized XGBoostEstimator with a custom objective function. " + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "tags": [ + "outputPrepend" + ] + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": "NFO - Using RepeatedKFold\n[flaml.automl: 04-10 12:00:32] {911} INFO - Minimizing error metric: 1-r2\n[flaml.automl: 04-10 12:00:32] {930} INFO - List of ML learners in AutoML Run: ['my_xgb1', 'my_xgb2']\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 0, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.1s,\tbest my_xgb1's error=53750617.1059,\tbest my_xgb1's error=53750617.1059\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 1, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.1s,\tbest my_xgb1's error=260718.5183,\tbest my_xgb1's error=260718.5183\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 2, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.1s,\tbest my_xgb1's error=260718.5183,\tbest my_xgb1's error=260718.5183\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 3, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.2s,\tbest my_xgb1's error=2075.8695,\tbest my_xgb1's error=2075.8695\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 4, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.2s,\tbest my_xgb2's error=4.1611,\tbest my_xgb2's error=4.1611\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 5, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.2s,\tbest my_xgb1's error=2075.8695,\tbest my_xgb2's error=4.1611\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 6, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.3s,\tbest my_xgb1's error=289.1186,\tbest my_xgb2's error=4.1611\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 7, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.3s,\tbest my_xgb1's error=289.1186,\tbest my_xgb2's error=4.1611\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 8, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.3s,\tbest my_xgb1's error=289.1186,\tbest my_xgb2's error=4.1611\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 9, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.4s,\tbest my_xgb2's error=4.1611,\tbest my_xgb2's error=4.1611\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 10, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.4s,\tbest my_xgb2's error=4.1603,\tbest my_xgb2's error=4.1603\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 11, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.4s,\tbest my_xgb2's error=4.1603,\tbest my_xgb2's error=4.1603\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 12, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.5s,\tbest my_xgb1's error=7.0764,\tbest my_xgb2's error=4.1603\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 13, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.6s,\tbest my_xgb2's error=0.3612,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 14, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.6s,\tbest my_xgb1's error=7.0764,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 15, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.7s,\tbest my_xgb2's error=0.3612,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 16, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.7s,\tbest my_xgb1's error=7.0764,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 17, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.8s,\tbest my_xgb2's error=0.3612,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 18, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.8s,\tbest my_xgb1's error=7.0764,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 19, current learner my_xgb2\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.9s,\tbest my_xgb2's error=0.3612,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 20, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.9s,\tbest my_xgb1's error=3.8735,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 21, current learner my_xgb1\n[flaml.automl: 04-10 12:00:32] {1147} INFO - at 0.9s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:32] {994} INFO - iteration 22, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.0s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 23, current learner my_xgb2\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.1s,\tbest my_xgb2's error=0.3612,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 24, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.1s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 25, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.1s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 26, current learner my_xgb2\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.2s,\tbest my_xgb2's error=0.3612,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 27, current learner my_xgb2\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.3s,\tbest my_xgb2's error=0.3612,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 28, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 29, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 30, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.3612\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 31, current learner my_xgb2\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.6s,\tbest my_xgb2's error=0.2475,\tbest my_xgb2's error=0.2475\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 32, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.2475\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 33, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.7s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.2475\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 34, current learner my_xgb2\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.7s,\tbest my_xgb2's error=0.2475,\tbest my_xgb2's error=0.2475\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 35, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.8s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.2475\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 36, current learner my_xgb2\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.9s,\tbest my_xgb2's error=0.2475,\tbest my_xgb2's error=0.2475\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 37, current learner my_xgb1\n[flaml.automl: 04-10 12:00:33] {1147} INFO - at 1.9s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.2475\n[flaml.automl: 04-10 12:00:33] {994} INFO - iteration 38, current learner my_xgb2\n[flaml.automl: 04-10 12:00:34] {1147} INFO - at 2.2s,\tbest my_xgb2's error=0.1950,\tbest my_xgb2's error=0.1950\n[flaml.automl: 04-10 12:00:34] {994} INFO - iteration 39, current learner my_xgb2\n[flaml.automl: 04-10 12:00:34] {1147} INFO - at 2.3s,\tbest my_xgb2's error=0.1950,\tbest my_xgb2's error=0.1950\n[flaml.automl: 04-10 12:00:34] {994} INFO - iteration 40, current learner my_xgb1\n[flaml.automl: 04-10 12:00:34] {1147} INFO - at 2.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1950\n[flaml.automl: 04-10 12:00:34] {994} INFO - iteration 41, current learner my_xgb2\n[flaml.automl: 04-10 12:00:35] {1147} INFO - at 4.0s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:35] {994} INFO - iteration 42, current learner my_xgb2\n[flaml.automl: 04-10 12:00:39] {1147} INFO - at 7.1s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:39] {994} INFO - iteration 43, current learner my_xgb1\n[flaml.automl: 04-10 12:00:39] {1147} INFO - at 7.2s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:39] {994} INFO - iteration 44, current learner my_xgb1\n[flaml.automl: 04-10 12:00:39] {1147} INFO - at 7.2s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:39] {994} INFO - iteration 45, current learner my_xgb1\n[flaml.automl: 04-10 12:00:39] {1147} INFO - at 7.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:39] {994} INFO - iteration 46, current learner my_xgb1\n[flaml.automl: 04-10 12:00:39] {1147} INFO - at 7.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:39] {994} INFO - iteration 47, current learner my_xgb1\n[flaml.automl: 04-10 12:00:39] {1147} INFO - at 7.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:39] {994} INFO - iteration 48, current learner my_xgb2\n[flaml.automl: 04-10 12:00:44] {1147} INFO - at 12.7s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:44] {994} INFO - iteration 49, current learner my_xgb1\n[flaml.automl: 04-10 12:00:44] {1147} INFO - at 12.7s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:44] {994} INFO - iteration 50, current learner my_xgb1\n[flaml.automl: 04-10 12:00:44] {1147} INFO - at 12.8s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:44] {994} INFO - iteration 51, current learner my_xgb1\n[flaml.automl: 04-10 12:00:44] {1147} INFO - at 12.8s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:44] {994} INFO - iteration 52, current learner my_xgb1\n[flaml.automl: 04-10 12:00:44] {1147} INFO - at 12.8s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:44] {994} INFO - iteration 53, current learner my_xgb1\n[flaml.automl: 04-10 12:00:44] {1147} INFO - at 12.9s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:44] {994} INFO - iteration 54, current learner my_xgb1\n[flaml.automl: 04-10 12:00:44] {1147} INFO - at 12.9s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:44] {994} INFO - iteration 55, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.0s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 56, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.0s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 57, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.0s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 58, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.1s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 59, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.1s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 60, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.1s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 61, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.2s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 62, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.2s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 63, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.2s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 64, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 65, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 66, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 67, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 68, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 69, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 70, current learner my_xgb2\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.6s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 71, current learner my_xgb1\n[flaml.automl: 04-10 12:00:45] {1147} INFO - at 13.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:45] {994} INFO - iteration 72, current learner my_xgb2\n[flaml.automl: 04-10 12:00:47] {1147} INFO - at 15.4s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:47] {994} INFO - iteration 73, current learner my_xgb1\n[flaml.automl: 04-10 12:00:47] {1147} INFO - at 15.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:47] {994} INFO - iteration 74, current learner my_xgb1\n[flaml.automl: 04-10 12:00:47] {1147} INFO - at 15.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:47] {994} INFO - iteration 75, current learner my_xgb1\n[flaml.automl: 04-10 12:00:47] {1147} INFO - at 15.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:47] {994} INFO - iteration 76, current learner my_xgb1\n[flaml.automl: 04-10 12:00:47] {1147} INFO - at 15.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:47] {994} INFO - iteration 77, current learner my_xgb1\n[flaml.automl: 04-10 12:00:47] {1147} INFO - at 15.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:47] {994} INFO - iteration 78, current learner my_xgb2\n[flaml.automl: 04-10 12:00:48] {1147} INFO - at 16.3s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:48] {994} INFO - iteration 79, current learner my_xgb1\n[flaml.automl: 04-10 12:00:48] {1147} INFO - at 16.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:48] {994} INFO - iteration 80, current learner my_xgb1\n[flaml.automl: 04-10 12:00:48] {1147} INFO - at 16.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:48] {994} INFO - iteration 81, current learner my_xgb1\n[flaml.automl: 04-10 12:00:48] {1147} INFO - at 16.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:48] {994} INFO - iteration 82, current learner my_xgb2\n[flaml.automl: 04-10 12:00:49] {1147} INFO - at 17.5s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:49] {994} INFO - iteration 83, current learner my_xgb1\n[flaml.automl: 04-10 12:00:49] {1147} INFO - at 17.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:49] {994} INFO - iteration 84, current learner my_xgb1\n[flaml.automl: 04-10 12:00:49] {1147} INFO - at 17.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:49] {994} INFO - iteration 85, current learner my_xgb1\n[flaml.automl: 04-10 12:00:49] {1147} INFO - at 17.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:49] {994} INFO - iteration 86, current learner my_xgb1\n[flaml.automl: 04-10 12:00:49] {1147} INFO - at 17.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:49] {994} INFO - iteration 87, current learner my_xgb2\n[flaml.automl: 04-10 12:00:52] {1147} INFO - at 20.8s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:52] {994} INFO - iteration 88, current learner my_xgb1\n[flaml.automl: 04-10 12:00:52] {1147} INFO - at 20.8s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:52] {994} INFO - iteration 89, current learner my_xgb2\n[flaml.automl: 04-10 12:00:53] {1147} INFO - at 21.5s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:53] {994} INFO - iteration 90, current learner my_xgb1\n[flaml.automl: 04-10 12:00:53] {1147} INFO - at 21.5s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:53] {994} INFO - iteration 91, current learner my_xgb1\n[flaml.automl: 04-10 12:00:53] {1147} INFO - at 21.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:53] {994} INFO - iteration 92, current learner my_xgb1\n[flaml.automl: 04-10 12:00:53] {1147} INFO - at 21.6s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:53] {994} INFO - iteration 93, current learner my_xgb2\n[flaml.automl: 04-10 12:00:57] {1147} INFO - at 25.2s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:57] {994} INFO - iteration 94, current learner my_xgb1\n[flaml.automl: 04-10 12:00:57] {1147} INFO - at 25.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:57] {994} INFO - iteration 95, current learner my_xgb1\n[flaml.automl: 04-10 12:00:57] {1147} INFO - at 25.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:57] {994} INFO - iteration 96, current learner my_xgb1\n[flaml.automl: 04-10 12:00:57] {1147} INFO - at 25.3s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:57] {994} INFO - iteration 97, current learner my_xgb1\n[flaml.automl: 04-10 12:00:57] {1147} INFO - at 25.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:00:57] {994} INFO - iteration 98, current learner my_xgb2\n[flaml.automl: 04-10 12:00:59] {1147} INFO - at 27.8s,\tbest my_xgb2's error=0.1711,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:01:01] {1165} INFO - retrain my_xgb2 for 1.6s\n[flaml.automl: 04-10 12:01:01] {994} INFO - iteration 99, current learner my_xgb1\n[flaml.automl: 04-10 12:01:01] {1147} INFO - at 29.4s,\tbest my_xgb1's error=1.0036,\tbest my_xgb2's error=0.1711\n[flaml.automl: 04-10 12:01:03] {1165} INFO - retrain my_xgb1 for 1.6s\n[flaml.automl: 04-10 12:01:03] {1187} INFO - selected model: \n[flaml.automl: 04-10 12:01:03] {944} INFO - fit succeeded\n" + } + ], + "source": [ + "import numpy as np \n", + "\n", + "''' define your customized objective function '''\n", + "def logregobj(preds, dtrain):\n", + " labels = dtrain.get_label()\n", + " preds = 1.0 / (1.0 + np.exp(-preds)) # transform raw leaf weight\n", + " grad = preds - labels\n", + " hess = preds * (1.0 - preds)\n", + " return grad, hess\n", + "\n", + "''' create customized XGBoost learners class with your objective function '''\n", + "from flaml.model import XGBoostEstimator\n", + "\n", + "\n", + "class MyXGB1(XGBoostEstimator):\n", + " '''XGBoostEstimator with the logregobj function as the objective function\n", + " '''\n", + "\n", + " def __init__(self, **params):\n", + " super().__init__(objective=logregobj, **params) \n", + "\n", + "\n", + "class MyXGB2(XGBoostEstimator):\n", + " '''XGBoostEstimator with 'reg:squarederror' as the objective function\n", + " '''\n", + "\n", + " def __init__(self, **params):\n", + " super().__init__(objective='reg:gamma', **params)\n", + "\n", + "\n", + "from flaml import AutoML\n", + "automl = AutoML()\n", + "automl.add_learner(learner_name='my_xgb1', learner_class=MyXGB1)\n", + "automl.add_learner(learner_name='my_xgb2', learner_class=MyXGB2)\n", + "settings = {\n", + " \"time_budget\": 30, # total running time in seconds\n", + " \"metric\": 'r2', # primary metrics for regression can be chosen from: ['mae','mse','r2']\n", + " \"estimator_list\": ['my_xgb1', 'my_xgb2'], # list of ML learners; we tune lightgbm in this example\n", + " \"task\": 'regression', # task type \n", + " \"log_file_name\": 'houses_experiment_my_xgb.log', # flaml log file\n", + "}\n", + "automl.fit(X_train=X_train, y_train=y_train, **settings)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "tags": [] + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Best hyperparmeter config:{'n_estimators': 308.0, 'max_leaves': 106.0, 'min_child_weight': 23.491005464979025, 'learning_rate': 0.12163628930660118, 'subsample': 1.0, 'colsample_bylevel': 0.8088347023339904, 'colsample_bytree': 1.0, 'reg_alpha': 0.0017299741585977452, 'reg_lambda': 0.2417100801313181}\nBest r2 on validation data: 0.8289\nTraining duration of best run: 1.589 s\nPredicted labels[149762.39 238168. 150789.95 ... 180301.3 205223.98 262682.8 ]\nTrue labels[136900. 241300. 200700. ... 160900. 227300. 265600.]\nr2=0.8390991924308188\nmse=2126868377.371629\nmae=29728.29839662064\n" + } + ], + "source": [ + "print('Best hyperparmeter config:', automl.best_config)\n", + "print('Best r2 on validation data: {0:.4g}'.format(1-automl.best_loss))\n", + "print('Training duration of best run: {0:.4g} s'.format(automl.best_config_train_time))\n", + "\n", + "y_pred = automl.predict(X_test)\n", + "print('Predicted labels', y_pred)\n", + "print('True labels', y_test)\n", + "\n", + "from flaml.ml import sklearn_metric_loss_score\n", + "print('r2', '=', 1 - sklearn_metric_loss_score('r2', y_pred, y_test))\n", + "print('mse', '=', sklearn_metric_loss_score('mse', y_pred, y_test))\n", + "print('mae', '=', sklearn_metric_loss_score('mae', y_pred, y_test))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "name": "python3", - "display_name": "Python 3.8.0 64-bit ('blend': conda)", + "name": "python37764bitbsconda5b158f6acec0414d8c5c2401992dd9e1", + "display_name": "Python 3.7.7 64-bit ('bs': conda)", "metadata": { "interpreter": { "hash": "0cfea3304185a9579d09e0953576b57c8581e46e6ebc6dfeb681bc5a511f7544" @@ -536,7 +525,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.0" + "version": "3.7.7-final" } }, "nbformat": 4, diff --git a/test/test_automl.py b/test/test_automl.py index 5856ae496..b005d8771 100644 --- a/test/test_automl.py +++ b/test/test_automl.py @@ -7,7 +7,7 @@ from sklearn.datasets import load_boston, load_iris, load_wine from flaml import AutoML from flaml.data import get_output_from_log -from flaml.model import SKLearnEstimator +from flaml.model import SKLearnEstimator, XGBoostEstimator from rgf.sklearn import RGFClassifier, RGFRegressor from flaml import tune @@ -65,6 +65,30 @@ class MyRegularizedGreedyForest(SKLearnEstimator): return 1.0 +def logregobj(preds, dtrain): + labels = dtrain.get_label() + preds = 1.0 / (1.0 + np.exp(-preds)) # transform raw leaf weight + grad = preds - labels + hess = preds * (1.0 - preds) + return grad, hess + + +class MyXGB1(XGBoostEstimator): + '''XGBoostEstimator with logregobj as the objective function + ''' + + def __init__(self, **params): + super().__init__(objective=logregobj, **params) + + +class MyXGB2(XGBoostEstimator): + '''XGBoostEstimator with 'reg:squarederror' as the objective function + ''' + + def __init__(self, **params): + super().__init__(objective='reg:squarederror', **params) + + def custom_metric(X_test, y_test, estimator, labels, X_train, y_train, weight_test=None, weight_train=None): from sklearn.metrics import log_loss @@ -345,6 +369,36 @@ class TestAutoML(unittest.TestCase): print(automl_experiment.best_iteration) print(automl_experiment.best_estimator) + def test_regression_xgboost(self): + X_train = scipy.sparse.random(300, 900, density=0.0001) + y_train = np.random.uniform(size=300) + X_val = scipy.sparse.random(100, 900, density=0.0001) + y_val = np.random.uniform(size=100) + automl_experiment = AutoML() + automl_experiment.add_learner(learner_name='my_xgb1', learner_class=MyXGB1) + automl_experiment.add_learner(learner_name='my_xgb2', learner_class=MyXGB2) + automl_settings = { + "time_budget": 2, + "estimator_list": ['my_xgb1', 'my_xgb2'], + "task": 'regression', + "log_file_name": 'test/regression_xgboost.log', + "n_jobs": 1, + "model_history": True, + } + automl_experiment.fit(X_train=X_train, y_train=y_train, + X_val=X_val, y_val=y_val, + **automl_settings) + assert automl_experiment._state.X_val.shape == X_val.shape + print(automl_experiment.predict(X_train)) + print(automl_experiment.model) + print(automl_experiment.config_history) + print(automl_experiment.model_history) + print(automl_experiment.best_iteration) + print(automl_experiment.best_estimator) + print(automl_experiment.best_config) + print(automl_experiment.best_loss) + print(automl_experiment.best_config_train_time) + if __name__ == "__main__": unittest.main() diff --git a/test/test_xgboost2d.py b/test/test_xgboost2d.py index 03bc99268..7496e75ba 100644 --- a/test/test_xgboost2d.py +++ b/test/test_xgboost2d.py @@ -44,7 +44,7 @@ def test_simple(method=None): } try: X, y = fetch_openml(name=dataset, return_X_y=True) - except FileNotFoundError: + except ValueError: from sklearn.datasets import load_wine X, y = load_wine(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(