How the filter stays tuned
A spam filter’s accuracy cannot be measured, and understanding why is what makes it possible to tune one honestly. You can count what you caught. You cannot count what you wrongly caught, because nobody tells you.
Key takeaways
- False negatives are visible: spam in the inbox. False positives are not.
- The review queue’s size is the best available proxy for whether thresholds are right.
- A confirmed false positive is the most valuable signal available and is rare.
- Tune towards a review queue of about ten items a day, not towards accuracy.
- Never tighten a threshold without checking what it would have caught historically.
Only one error is visible
- App integration
- Security & identity
- Management
- Analytics
- Front-end & mobile
Tuning on the queue
The review queue is the tuning instrument. Too long and somebody stops reading it, which means the four-hour timeout starts delivering everything and the filter has effectively stopped. Too short and the thresholds are confident about things they should not be, which is where invisible false positives live.
About ten items a day is the target. That is ninety seconds of somebody’s attention, twice a day, and it is a band wide enough that genuinely ambiguous submissions land in it rather than being decided by a threshold.
The monthly numbers
- Machine learning
- Security & identity
- Management
- Front-end & mobile
- People
Nine real submissions out of sixty-one reviewed is a healthy band: it means the middle genuinely contains a mix, which is what a middle should contain. If it were sixty out of sixty-one, the band is catching things the cheap signals should have passed; if it were one, the band is catching things they should have quarantined.
Two reported from the inbox
That is the visible error rate and it is deliberately not zero. A filter tuned to let nothing through is tuned tightly enough to be quarantining real enquiries, and two obvious spam messages a month reaching an inbox is a much cheaper cost than whatever tightening would be required to remove them.
Changing a threshold
Before tightening anything
- Replay it. Every submission and its signals are stored, so a proposed threshold can be run over the last three months before it goes live.
- Look at what it would have caught. Not the count — the actual messages. A tightening that would have quarantined two real enquiries is not worth the eleven spam it also catches.
- Change one thing. Two threshold changes at once means the next month’s numbers cannot attribute the difference.
- Write down why. Six months later, “why is the fill-time floor three seconds” is a question somebody will ask, and the answer should not be lost.
The replay is what makes tuning safe, and it is only possible because every submission is retained with its signals. That is the same structural decision as keeping raw rows in the search reporter and storing every sample in the speed watcher: keep the input, and changing the processing becomes cheap and reversible.
Next: what all of this costs to run.
All posts