v1 :: seniority classifier (eval={'eval_accuracy': 0.8897, 'eval_f1_macro': 0.8311, 'eval_f1_weighted': 0.8925, 'eval_f1_macro_ci95': [0.7805, 0.8698]})
Browse files
README.md
CHANGED
|
@@ -125,28 +125,34 @@ clf.predict(["Senior ML Engineer at Stripe"])
|
|
| 125 |
|
| 126 |
|
| 127 |
|
| 128 |
-
## Independent-labeler eval (
|
| 129 |
|
| 130 |
To check the classifier didn't just memorize the regex, we sampled 230
|
| 131 |
-
diverse rows
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
|---|---|---|
|
| 140 |
-
| n | 117 |
|
| 141 |
-
| accuracy | 0.
|
| 142 |
-
| f1_macro | **0.
|
| 143 |
|
| 144 |
-
These numbers come from a
|
| 145 |
they're a stronger signal of generalization than the regex-agreement
|
| 146 |
-
metric above. Caveats: Claude's labels
|
| 147 |
-
in-vocab filter excludes the regex-default rows
|
| 148 |
-
is
|
| 149 |
-
|
| 150 |
|
| 151 |
## Citation
|
| 152 |
|
|
|
|
| 125 |
|
| 126 |
|
| 127 |
|
| 128 |
+
## Independent-labeler eval (reviewed gold)
|
| 129 |
|
| 130 |
To check the classifier didn't just memorize the regex, we sampled 230
|
| 131 |
+
diverse rows per classifier and ran a two-pass Claude labeling protocol:
|
| 132 |
+
**5 first-pass labelers in parallel** (each labeling one shard with
|
| 133 |
+
strict taxonomy rules), then **5 second-pass reviewers in parallel**
|
| 134 |
+
(each shown the first-pass proposal + the trained classifier's
|
| 135 |
+
prediction, with `default-to-accept` plus override criteria for
|
| 136 |
+
title-vs-label contradictions). 8/460 rows were overridden by the
|
| 137 |
+
reviewers; 1 was skipped as genuinely ambiguous. The resulting test set
|
| 138 |
+
lives at `eval/seniority_test.jsonl` with full provenance per row.
|
| 139 |
+
|
| 140 |
+
The classifier is scored on the subset of rows whose final label is one
|
| 141 |
+
it was trained to predict (`117/230` rows — the rest are the
|
| 142 |
+
regex-default labels we drop from training, mostly `mid`).
|
| 143 |
+
|
| 144 |
+
| Metric | All in-vocab | LLM high-confidence subset |
|
| 145 |
|---|---|---|
|
| 146 |
+
| n | 117 | 117 |
|
| 147 |
+
| accuracy | 0.812 | 0.812 |
|
| 148 |
+
| f1_macro | **0.8116** (95% CI [0.7347, 0.8729]) | **0.8116** |
|
| 149 |
|
| 150 |
+
These numbers come from a different labeler than the training data, so
|
| 151 |
they're a stronger signal of generalization than the regex-agreement
|
| 152 |
+
metric above. Caveats: Claude's labels (even after review) are not human
|
| 153 |
+
gold; the in-vocab filter excludes the regex-default rows; the
|
| 154 |
+
classifier is a specialist over the explicit labels, not a 9-way
|
| 155 |
+
general-purpose classifier.
|
| 156 |
|
| 157 |
## Citation
|
| 158 |
|