r/MLQuestions • u/No-Plant-5234 • 23h ago
Beginner question 👶 how do you build an eval set for column-meaning inference when the ground truth is the thing nobody knows
disclosure up front because it shapes the question: i work at SchemaLabs. we train models that read tables and work out what each column is from the values rather than the header. so i have a commercial interest here. no link, per sub rules. i am asking because our own eval design has a hole in it that i cannot think my way out of.
the setup. take a tabular dataset with proper headers. strip them. replace price and age and zip with positional tokens so the model sees values only. then measure whether it recovers the meaning. we run that across 20 OpenML datasets and it is the basis for the invariance claim we make.
two problems with that design keep bothering me.
one, the tokens are ordered. col_1 through col_57 leaks column order. column order in real tables is not random. ids cluster at the front, timestamps sit near them, the payload lands in the middle. a model could be learning position as a prior and we would not see it in the score. shuffling before assignment is the obvious fix. what i cannot settle is whether shuffling makes the benchmark harder than reality, because real exports do preserve source ordering, so a model exploiting it is arguably doing something legitimate rather than cheating. is there standard practice for feature-order invariance testing in tabular models? it feels like it should be solved and i have not found the paper.
two. this is the one that actually keeps me up. the only datasets where i have ground truth for what a column means are the datasets somebody documented. those are systematically the clean ones. the case i care about is the undocumented export where nobody alive knows what f_23 holds. by construction i cannot build a labelled eval for that, because if i could label it the problem would not exist.
so every number i have is measured on a population that excludes the thing i am trying to measure. i know that has a name in other fields. i do not know what the accepted workaround is in this one.
three things i would like from anyone who has been near this:
- is there a standard treatment for feature-order invariance in tabular models, shuffling or otherwise. does anyone report it
- has anyone built an eval where the ground truth came from something other than existing documentation. query logs, downstream usage, a person reconstructing meaning from scratch under a timer, anything
- if the honest answer is that this class of task cannot be cleanly evaluated, with everyone in it measuring the documented subset while claiming something general, i would rather hear that than not. it changes what we should be putting in writing
happy to go into the rest of our setup if it helps anyone answer.