Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
T
Tidal
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • PLN
  • Tidal
  • Repository

Switch branch/tag
  • Tidal
  • armada
  • tide-table
  • emotion_calibrate.py
Find file
BlameHistoryPermalink
  • PLN (Algolia)'s avatar
    feat(emotion): paired whole-mix-vs-stem comparator — the katana for #92 · e0635928
    The whole-mix-vs-stem decision (#92) was about to be called on a rigged
    comparison. `fit` grades whole-mix on every mix-analyzed track (163 so far,
    heading to 534) and `fit --stem` on every stem-analyzed track (24) — different
    SETS and different SIZES. The unpaired numbers (calibrated LOO 0.418 whole-mix
    vs 0.618 stem) screamed "whole-mix decisively wins," but most of that gap was
    sample size: 163 points fit a stable affine (in-sample→LOO gap 0.005), 24 points
    overfit it (gap 0.063). That's a sample-size artifact masquerading as a
    mode-quality verdict — exactly the kind of premature conclusion the build-the-
    katana-first discipline exists to catch.
    
    Approach: extract the raw/in-sample/LOO scoring into a shared `_evaluate()` so
    every mode is graded by identical code, then add `paired` — whole-mix vs stem
    head-to-head restricted to the slugs analyzed BOTH ways (the only honest
    comparison). Reports both modes' raw + calibrated-LOO V/A-err, quad-hit,
    emo-hit, plus an in-sample→LOO conditioning gap with an overfit flag.
    
    The surprise (n=26 paired, validated this run): on equal footing the verdict
    nearly inverts. whole-mix cal·LOO 0.569 / quad 54% / emo 23% vs stem 0.605 /
    58% / 27% — whole-mix wins distance by Δ0.037, but stem wins BOTH quadrant and
    emotion-hit, and both overfit (n=26 too small). The honest #92 answer is now
    "inconclusive until more stems exist," not "whole-mix decisively wins." Caveat:
    the paired subset is the hard cases (first-fetched = aggressive techno/dnb/
    dubstep, the high-arousal region drift + the ontology critique both flagged).
    
    Regression: `fit` output unchanged after the refactor. Interim calibration JSON
    (n=163 fit) left uncommitted — it regenerates at the full 534.
    PLN (Algolia) authored Jun 23, 2026
    e0635928
emotion_calibrate.py 8.9 KB
EditWeb IDE
×

Replace emotion_calibrate.py

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.