{ "cells": [ { "cell_type": "markdown", "id": "b1c2d3e4-f5a6-7890-bcde-fa1234567891", "metadata": {}, "source": [ "# Phase 2a Flavor-Comparison Summary\n", "\n", "This notebook summarises the Optuna hyperparameter-search results for the\n", "**Phase 2a flavor study** — comparing the four monotonic-layer flavors across\n", "the five ICML 2023 benchmark datasets. A flavor is a **mode × residual** combination:\n", "\n", "| Axis | Values |\n", "|------|--------|\n", "| mode | `absolute` (weight-magnitude constraint, Runje & Shankaranarayana 2023) · `switch` (activation-switch, Sartor et al. 2025) |\n", "| residual | `plain` (stacked Mono layers) · `residual` (dual-gated MonoResidual blocks) |\n", "\n", "The four flavors are `switch-plain`, `switch-residual`, `absolute-plain`, `absolute-residual`,\n", "each tuned independently per dataset via Optuna.\n", "\n", "For each dataset the table below shows:\n", "\n", "- One row per flavor (tuned best from Phase 2a search), with **test** mean ± std across seeds.\n", "- A `paper (CMNN) [prior protocol]` row with the number reported in Table 1 / Table 2 of\n", " Runje & Shankaranarayana (ICML 2023) — included for like-for-like comparison.\n", " These paper numbers were obtained with a test-selected protocol and are **not directly comparable** to our held-out results — see [Protocol](protocol.md).\n", "- An `XGBoost` row as a non-monotonic gradient-boosting baseline\n", " (skipped gracefully when the raw data are not present in the render environment).\n", "\n", "**Blog dataset note:** the paper and the search both optimise MSE internally, but the\n", "table displays **RMSE** for Blog to match the scale used in the paper's Table 1.\n", "\n", "Numbers come from the maintainer's search run\n", "(`benchmarks/notebooks/search-*.ipynb`), committed as\n", "`benchmarks/results/phase2/*.json`. Until those runs are executed and\n", "committed, this notebook renders a placeholder message." ] }, { "cell_type": "code", "execution_count": 1, "id": "c2d3e4f5-a6b7-8901-cdef-ab2345678902", "metadata": { "execution": { "iopub.execute_input": "2026-07-01T13:13:13.868911Z", "iopub.status.busy": "2026-07-01T13:13:13.868797Z", "iopub.status.idle": "2026-07-01T13:13:16.785120Z", "shell.execute_reply": "2026-07-01T13:13:16.784622Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "### auto (metric: mse)\n" ] }, { "data": { "text/html": [ "
| \n", " | value | \n", "std | \n", "
|---|---|---|
| method | \n", "\n", " | \n", " |
| absolute-plain | \n", "9.5191 | \n", "0.2601 | \n", "
| absolute-residual | \n", "9.9428 | \n", "0.1841 | \n", "
| switch-plain | \n", "9.5581 | \n", "0.2512 | \n", "
| switch-residual | \n", "10.4385 | \n", "0.5537 | \n", "
| paper (CMNN) [prior protocol] | \n", "8.3700 | \n", "- | \n", "
| XGBoost | \n", "12.7538 | \n", "- | \n", "