Is the Model Wrong, or Is the Record Wrong?
A suspicious label deserves a closer look. Use out-of-fold disagreements to organise review while preserving original records and the boundary around the final assessment.
14 sections · 3 questions · 1 coding challenge
The arrow keys move between sections too.
Looking for Problems in the Labels
BOTIE
Our review queue is a simpler teaching rule, not an implementation of Confident Learning. It flags strong disagreements for investigation. The original observation and an independent review remain the evidence for any correction.
Sources for this history
The Fault Label Describes the Wrong Inspection
Botie repeatedly predicts a fault for a pump labelled healthy. We inspect the record and discover that its label came from an earlier visit. Changing model settings would not fix that timestamp.
Other disagreements will be genuine model mistakes. We need a review process that can tell those cases apart without treating the model’s own opinion as the answer.
Invented records with supplied out-of-fold positive scores. The browser does not infer true labels or run a label-noise estimation method.
Step 1 of 2
The same disagreement can have different causes
The score concerns the probability of a fault; the label records the reviewed outcome.
| Record | Recorded label | Out-of-fold score | What still needs checking |
|---|---|---|---|
| A | healthy (0) | 0.95 | Does the label belong to this visit? |
| B | healthy (0) | 0.96 | Did the model confuse harmless vibration with a fault? |
A
- Recorded label
- healthy (0)
- Out-of-fold score
- 0.95
- What still needs checking
- Does the label belong to this visit?
B
- Recorded label
- healthy (0)
- Out-of-fold score
- 0.96
- What still needs checking
- Did the model confuse harmless vibration with a fault?
Step 2 of 2
Keep an audit trail for a correction
A reviewer needs the original evidence and a defined target.
- 1
Flag
- Preserve original record
- Request evidence review
- 2
Decision
- Correct, retain or unresolved
- Record reviewer and reason
- 3
Revision
- Version the dataset
- Refit and evaluate under the declared split
A suspicion needs evidence
Eligibility is determined before disagreement strength. The output requests review without treating the model as an answer key.
Request review without rewriting the answer
Keep eligible development records before applying the disagreement threshold.
BOTIE
Record IDs needing review
- 0A
Follow the operations
1. Label review records
[ { "id": "A", "split": "development", "label": 0, "p": 0.95 }, { "id": "B", "split": "development", "label": 1, "p": 0.8 } ]2. Keep development records for review
[ { "id": "A", "split": "development", "label": 0, "p": 0.95 }, { "id": "B", "split": "development", "label": 1, "p": 0.8 } ]3. Disagreement threshold
0.9
4. Queue strong label disagreements
- 0A
5. Result
- 0A
This simple rule is not Confident Learning, an automatic correction method or proof that unflagged records are correct.
1. Check the target and the join first
A record may join a sensor reading to the wrong pump, an inspection to the wrong day, or a label to an event that was unavailable when prediction was supposed to happen. Inspect identifiers and timestamps before diagnosing model capacity.
Write the target in operational terms. “Fault present at inspection” differs from “maintenance performed within a month”. A team’s maintenance decisions may depend on the existing model, so those labels can reflect the policy as well as the condition.
An accurate calculation on misjoined records still answers the wrong question.
2. Look for duplicates across the split
Exact duplicates can place the same example in training and assessment. Near duplicates, repeated patients and multiple views of one event can do the same less obviously. Group related observations before splitting when they share the information the model could memorise.
Deduplication itself needs a definition. Two pumps with equal temperature readings are not automatically duplicate events. Preserve event identity and domain context instead of dropping equal numeric rows indiscriminately.
A data audit can change the split plan, not only the label values.
3. Use predictions made without fitting that record
A model fitted on an example can memorise its label, making agreement uninformative. Out-of-fold predictions come from models that did not train on the evaluated fold. They provide a more useful disagreement signal for development review.
Respect group and time boundaries inside those folds. Keep label review on the development side; do not feed final test answers back into training while retaining the old test score as independent evidence.
For a recorded label 0: disagreement score = p(fault)
For a recorded label 1: disagreement score = 1 - p(fault)An overconfident model can produce strong but mistaken flags. The queue is a prioritisation aid.
Check yourself
Questions on Parts 1 to 3
Question 1 of 2
That score proves the label should be changed to fault.
Consider this example.
A model predicts fault with probability 0.98 for a record labelled healthy.4. Make the review rule explicit
Our teaching rule flags eligible records when disagreement confidence reaches a threshold above one half. Threshold inclusion is deliberate: a score equal to the threshold enters the queue.
Review records in a stable order and keep unique IDs. A real queue might combine disagreement with group coverage or expected correction value. Sample some unflagged cases too; otherwise you may never see errors the model confidently agrees with.
Record A: label 0, score 0.95, threshold 0.90 → review
Record B: label 1, score 0.95, threshold 0.90 → no disagreement flagThe rule does not estimate how many labels are wrong, and unflagged does not mean verified.
5. Keep correction provenance and unresolved cases
A reviewer should see the evidence needed for the target, with a written annotation policy. Record the previous label, new label if any, reason and data version. Where feasible, independent or blinded review reduces the chance of simply agreeing with the model.
Some cases remain ambiguous. Keep that status rather than manufacturing certainty. Agreement rates between reviewers, adjudication rules and sampling design help explain what the revised labels mean.
If a final evaluation label really is wrong, correct it transparently and report the changed assessment version. Do not silently tune on it and continue calling it untouched.
6. Filter records without mutating them
The review function returns IDs only. It should not rewrite labels, reorder source records or substitute predictions. That separation makes an accidental automatic relabelling harder to hide.
The challenge adds eligibility, threshold and duplicate checks around this inspection.
Read the evidence behind one flag
This example computes a disagreement score without changing its record.
record = {"id": "P4", "label": 1, "p": 0.08}
disagreement = 1 - record["p"]
print(round(disagreement, 2))
print(record["label"])0.92
1The label remains 1. A score of 0.92 requests review; it is not a replacement label.
7. Test the dataset revision as a change
After corrections, refit the same procedure first so the comparison can isolate the data revision. Record any additional feature or algorithm change separately. Keep prior difficult cases in regression tests and assess on evidence outside the correction process.
Report how many records were reviewed, corrected, retained and unresolved. A model may improve because labels became more consistent, because the task definition changed, or because difficult cases were removed. Those explanations have different implications.
A cleaner development dataset is useful. It still needs an assessment that represents the intended use.
Check yourself
Questions on Parts 1 to 7
Question 1 of 1
What should the audit retain?
Use the information below.
A reviewer cannot determine whether the inspection label applies to the current visit.Try it with Botie
Build with Botie
Write and run Python