t22000t commited on
Commit
001744d
·
verified ·
1 Parent(s): 830ab24

v1: configs + metrics + GBM + figures

Browse files
.gitattributes CHANGED
@@ -33,3 +33,11 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ catboost.cbm filter=lfs diff=lfs merge=lfs -text
37
+ figures/fig_dl_02_lorenz_curves.png filter=lfs diff=lfs merge=lfs -text
38
+ figures/fig_dl_03_training_curves.png filter=lfs diff=lfs merge=lfs -text
39
+ figures/fig_dl_08_calibration_deciles.png filter=lfs diff=lfs merge=lfs -text
40
+ figures/fig_dl_09_actual_vs_predicted.png filter=lfs diff=lfs merge=lfs -text
41
+ figures/fig_dl_11_ensemble_variance.png filter=lfs diff=lfs merge=lfs -text
42
+ figures/fig_dl_12_pdp_top6.png filter=lfs diff=lfs merge=lfs -text
43
+ figures/fig_dl_17_combined_dashboard.png filter=lfs diff=lfs merge=lfs -text
README.md ADDED
@@ -0,0 +1,274 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: mit
3
+ tags:
4
+ - tabular
5
+ - regression
6
+ - catboost
7
+ - xgboost
8
+ - cann
9
+ - ft-transformer
10
+ - tabm
11
+ - localglmnet
12
+ - drn
13
+ - ensemble
14
+ - allstate
15
+ - insurance
16
+ - claims-severity
17
+ - actuarial
18
+ - kaggle
19
+ library_name: catboost
20
+ pipeline_tag: tabular-regression
21
+ metrics:
22
+ - gini
23
+ - mae
24
+ - rmse
25
+ model-index:
26
+ - name: allstate-tabular-models
27
+ results:
28
+ - task:
29
+ type: tabular-regression
30
+ name: Tabular Regression (Gamma)
31
+ dataset:
32
+ type: kaggle/allstate-claims-severity
33
+ name: Allstate Claims Severity (Kaggle competition)
34
+ metrics:
35
+ - type: gini
36
+ value: 0.3473
37
+ name: Test Gini (CANN-GBM, best)
38
+ - type: mae
39
+ value: 1158
40
+ name: Test MAE (CANN-GBM, USD)
41
+ ---
42
+
43
+ # Allstate Claims Severity - Tabular Models (8 architectures, Gamma)
44
+
45
+ Pre-trained models for the
46
+ [Allstate Claims Severity Kaggle competition](https://www.kaggle.com/c/allstate-claims-severity),
47
+ covering all **eight** architectures from the
48
+ [tabular-data-modelling-pipeline](https://github.com/timothy22000/tabular_data_modelling_pipeline)
49
+ on the full 188,318-row training set.
50
+
51
+ > **Dataset not redistributed here.** The Allstate competition rules
52
+ > restrict redistribution to non-commercial use. To reproduce these
53
+ > models, download the data from Kaggle yourself (see below) - this repo
54
+ > ships the **config file**, **pre-trained weights**, and **baseline
55
+ > metrics** only.
56
+
57
+ ## Results
58
+
59
+ All 8 architectures + NNLS-stacked ensemble, default hyperparameters (no
60
+ Optuna tuning), 3-seed ensembles per DL architecture, gamma family + log
61
+ link, 80/20 random split (seed 42).
62
+
63
+ | Rank | Model | Test Gini | Test MAE (USD) | Test RMSE | A/E ratio | n params | Training time |
64
+ |---:|---|---:|---:|---:|---:|---:|---:|
65
+ | 1 | **CANN-GBM** | **0.3473** | 1,158 | 1,839 | 1.010 | 300,519 | 14.8 min |
66
+ | - | Stacked ensemble (NNLS) | 0.3472 | **1,144** | 1,864 | 1.063 | (9 weights) | - |
67
+ | 2 | XGBoost | 0.3468 | 1,152 | 1,850 | 1.027 | 778 trees | 0.7 min |
68
+ | 3 | CatBoost | 0.3461 | 1,165 | 1,856 | 1.015 | 946 trees | 2.3 min |
69
+ | 4 | CANN | 0.3457 | 1,168 | 1,857 | 1.016 | 300,519 | 15.3 min |
70
+ | 5 | DRN | 0.3454 | 1,175 | 1,861 | **1.004** | 300,714 | 14.4 min |
71
+ | 6 | LocalGLMnet | 0.3428 | 1,197 | 1,903 | 1.008 | 193,134 | 58.4 min |
72
+ | 7 | TabM | 0.3427 | 1,393 | 2,446 | 1.553 | 1,735,956 | 52.9 min |
73
+ | 8 | FT-Transformer† | 0.0279 | 2,142 | 3,508 | 3.052 | 700,611 | 231 min |
74
+
75
+ † **FT-Transformer underfit.** Despite 188k training rows, the
76
+ transformer architecture failed to converge under default hyperparameters
77
+ within the early-stopping window. Predictions are off by a calibration
78
+ factor of ~3. Two of its three ensemble members hit a flat local minimum
79
+ near the global mean; the third descended properly but couldn't recover
80
+ the ensemble. We ship the weights for completeness but **do not
81
+ recommend using FT-T predictions from this collection** - retrain with
82
+ Optuna tuning if you need a competitive transformer baseline.
83
+
84
+ - **Test set:** 37,664 rows (20% of 188,318)
85
+ - **Target:** `loss` (claim severity, USD)
86
+ - **Loss:** Gamma deviance via `reg:gamma` (XGBoost) / `Tweedie:variance_power=1.99` (CatBoost) / explicit gamma NLL (DL)
87
+ - **Cap:** 99.5th percentile (= ~$15,200; ~940 rows winsorised)
88
+ - **Random seed:** 42
89
+
90
+ For reference, the **Kaggle competition leaderboard top scores hit MAE
91
+ ~1126** using extensive tuning + cross-validation. This pipeline's
92
+ **stacked ensemble at MAE 1,144 lands within 1.6% of that** using only
93
+ default hyperparameters - which speaks to the strength of the pipeline's
94
+ default settings rather than anything novel about the modelling.
95
+
96
+ ## How to use this collection
97
+
98
+ ### Step 1: Get the data from Kaggle
99
+
100
+ The Allstate competition data is not redistributed in this repo.
101
+
102
+ ```bash
103
+ # Set up Kaggle API auth: https://github.com/Kaggle/kaggle-api#api-credentials
104
+ # Accept competition rules at:
105
+ # https://www.kaggle.com/c/allstate-claims-severity/rules
106
+ # Then:
107
+ pip install kaggle
108
+ kaggle competitions download -c allstate-claims-severity
109
+ unzip allstate-claims-severity.zip
110
+ # Resulting train.csv is what these models were trained on
111
+ ```
112
+
113
+ Or use the pipeline's downloader (handles the above):
114
+
115
+ ```bash
116
+ git clone https://github.com/timothy22000/tabular_data_modelling_pipeline
117
+ cd tabular_data_modelling_pipeline
118
+ pip install -e ".[all]"
119
+ python scripts/download_data.py --dataset allstate --kaggle
120
+ # Saves to data/allstate.csv (188318 rows × 132 cols)
121
+ ```
122
+
123
+ ### Step 2: Load any of the pre-trained models
124
+
125
+ CatBoost:
126
+ ```python
127
+ from huggingface_hub import hf_hub_download
128
+ from catboost import CatBoostRegressor
129
+ import pandas as pd
130
+
131
+ path = hf_hub_download("t22000t/allstate-tabular-models", "catboost.cbm")
132
+ model = CatBoostRegressor()
133
+ model.load_model(path)
134
+
135
+ df = pd.read_csv("data/allstate.csv") # downloaded in Step 1
136
+ features = [f"cat{i}" for i in range(1, 117)] + [f"cont{i}" for i in range(1, 15)]
137
+ preds = model.predict(df[features])
138
+ ```
139
+
140
+ XGBoost:
141
+ ```python
142
+ from huggingface_hub import hf_hub_download
143
+ import xgboost as xgb
144
+
145
+ path = hf_hub_download("t22000t/allstate-tabular-models", "xgboost.json")
146
+ booster = xgb.Booster()
147
+ booster.load_model(path)
148
+ ```
149
+
150
+ XGBoost requires the exact preprocessing path used at training time. The
151
+ easiest way to reproduce inference is to clone the pipeline repo and run
152
+ the prediction script — see the pipeline README.
153
+
154
+ ### Step 3 (alternative): Re-run the full training
155
+
156
+ ```bash
157
+ git clone https://github.com/timothy22000/tabular_data_modelling_pipeline
158
+ cd tabular_data_modelling_pipeline
159
+ pip install -e ".[all]"
160
+ python scripts/download_data.py --dataset allstate --kaggle
161
+
162
+ OMP_NUM_THREADS=1 python train.py \
163
+ --config configs/example_allstate.py \
164
+ --input data/allstate.csv \
165
+ --skip-tuning --skip-interpretability \
166
+ --architectures catboost xgboost cann cann_gbm ft_transformer tabm localglmnet drn
167
+ ```
168
+
169
+ Expected wall-clock: 6-7 hours on Apple M-series CPU/MPS. Most of the
170
+ time is FT-Transformer (4 hours, the worst-performing architecture);
171
+ the GBMs + GLM-based DL models finish in under 90 min combined.
172
+
173
+ (`OMP_NUM_THREADS=1` is only needed on macOS arm64 to avoid an OpenMP
174
+ conflict; Linux runs are unaffected.)
175
+
176
+ ## Files
177
+
178
+ | File | What it is | Size |
179
+ |---|---|---|
180
+ | `example_allstate.py` | DatasetConfig (target=`loss`, gamma family, all 130 features) |
181
+ | `catboost.cbm` | Trained CatBoost (Tweedie:variance_power=1.99) | ~3 MB |
182
+ | `xgboost.json` | Trained XGBoost Booster (`reg:gamma`) | 5 MB |
183
+ | `cann_member{0,1,2}.pt` | CANN 3-seed ensemble | ~1.5 MB each |
184
+ | `cann_gbm_member{0,1,2}.pt` | CANN-GBM 3-seed ensemble | ~1.5 MB each |
185
+ | `ft_transformer_member{0,1,2}.pt` | FT-Transformer 3-seed ensemble (underfit - see results note) | ~3 MB each |
186
+ | `tabm_member{0,1,2}.pt` | TabM 3-seed ensemble | ~7 MB each |
187
+ | `localglmnet_member{0,1,2}.pt` | LocalGLMnet 3-seed ensemble | ~1 MB each |
188
+ | `drn_member{0,1,2}.pt` | DRN 3-seed ensemble | ~1.5 MB each |
189
+ | `evaluation_summary.csv` | Per-model train/test Gini, MAE, RMSE, A/E ratio, gamma deviance | 660 B |
190
+ | `ensemble_weights.json` | NNLS weights over the 8 base predictions |
191
+ | `dashboard_dl_models.html` | Interactive Plotly dashboard |
192
+ | `figures/fig_dl_*.png` | Standalone publication figures |
193
+ | `model_summary.json` | Structured run record (config, metrics, timing) |
194
+
195
+ Total collection size: ~31 MB.
196
+
197
+ ## Training configuration
198
+
199
+ | Setting | Value |
200
+ |---|---|
201
+ | Pipeline | [tabular-data-modelling-pipeline](https://github.com/timothy22000/tabular_data_modelling_pipeline) v0.1.0 |
202
+ | Architectures | All 8 (catboost, xgboost, cann, cann_gbm, ft_transformer, tabm, localglmnet, drn) |
203
+ | Hyperparameters | Defaults - **no Optuna tuning** |
204
+ | DL ensemble size | 3 seeds per architecture |
205
+ | Family / link | Gamma / log |
206
+ | XGBoost objective | `reg:gamma` |
207
+ | CatBoost loss | `Tweedie:variance_power=1.99` |
208
+ | Train/test split | Random 80/20, seed 42 |
209
+ | Cap percentile | 99.5 (=$15,200; ~940 winsorised) |
210
+ | Hardware | Apple M-series, MPS device for DL |
211
+ | Total wall-clock | 6h 47m (407 min) |
212
+
213
+ ## Limitations
214
+
215
+ - **Default hyperparameters only.** No Optuna tuning. Kaggle leaderboard
216
+ winners used extensive tuning + bagging - expect ~0.02-0.03 Gini lift
217
+ and another ~$10-20 MAE reduction with tuning.
218
+ - **FT-Transformer underfit** - documented above. Don't use those weights
219
+ directly; retrain with tuning if you need a transformer baseline.
220
+ - **No interpretability artefacts** (Captum attributions, partial
221
+ dependence plots) - skipped to keep wall-clock under control. Run
222
+ without `--skip-interpretability` to compute them on a re-run.
223
+ - **All 130 features anonymised.** No domain interpretability is
224
+ possible directly - `cat1`...`cat116` and `cont1`...`cont14` carry no
225
+ semantic meaning, so monotonicity constraints, base levels, and GLM
226
+ factor choices were left empty.
227
+ - **Random split, not stratified.** `loss` is heavy-tailed; a quantile-
228
+ stratified split would give a more representative test set.
229
+ - **Trained on competition `train.csv` only** (test.csv is unlabelled).
230
+ Not directly comparable to the official leaderboard.
231
+
232
+ ## Intended use
233
+
234
+ - **Baseline for actuarial / claims-severity research** on the canonical
235
+ Kaggle dataset.
236
+ - **Comparing your new tabular architecture** against eight strong baselines
237
+ on real insurance data.
238
+ - **Teaching gamma-family regression** at meaningful scale (188k rows).
239
+ - **Sanity check** for reimplementations of CatBoost/XGBoost/CANN-GBM/etc.
240
+
241
+ ## Citation
242
+
243
+ ```bibtex
244
+ @software{tabular_data_modelling_pipeline,
245
+ author = {Mun, Timothy},
246
+ title = {tabular-data-modelling-pipeline},
247
+ url = {https://github.com/timothy22000/tabular_data_modelling_pipeline},
248
+ year = {2026}
249
+ }
250
+
251
+ @misc{allstate2016,
252
+ author = {Allstate Insurance Company},
253
+ title = {Allstate Claims Severity},
254
+ year = {2016},
255
+ url = {https://www.kaggle.com/c/allstate-claims-severity},
256
+ note = {Kaggle Competition}
257
+ }
258
+ ```
259
+
260
+ Please also cite the individual architecture papers - see the
261
+ [main repo README](https://github.com/timothy22000/tabular_data_modelling_pipeline#the-eight-architectures).
262
+
263
+ ## License
264
+
265
+ MIT for the model code and pipeline. The underlying Allstate dataset is
266
+ distributed under Kaggle competition terms (**non-commercial use only**);
267
+ this repository does **not** redistribute the raw data.
268
+
269
+ ## Related
270
+
271
+ - 📦 [Pipeline: tabular-data-modelling-pipeline](https://github.com/timothy22000/tabular_data_modelling_pipeline)
272
+ - 🤖 Companion model collections (full datasets included):
273
+ - [`t22000t/house-prices-tabular-models`](https://huggingface.co/t22000t/house-prices-tabular-models) - gamma, 1.5k rows
274
+ - [`t22000t/bike-sharing-tabular-models`](https://huggingface.co/t22000t/bike-sharing-tabular-models) - poisson, 17k rows
catboost.cbm ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:34d77a256f1059a0d2e71e3c8027e9ee979683df7371d2a9843e47ef75c7ec94
3
+ size 4980160
ensemble_weights.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "glm": 0.0,
3
+ "catboost": 0.0,
4
+ "xgboost": 0.900443769806392,
5
+ "cann": 0.0,
6
+ "cann_gbm": 0.0,
7
+ "ft_transformer": 0.0,
8
+ "tabm": 0.099556230193608,
9
+ "localglmnet": 0.0,
10
+ "drn": 0.0
11
+ }
evaluation_summary.csv ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ model,gini_train,gini_test,mae,rmse,cv_rmse,ae_ratio,gamma_deviance,n_params,training_time
2
+ cann_gbm,0.3497,0.3473,1158.43,1839.36,0.605,1.0099,-10437.003248,300519,881.6
3
+ stacked_ensemble,0.3585,0.3472,1144.24,1863.54,0.613,1.0626,-10548.74513,9,0.0
4
+ xgboost,0.3579,0.3468,1152.26,1849.69,0.6084,1.0268,-10490.842521,778,38.2
5
+ catboost,0.3455,0.3461,1165.41,1855.64,0.6104,1.0151,-10545.968021,946,135.1
6
+ cann,0.3521,0.3457,1168.04,1857.14,0.6109,1.0159,-10608.506085,300519,918.3
7
+ drn,0.3503,0.3454,1174.7,1861.03,0.6122,1.0043,-10640.272218,300714,863.2
8
+ localglmnet,0.3485,0.3428,1196.51,1903.44,0.6261,1.008,-10907.573099,193134,3502.3
9
+ tabm,0.3565,0.3427,1392.63,2445.72,0.8045,1.5535,-18795.918859,1735956,3171.0
10
+ ft_transformer,0.0268,0.0279,2141.76,3507.74,1.1538,3.0518,-95665.216816,700611,13875.2
example_allstate.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Allstate Claims Severity config.
2
+
3
+ Kaggle competition:
4
+ https://www.kaggle.com/c/allstate-claims-severity
5
+
6
+ NOTE: Kaggle competition rules permit non-commercial use. You must
7
+ accept the competition terms before downloading. Set up Kaggle API
8
+ auth (~/.kaggle/kaggle.json) then run:
9
+
10
+ python scripts/download_data.py --dataset allstate --kaggle
11
+
12
+ Predicts ``loss`` (claim severity, USD) from 130 anonymised features
13
+ (116 categorical, 14 continuous, plus ``id``). Gamma + log link.
14
+ """
15
+ import os
16
+ import sys
17
+
18
+ sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
19
+
20
+ from dataset_config import DatasetConfig
21
+
22
+
23
+ # 116 categorical features named cat1..cat116
24
+ _CATEGORICAL = [f"cat{i}" for i in range(1, 117)]
25
+ # 14 continuous features named cont1..cont14
26
+ _CONTINUOUS = [f"cont{i}" for i in range(1, 15)]
27
+
28
+
29
+ config = DatasetConfig(
30
+ target_col="loss",
31
+ weight_col=None,
32
+ split_col=None,
33
+ exclude_cols=["id"],
34
+ continuous_features=_CONTINUOUS,
35
+ categorical_features=_CATEGORICAL,
36
+ derived_features={},
37
+ glm_factors=_CONTINUOUS[:4] + _CATEGORICAL[:4],
38
+ base_levels={}, # All features are anonymised - use mode levels at runtime
39
+ monotone_constraints={}, # No domain knowledge for anonymised features
40
+ family="gamma",
41
+ link="log",
42
+ prediction_floor=1.0,
43
+ cap_percentile=99.5,
44
+ )
figures/fig_dl_01_gini_comparison.png ADDED
figures/fig_dl_02_lorenz_curves.png ADDED

Git LFS Details

  • SHA256: 6bede47e66e73fa391efdce669ed8b640e743e862cdf184fd381bcddc4da342a
  • Pointer size: 131 Bytes
  • Size of remote file: 114 kB
figures/fig_dl_03_training_curves.png ADDED

Git LFS Details

  • SHA256: e47b9ee52e1cc5744ad3d8744940413bdb80350138c207d607b22725b7bb27a7
  • Pointer size: 131 Bytes
  • Size of remote file: 205 kB
figures/fig_dl_08_calibration_deciles.png ADDED

Git LFS Details

  • SHA256: 92a0608de39fe8936f8fc3eb953405a51f80b93b648d9c16c97e2835ce3a19c7
  • Pointer size: 131 Bytes
  • Size of remote file: 173 kB
figures/fig_dl_09_actual_vs_predicted.png ADDED

Git LFS Details

  • SHA256: ab5b64584de6bafbc793773fe0a1e3f91a65f586ee9200dd3375d8f1b8794e9a
  • Pointer size: 131 Bytes
  • Size of remote file: 353 kB
figures/fig_dl_10_ensemble_weights.png ADDED
figures/fig_dl_11_ensemble_variance.png ADDED

Git LFS Details

  • SHA256: 9245dc43b4d48ac53b16389c0629529287b80dcc55b1096b83dae1594c2e0eca
  • Pointer size: 131 Bytes
  • Size of remote file: 241 kB
figures/fig_dl_12_pdp_top6.png ADDED

Git LFS Details

  • SHA256: 059ec177f314c53b2a8869f47e5b6b2811d3e5a213e32028fa5eb89fe0b793c6
  • Pointer size: 131 Bytes
  • Size of remote file: 269 kB
figures/fig_dl_14_cv_stability.png ADDED
figures/fig_dl_15_model_complexity.png ADDED
figures/fig_dl_16_residual_distribution.png ADDED
figures/fig_dl_17_combined_dashboard.png ADDED

Git LFS Details

  • SHA256: 46ac79889da5c84996be622f4a8fe6eaaceadee20e80a122d3358e683a7cd1df
  • Pointer size: 131 Bytes
  • Size of remote file: 259 kB
model_summary.json ADDED
@@ -0,0 +1,417 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "pipeline": "dl",
3
+ "timestamp": "2026-06-29T00:17:06.382614",
4
+ "config": {
5
+ "seed": 42,
6
+ "n_tuning_trials": 30,
7
+ "cv_folds": 5,
8
+ "quick": false,
9
+ "architectures": [
10
+ "catboost",
11
+ "xgboost",
12
+ "cann",
13
+ "cann_gbm",
14
+ "ft_transformer",
15
+ "tabm",
16
+ "localglmnet",
17
+ "drn"
18
+ ],
19
+ "epochs": 300,
20
+ "patience": 30,
21
+ "batch_size": 512,
22
+ "n_ensemble": 3,
23
+ "catboost_iterations": 2000,
24
+ "mono_lambda": 0.1
25
+ },
26
+ "best_model": "cann_gbm",
27
+ "double_lift_vs_glm": 1.702,
28
+ "glm_gini": 0.20404812297155872,
29
+ "models": {
30
+ "catboost": {
31
+ "metrics_train": {
32
+ "split": "train",
33
+ "n": 150568,
34
+ "n_params": 0,
35
+ "gini": 0.345528,
36
+ "mae": 1131.0156,
37
+ "rmse": 1698.0539,
38
+ "cv_rmse": 0.564025,
39
+ "ae_ratio": 1.006675,
40
+ "mean_actual": 3010.6021,
41
+ "mean_predicted": 2990.6396,
42
+ "gamma_deviance": -41071.576052
43
+ },
44
+ "metrics_test": {
45
+ "split": "test",
46
+ "n": 37750,
47
+ "n_params": 0,
48
+ "gini": 0.346107,
49
+ "mae": 1165.4098,
50
+ "rmse": 1855.6354,
51
+ "cv_rmse": 0.610391,
52
+ "ae_ratio": 1.015143,
53
+ "mean_actual": 3040.0753,
54
+ "mean_predicted": 2994.727,
55
+ "gamma_deviance": -10545.968021
56
+ },
57
+ "training_time": 135.13505816459656,
58
+ "best_params": {},
59
+ "n_params": 946
60
+ },
61
+ "xgboost": {
62
+ "metrics_train": {
63
+ "split": "train",
64
+ "n": 150568,
65
+ "n_params": 0,
66
+ "gini": 0.357934,
67
+ "mae": 1051.5452,
68
+ "rmse": 1574.9415,
69
+ "cv_rmse": 0.523132,
70
+ "ae_ratio": 1.015477,
71
+ "mean_actual": 3010.6021,
72
+ "mean_predicted": 2964.716,
73
+ "gamma_deviance": -36639.871748
74
+ },
75
+ "metrics_test": {
76
+ "split": "test",
77
+ "n": 37750,
78
+ "n_params": 0,
79
+ "gini": 0.346848,
80
+ "mae": 1152.2617,
81
+ "rmse": 1849.6937,
82
+ "cv_rmse": 0.608437,
83
+ "ae_ratio": 1.026758,
84
+ "mean_actual": 3040.0753,
85
+ "mean_predicted": 2960.8489,
86
+ "gamma_deviance": -10490.842521
87
+ },
88
+ "training_time": 38.16731905937195,
89
+ "best_params": {
90
+ "max_depth": 6,
91
+ "eta": 0.05,
92
+ "n_estimators": 1000,
93
+ "reg_alpha": 0.1,
94
+ "reg_lambda": 1.0,
95
+ "subsample": 0.85,
96
+ "colsample_bytree": 0.85,
97
+ "early_stopping_rounds": 50
98
+ },
99
+ "n_params": 778
100
+ },
101
+ "cann": {
102
+ "metrics_train": {
103
+ "split": "train",
104
+ "n": 150568,
105
+ "n_params": 0,
106
+ "gini": 0.352146,
107
+ "mae": 1099.7003,
108
+ "rmse": 1648.2283,
109
+ "cv_rmse": 0.547475,
110
+ "ae_ratio": 1.007827,
111
+ "mean_actual": 3010.6021,
112
+ "mean_predicted": 2987.2207,
113
+ "gamma_deviance": -38722.049985
114
+ },
115
+ "metrics_test": {
116
+ "split": "test",
117
+ "n": 37750,
118
+ "n_params": 0,
119
+ "gini": 0.345682,
120
+ "mae": 1168.0435,
121
+ "rmse": 1857.1383,
122
+ "cv_rmse": 0.610886,
123
+ "ae_ratio": 1.015883,
124
+ "mean_actual": 3040.0753,
125
+ "mean_predicted": 2992.5446,
126
+ "gamma_deviance": -10608.506085
127
+ },
128
+ "training_time": 918.2992675304413,
129
+ "best_params": {
130
+ "hidden_dims": [
131
+ 128,
132
+ 64
133
+ ],
134
+ "dropout": 0.2,
135
+ "lr": 0.001,
136
+ "weight_decay": 0.001
137
+ },
138
+ "n_params": 300519,
139
+ "n_ensemble_members": 3,
140
+ "best_epochs": [
141
+ 11,
142
+ 10,
143
+ 16
144
+ ]
145
+ },
146
+ "cann_gbm": {
147
+ "metrics_train": {
148
+ "split": "train",
149
+ "n": 150568,
150
+ "n_params": 0,
151
+ "gini": 0.349731,
152
+ "mae": 1110.4079,
153
+ "rmse": 1662.8043,
154
+ "cv_rmse": 0.552316,
155
+ "ae_ratio": 1.001403,
156
+ "mean_actual": 3010.6021,
157
+ "mean_predicted": 3006.3831,
158
+ "gamma_deviance": -39527.447422
159
+ },
160
+ "metrics_test": {
161
+ "split": "test",
162
+ "n": 37750,
163
+ "n_params": 0,
164
+ "gini": 0.347317,
165
+ "mae": 1158.4278,
166
+ "rmse": 1839.3574,
167
+ "cv_rmse": 0.605037,
168
+ "ae_ratio": 1.009918,
169
+ "mean_actual": 3040.0753,
170
+ "mean_predicted": 3010.2214,
171
+ "gamma_deviance": -10437.003248
172
+ },
173
+ "training_time": 881.5784821510315,
174
+ "best_params": {
175
+ "hidden_dims": [
176
+ 128,
177
+ 64
178
+ ],
179
+ "dropout": 0.2,
180
+ "lr": 0.001,
181
+ "weight_decay": 0.001
182
+ },
183
+ "n_params": 300519,
184
+ "n_ensemble_members": 3,
185
+ "best_epochs": [
186
+ 11,
187
+ 10,
188
+ 8
189
+ ]
190
+ },
191
+ "ft_transformer": {
192
+ "metrics_train": {
193
+ "split": "train",
194
+ "n": 150568,
195
+ "n_params": 0,
196
+ "gini": 0.026796,
197
+ "mae": 2113.1906,
198
+ "rmse": 3373.5147,
199
+ "cv_rmse": 1.120545,
200
+ "ae_ratio": 3.022223,
201
+ "mean_actual": 3010.6021,
202
+ "mean_predicted": 996.155,
203
+ "gamma_deviance": -374262.364084
204
+ },
205
+ "metrics_test": {
206
+ "split": "test",
207
+ "n": 37750,
208
+ "n_params": 0,
209
+ "gini": 0.027911,
210
+ "mae": 2141.7642,
211
+ "rmse": 3507.7363,
212
+ "cv_rmse": 1.153832,
213
+ "ae_ratio": 3.051806,
214
+ "mean_actual": 3040.0753,
215
+ "mean_predicted": 996.156,
216
+ "gamma_deviance": -95665.216816
217
+ },
218
+ "training_time": 13875.232380867004,
219
+ "best_params": {
220
+ "d_model": 64,
221
+ "n_heads": 4,
222
+ "n_layers": 3,
223
+ "dropout": 0.1,
224
+ "ffn_factor": 4,
225
+ "lr": 0.0005,
226
+ "weight_decay": 0.0001
227
+ },
228
+ "n_params": 700611,
229
+ "n_ensemble_members": 3,
230
+ "best_epochs": [
231
+ 0,
232
+ 0,
233
+ 206
234
+ ]
235
+ },
236
+ "tabm": {
237
+ "metrics_train": {
238
+ "split": "train",
239
+ "n": 150568,
240
+ "n_params": 0,
241
+ "gini": 0.35646,
242
+ "mae": 1331.63,
243
+ "rmse": 2243.6843,
244
+ "cv_rmse": 0.745261,
245
+ "ae_ratio": 1.541768,
246
+ "mean_actual": 3010.6021,
247
+ "mean_predicted": 1952.6945,
248
+ "gamma_deviance": -64699.206702
249
+ },
250
+ "metrics_test": {
251
+ "split": "test",
252
+ "n": 37750,
253
+ "n_params": 0,
254
+ "gini": 0.342687,
255
+ "mae": 1392.6337,
256
+ "rmse": 2445.7232,
257
+ "cv_rmse": 0.804494,
258
+ "ae_ratio": 1.553486,
259
+ "mean_actual": 3040.0753,
260
+ "mean_predicted": 1956.9371,
261
+ "gamma_deviance": -18795.918859
262
+ },
263
+ "training_time": 3170.9919884204865,
264
+ "best_params": {
265
+ "n_members": 8,
266
+ "hidden_dims": [
267
+ 128,
268
+ 64
269
+ ],
270
+ "dropout": 0.2,
271
+ "lr": 0.001,
272
+ "weight_decay": 0.0001
273
+ },
274
+ "n_params": 1735956,
275
+ "n_ensemble_members": 3,
276
+ "best_epochs": [
277
+ 99,
278
+ 112,
279
+ 0
280
+ ]
281
+ },
282
+ "localglmnet": {
283
+ "metrics_train": {
284
+ "split": "train",
285
+ "n": 150568,
286
+ "n_params": 0,
287
+ "gini": 0.348541,
288
+ "mae": 1134.7861,
289
+ "rmse": 1701.8198,
290
+ "cv_rmse": 0.565276,
291
+ "ae_ratio": 1.000483,
292
+ "mean_actual": 3010.6021,
293
+ "mean_predicted": 3009.1502,
294
+ "gamma_deviance": -40236.055751
295
+ },
296
+ "metrics_test": {
297
+ "split": "test",
298
+ "n": 37750,
299
+ "n_params": 0,
300
+ "gini": 0.342759,
301
+ "mae": 1196.5108,
302
+ "rmse": 1903.4373,
303
+ "cv_rmse": 0.626115,
304
+ "ae_ratio": 1.00803,
305
+ "mean_actual": 3040.0753,
306
+ "mean_predicted": 3015.8595,
307
+ "gamma_deviance": -10907.573099
308
+ },
309
+ "training_time": 3502.3410143852234,
310
+ "best_params": {
311
+ "hidden_dims": [
312
+ 64,
313
+ 32
314
+ ],
315
+ "dropout": 0.3,
316
+ "coeff_reg": 1.0,
317
+ "lr": 0.0001,
318
+ "weight_decay": 0.01
319
+ },
320
+ "n_params": 193134,
321
+ "n_ensemble_members": 3,
322
+ "best_epochs": [
323
+ 125,
324
+ 138,
325
+ 147
326
+ ]
327
+ },
328
+ "drn": {
329
+ "metrics_train": {
330
+ "split": "train",
331
+ "n": 150568,
332
+ "n_params": 0,
333
+ "gini": 0.350309,
334
+ "mae": 1110.3369,
335
+ "rmse": 1659.1151,
336
+ "cv_rmse": 0.551091,
337
+ "ae_ratio": 0.99661,
338
+ "mean_actual": 3010.6021,
339
+ "mean_predicted": 3020.8442,
340
+ "gamma_deviance": -39493.391953
341
+ },
342
+ "metrics_test": {
343
+ "split": "test",
344
+ "n": 37750,
345
+ "n_params": 0,
346
+ "gini": 0.345411,
347
+ "mae": 1174.6962,
348
+ "rmse": 1861.0343,
349
+ "cv_rmse": 0.612167,
350
+ "ae_ratio": 1.004295,
351
+ "mean_actual": 3040.0753,
352
+ "mean_predicted": 3027.0735,
353
+ "gamma_deviance": -10640.272218
354
+ },
355
+ "training_time": 863.1595370769501,
356
+ "best_params": {
357
+ "hidden_dims": [
358
+ 128,
359
+ 64
360
+ ],
361
+ "dropout": 0.2,
362
+ "kl_alpha": 0.1,
363
+ "lr": 0.001,
364
+ "weight_decay": 0.0001
365
+ },
366
+ "n_params": 300714,
367
+ "n_ensemble_members": 3,
368
+ "best_epochs": [
369
+ 10,
370
+ 15,
371
+ 9
372
+ ]
373
+ },
374
+ "stacked_ensemble": {
375
+ "metrics_train": {
376
+ "split": "train",
377
+ "n": 150568,
378
+ "n_params": 0,
379
+ "gini": 0.358506,
380
+ "mae": 1045.0175,
381
+ "rmse": 1588.6652,
382
+ "cv_rmse": 0.52769,
383
+ "ae_ratio": 1.051201,
384
+ "mean_actual": 3010.6021,
385
+ "mean_predicted": 2863.963,
386
+ "gamma_deviance": -36577.102398
387
+ },
388
+ "metrics_test": {
389
+ "split": "test",
390
+ "n": 37750,
391
+ "n_params": 0,
392
+ "gini": 0.347197,
393
+ "mae": 1144.2383,
394
+ "rmse": 1863.5389,
395
+ "cv_rmse": 0.612991,
396
+ "ae_ratio": 1.062628,
397
+ "mean_actual": 3040.0753,
398
+ "mean_predicted": 2860.9032,
399
+ "gamma_deviance": -10548.74513
400
+ },
401
+ "training_time": 0.034310340881347656,
402
+ "best_params": {},
403
+ "n_params": 9,
404
+ "base_weights": {
405
+ "glm": 0.0,
406
+ "catboost": 0.0,
407
+ "xgboost": 0.900443769806392,
408
+ "cann": 0.0,
409
+ "cann_gbm": 0.0,
410
+ "ft_transformer": 0.0,
411
+ "tabm": 0.099556230193608,
412
+ "localglmnet": 0.0,
413
+ "drn": 0.0
414
+ }
415
+ }
416
+ }
417
+ }
xgboost.json ADDED
The diff for this file is too large to render. See raw diff