How we measure which engine wins
MatrixAI Studio can pick between several training engines for a model. This page shows exactly how that choice is checked: 40 public datasets, 7 engines, one rule sealed before a single number was measured.
Measured September 16, 2026 · 3,479 attempts · 17.18 h of wall clock
What "the best engine" means here
On each dataset, every engine is trained with its default settings — no hyperparameter search — and scored with the metric that task uses. The engine with the best average is the winner of that dataset; any other engine that lands within a fixed number of points of that winner still counts as having met the bar there. A crash or a timeout counts as a lost dataset for that engine, not as a zero.
the engine with the best mean over the fits on THAT dataset, excluding the dummy baseline; a failure (timeout/crash) counts as a lost dataset for that engine
| Task | Metric |
|---|---|
| Binary classification | AUROC |
| Multiclass classification | accuracy or macro-F1 |
| Regression | R² |
kc2 — Binary classification
Worked from the same JSON this whole page reads — nothing here is typed by hand. · 522×22 · OpenML ↗
| Engine | Score | Distance from best | Meets the bar? |
|---|---|---|---|
| scikit-learn HGB★ | 0.913 | 0 | Yes |
| MatrixAI dense net(ours) | 0.908 | 0.51 | Yes |
| CatBoost | 0.903 | 1.02 | Yes |
| XGBoost | 0.891 | 2.27 | No |
| LightGBM | 0.888 | 2.55 | No |
| scikit-learn (linear) | 0.862 | 5.18 | No |
On kc2, the best engine was scikit-learn HGB, at 0.913. Of the 6 engines that competed, 3 stayed within 2 points of the best and so meet the rule on this dataset.
40 datasets × 7 engines
Filter by task or by dataset size. On a phone the table keeps its own horizontal scroll — the page itself never scrolls sideways.
- ✓ meets the bar (within 2 points of the best on that dataset)
- ★ best engine on that dataset
- — crashed or timed out (counted as a lost dataset, not a zero)
| Dataset | Task | Size | Baseline (dummy) | CatBoost | LightGBM | MatrixAI dense net | scikit-learn HGB | scikit-learn (linear) | XGBoost |
|---|---|---|---|---|---|---|---|---|---|
| APSFailure ↗ | Binary classification | Large | 0.5 | 0.995 ✓ ★ | 0.993 ✓ | 0.992 ✓ | 0.992 ✓ | 0.978 ✓ | 0.995 ✓ |
| Allstate_Claims_Severity ↗ | Regression | Large | -0 | 0.561 ✓ | 0.562 ✓ | — | 0.562 ✓ | 0.509 | 0.568 ✓ ★ |
| Amazon_employee_access ↗ | Binary classification | Large | 0.5 | 0.776 | 0.823 ✓ ★ | 0.632 | 0.82 ✓ | 0.545 | 0.818 ✓ |
| Internet-Advertisements ↗ | Binary classification | Medium | 0.5 | 0.98 ✓ | 0.976 ✓ | 0.964 | 0.975 ✓ | 0.988 ✓ ★ | 0.978 ✓ |
| KDDCup09_appetency ↗ | Binary classification | Large | 0.5 | 0.817 ✓ ★ | 0.736 | — | 0.775 | 0.596 | 0.752 |
| Moneyball ↗ | Regression | Small | -0.002 | 0.933 ✓ | 0.933 ✓ | 0.752 | 0.934 ✓ ★ | 0.873 | 0.925 ✓ |
| PhishingWebsites ↗ | Binary classification | Medium | 0.5 | 0.994 ✓ | 0.994 ✓ ★ | 0.987 ✓ | 0.994 ✓ | 0.98 ✓ | 0.994 ✓ |
| SEALEDSatellite ↗ | Binary classification | Medium | 0.5 | 0.947 | 0.971 ✓ | 0.985 ✓ ★ | 0.973 ✓ | 0.976 ✓ | 0.956 |
| adult ↗ | Binary classification | Large | 0.5 | 0.924 ✓ | 0.929 ✓ | 0.892 | 0.929 ✓ ★ | 0.882 | 0.928 ✓ |
| balance-scale ↗ | Multiclass classification | Small | 0.46 | 0.901 ✓ ★ | 0.872 | 0.892 ✓ | 0.863 | 0.865 | 0.866 |
| SEALEDbanknote-authentication ↗ | Binary classification | Small | 0.5 | 1 ✓ | 1 ✓ | 0.999 ✓ | 1 ✓ ★ | 1 ✓ | 1 ✓ |
| breast-w ↗ | Binary classification | Small | 0.5 | 0.99 ✓ | 0.988 ✓ | 0.992 ✓ | 0.987 ✓ | 0.993 ✓ ★ | 0.987 ✓ |
| climate-model-simulation-crashes ↗ | Binary classification | Small | 0.5 | 0.96 ✓ ★ | 0.949 ✓ | 0.888 | 0.936 | 0.949 ✓ | 0.937 |
| connect-4 ↗ | Multiclass classification | Large | 0.658 | 0.759 | 0.792 ✓ | 0.768 | 0.806 ✓ ★ | 0.662 | 0.78 |
| diabetes ↗ | Binary classification | Small | 0.5 | 0.799 ✓ | 0.764 | 0.8 ✓ ★ | 0.757 | 0.784 ✓ | 0.775 |
| SEALEDdiamonds ↗ | Regression | Large | -0 | 0.979 ✓ | 0.981 ✓ | 0.966 ✓ | 0.981 ✓ | 0.918 | 0.981 ✓ ★ |
| elevators ↗ | Regression | Medium | -0.002 | 0.845 ✓ | 0.857 ✓ ★ | 0.839 ✓ | 0.856 ✓ | 0.204 | 0.855 ✓ |
| house_16H ↗ | Regression | Large | -0 | 0.646 ✓ | 0.662 ✓ ★ | 0.409 | 0.662 ✓ | 0.264 | 0.658 ✓ |
| house_prices_nominal ↗ | Regression | Small | -0 | 0.916 ✓ ★ | 0.902 ✓ | -80.556 | 0.903 ✓ | 0.886 | 0.913 ✓ |
| house_sales ↗ | Regression | Large | -0.001 | 0.851 ✓ | 0.868 ✓ | 0.626 | 0.87 ✓ ★ | 0.681 | 0.862 ✓ |
| jm1 ↗ | Binary classification | Medium | 0.5 | 0.737 ✓ | 0.743 ✓ | 0.712 | 0.744 ✓ ★ | 0.556 | 0.742 ✓ |
| kc2 ↗ | Binary classification | Small | 0.5 | 0.903 ✓ | 0.888 | 0.908 ✓ | 0.913 ✓ ★ | 0.862 | 0.891 |
| SEALEDkr-vs-kp ↗ | Binary classification | Medium | 0.5 | 0.999 ✓ | 1 ✓ ★ | 0.999 ✓ | 1 ✓ | 0.994 ✓ | 1 ✓ |
| SEALEDletter ↗ | Multiclass classification | Medium | 0.041 | 0.842 | 0.952 ✓ | 0.816 | 0.953 ✓ ★ | 0.761 | 0.939 ✓ |
| mfeat-factors ↗ | Multiclass classification | Small | 0.1 | 0.958 | 0.977 ✓ | 0.962 ✓ | 0.977 ✓ | 0.979 ✓ ★ | 0.97 ✓ |
| micro-mass ↗ | Multiclass classification | Small | 0.106 | 0.794 | 0.864 ✓ | 0.534 | 0.865 ✓ ★ | 0.815 | 0.838 |
| okcupid-stem ↗ | Multiclass classification | Large | 0.716 | 0.756 ✓ ★ | 0.755 ✓ | — | 0.755 ✓ | 0.737 ✓ | 0.755 ✓ |
| optdigits ↗ | Multiclass classification | Medium | 0.101 | 0.967 | 0.988 ✓ | 0.978 ✓ | 0.989 ✓ ★ | 0.969 ✓ | 0.981 ✓ |
| ozone-level-8hr ↗ | Binary classification | Medium | 0.5 | 0.917 ✓ | 0.934 ✓ | 0.911 | 0.935 ✓ | 0.918 ✓ | 0.937 ✓ ★ |
| pc1 ↗ | Binary classification | Small | 0.5 | 0.811 ✓ ★ | 0.781 | 0.697 | 0.78 | 0.601 | 0.781 |
| SEALEDpc3 ↗ | Binary classification | Small | 0.5 | 0.81 ✓ ★ | 0.802 ✓ | 0.757 | 0.802 ✓ | 0.743 | 0.807 ✓ |
| pc4 ↗ | Binary classification | Small | 0.5 | 0.936 ✓ ★ | 0.931 ✓ | 0.904 | 0.932 ✓ | 0.867 | 0.928 ✓ |
| pendigits ↗ | Multiclass classification | Medium | 0.104 | 0.971 ✓ | 0.989 ✓ ★ | 0.983 ✓ | 0.988 ✓ | 0.941 | 0.985 ✓ |
| SEALEDpol ↗ | Regression | Medium | -0 | 0.974 ✓ | 0.982 ✓ ★ | 0.977 ✓ | 0.982 ✓ | 0.457 | 0.982 ✓ |
| sick ↗ | Binary classification | Medium | 0.5 | 0.995 ✓ ★ | 0.994 ✓ | 0.932 | 0.994 ✓ | 0.959 | 0.992 ✓ |
| SEALEDsplice ↗ | Multiclass classification | Medium | 0.519 | 0.944 ✓ | 0.956 ✓ | 0.935 | 0.955 ✓ | 0.93 | 0.957 ✓ ★ |
| us_crime ↗ | Regression | Small | -0 | 0.722 ✓ ★ | 0.715 ✓ | 0.667 | 0.715 ✓ | 0.704 ✓ | 0.716 ✓ |
| wilt ↗ | Binary classification | Medium | 0.5 | 0.998 ✓ ★ | 0.996 ✓ | 0.728 | 0.997 ✓ | 0.984 ✓ | 0.998 ✓ |
| wine_quality ↗ | Regression | Medium | -0 | 0.417 ✓ | 0.43 ✓ | 0.32 | 0.429 ✓ | 0.304 | 0.431 ✓ ★ |
| yeast ↗ | Multiclass classification | Small | 0.312 | 0.604 ✓ ★ | 0.579 | 0.565 | 0.576 | 0.551 | 0.579 |
Datasets marked SEALED are the portfolio’s final exam: they are never used to pick or tune anything, only to grade the result once, at the end.
Baseline is a dummy predictor shown for reference only — it never competes for "the best" and is excluded from every verdict below.
An engine passes when it meets the bar on at least 80% of the 40 datasets. The baseline is excluded — it never competes.
| Engine | Datasets met | Fraction | Passes? |
|---|---|---|---|
| LightGBM | 34/40 | 85% | Passes |
| scikit-learn HGB | 34/40 | 85% | Passes |
| CatBoost | 33/40 | 82.5% | Passes |
| XGBoost | 30/40 | 75% | Does not pass |
| scikit-learn (linear) | 15/40 | 37.5% | Does not pass |
Placed next to the verdict on purpose, with the same weight — not a footnote at the bottom of the page.
- The intervals measure how much the result changes when RETRAINING on other splits of the same dataset, not how the engine would do on another data sample.
- “2 points” does not weigh the same in every metric: 2 points of R² are not 2 of AUROC.
- Each engine runs with its default values, with no hyperparameter search: with a search, the order could change.
- A one-dataset difference in the count does not tell two engines apart.
It does not pass the rule yet: it meets the bar on 15/40 (37.5%) in this pass, and on 16/40 in the latest measurement. What it already does well: it was the best engine on 2 datasets here, and on 4 in the latest measurement. We keep measuring it with the same rule as everyone else, and publish its figure as it is.
It is not what the Studio gives you by default: a study makes it compete, and it only wins when it is the best on that dataset.
Is this run anchorable to one exact commit?
All 3479 attempts in this run were measured with the matrixAI and matrixai-engines repositories CLEAN — each one comes from an exact commit, so this run is fully anchorable to one specific point in history.
| Measured | Attempts | Repository state |
|---|---|---|
| September 15, 2026 | 3,479 | clean |
The protocol and the raw artefact
This page does not redistribute the datasets — each row of the table links out to its own page on OpenML. What you can download here is the sealed protocol and the raw measurement artefact this whole page reads, each with the digest that proves it has not been touched.
The protocol sealed before measuring: what counts as "the best", the point bar, the pass fraction, the metric per task.
Protocol version: 101-C1.v1 · September 6, 2026
SHA-256 ea50ca482a815627364b3439bfcf10e78295a13ae5f821219d0fb40329e65301protocolo_exploratorio.json ↓
The raw result of the run: every attempt, every engine, every dataset — this is what the JSON on this page is generated from.
SHA-256 3646af61b155c1321ad3fd71f25e9300ed9797b9b5dec0f37ed835cd835ecf48pasada_amplia_101_c5_resultado.json ↓
Nothing on this page redistributes a dataset — every dataset name links to its own OpenML page.
The most recent measurement, kept apart
Everything above — the table, the verdict, the downloads — comes from the run that backs the current engine portfolio, because it is fully anchorable to one exact commit. This run is newer and was the one that decided a portfolio change on 2026-09-22, but part of it was measured with a dirty working tree, so it is shown here on its own rather than mixed into the numbers above.
Measured September 22, 2026 · 3,479 attempts · 5.82 h of wall clock
110 of the 3479 attempts in this run were measured with the matrixAI tree dirty after a restart — they do not come from a clean commit, so this run is NOT fully anchorable to one exact point in history.
| Engine | Datasets met | Fraction | Passes? |
|---|---|---|---|
| LightGBM | 33/40 | 82.5% | Passes |
| scikit-learn HGB | 33/40 | 82.5% | Passes |
| CatBoost | 29/40 | 72.5% | Does not pass |
| XGBoost | 29/40 | 72.5% | Does not pass |
| scikit-learn (linear) | 14/40 | 35% | Does not pass |
An engine passes when it meets the bar on at least 80% of the 40 datasets. The baseline is excluded — it never competes.
Our dense net, in development: 16/40, and the best engine on 4 datasets.
Protocol version: 113-C0.v2 · September 21, 2026
SHA-256 1b4e902e61e06edcfda8e9f4ccef1232a233d46718089c5f0a2f814feb9dc878protocolo_exploratorio_v2.json ↓
SHA-256 600ebdaad2ca206eac148e25c38b57add8ad2d64652fafca3d8226758010c0d0pasada_v2_113_resultado.json ↓
Every number on this page is read live from src/datos/fase0_publico.json, copied byte-for-byte from the artefact MatrixAI generates from the sealed Phase 0 run — nothing here is typed by hand.