Welcome back: what a1 installed
Quick recap of the equipment you arrived with. Every yes/no model makes four kinds of outcome, and at Lumen the two mistakes carry different prices: a wasted outreach costs ~$2 (marketing's pain), a missed buyer costs ~$74 (finance's pain) - a 37x asymmetry. You learned the one question that exposes any single number ("which mistakes does this hide?") and you dragged the threshold yourself, watching precision and recall trade against each other while accuracy stayed serene. Tonight we finish that thought: WHO should set the dial, WHAT should be optimized, and what it costs - in exact dollars, on the live evaluator - when a team optimizes the wrong thing.
The threshold nobody owns 15 min live
The threshold is a business decision wearing a math costume. A model does not decide who gets flagged - it outputs a score, and the threshold decides which scores count as "yes." Set it low and you flag more people: recall rises, precision falls, marketing pays. Set it high and the reverse: finance pays. A model therefore does not HAVE one precision and one recall - it has a curve of operating points, and someone picks the point. In most organizations that someone is a data scientist accepting the default of 0.5, a value scikit-learn's own documentation calls "most certainly not ideal for most use cases."
LiveA curve of operating points, one silent default7 min▶
When a team reports "precision 21.5%, recall 63.6%," they are reporting one point on a curve - the point their threshold happens to sit on. Move the threshold and both numbers move, in opposite directions. So the honest questions are never "what is the precision?" but:
- What does the whole curve look like? The curve is the model's actual capability; any single P/R pair is one chosen point on it.
- Which point are we operating at, and who chose it? If the answer is "0.5, the default," then the trade between finance's pain and marketing's pain was made by a library setting.
- What would it take to move? Nothing - no retraining, one number. The threshold is the cheapest model improvement that exists, which is why leaving it at the default is so expensive.
scikit-learn is blunt about this in its threshold-tuning guide: the 0.5 cutoff is "most certainly not ideal for most use cases," and the library now ships a tool that tunes the threshold against a business scorer instead. The toolmakers have already conceded the point; most org charts have not caught up.
LiveElkan's rule: the cost ratio picks the point5 min▶
So where SHOULD the dial sit? A 2001 paper by Charles Elkan, "The Foundations of Cost-Sensitive Learning," settled it, and the leader version is one sentence: the right threshold follows from the cost ratio of the two mistakes. Price a missed buyer and a false alarm, and the optimal operating point is determined - it stops being a matter of taste.
- At Lumen the ratio is roughly 37 to 1 ($74 miss vs $2 false alarm), which pushes the optimal threshold far LOWER than 0.5: when misses are 37x dearer, you flag generously and tolerate noise.
- scikit-learn's own cost-sensitive example works exactly this way - a credit-risk case where one error is priced at five times the other, citing Elkan - and its tooling tunes the threshold to the money, not to a metric.
- Which means the real deliverable from the business side is not a metric target. It is two prices. Give your teams the cost of each mistake and the threshold stops being anyone's opinion.
Self-studyDials you already own without knowing it3 min read▶
Once you see the threshold, you see it everywhere. Each of these is the same dial - two mistake types with different prices, one cut line, and usually no named owner:
- Credit and risk approvals - approve a bad applicant vs decline a good one. The cut score is a threshold; ask who priced the two errors.
- Fraud and security alerts - a missed incident vs an analyst hour burned per false alarm. Alert fatigue is a threshold set too low, silence is one set too high.
- Content moderation - harmful content left up vs legitimate content taken down. Both mistakes make headlines; the dial decides which one you read about.
- Hiring screens - a strong candidate filtered out vs an interview slot spent on a weak one. Whoever set that cutoff made a talent-strategy decision.
- Lumen's outreach - tonight's case: a $74 miss vs a $2 nudge, 37 to 1.
The homework asks you to pick ONE of these in your own org and find the dial's owner. Expect the search to be short and the answer to be "nobody" - that is the finding.
Goodhart for leaders 8 min live
Goodhart's law: when a measure becomes a target, it stops being a good measure. Here is the mechanism in evaluation: every summary metric hides a cost assumption. F1 - the metric teams most love to optimize - silently assumes both mistake types cost the same. At Lumen they differ by 37x. So a team maximizing F1 is optimizing for a fictional business where a $2 error and a $74 error are equally painful - and the harder they optimize, the more precisely they hit the wrong target.
LiveThe governance fix: one optimizing number, everything else floors5 min▶
Andrew Ng's doctrine for structuring ML projects is the cleanest fix a leader can mandate: split metrics into one optimizing metric and several satisficing metrics - thresholds to clear, not scores to maximize.
- The optimizing number should be the money (or the mission equivalent): expected cost or value per decision, using your two prices from Part 1.
- Everything else becomes a floor or a ceiling: recall at least X so finance's exposure is capped, precision at least Y so marketing's budget survives, response time under Z. Pass/fail, not leaderboards.
- This kills the Goodhart game structurally: nobody can win by polishing a proxy, because the only number being maximized is the one wired to the P&L.
One caution to carry forward: even the money number on an offline slice is a proxy for what happens in production - Google's "Rules of Machine Learning" makes this point as Rule #39, and it is the plot of a5 and a6. Tonight's fix is still the right first move: proxy-for-money beats proxy-for-nothing.
The churn team that polished F1 for a quarter. A subscription business ran a churn model whose team proudly pushed F1 up week after week, tuning at the default threshold. Finance saw nothing move. The reason sat in plain sight: a retention offer cost $8, a churned customer cost $310 - a cost ratio near 39x that F1 was structurally blind to. When someone finally optimized the threshold against those two prices, the model flagged far more customers, F1 got WORSE on the dashboard, and retention economics visibly improved within a month. The metric had been the target; the money had been the measure nobody watched.
LiveHow to spot Goodhart running in your own dashboards3 min▶
Four signs, any one of which deserves a meeting. Two or more and you are almost certainly funding metric-polishing:
- The model metric improves for months while the business line it serves stays flat. The churn story, generalized - the proxy and the money have decoupled.
- Nobody can state the metric's cost assumption. Ask "what does this metric assume the two mistakes cost?" F1 assumes 1 to 1; if nobody knows that, nobody checked whether it is true.
- The metric was chosen because it is standard, not because it matches your prices. "Everyone reports F1" is a fashion statement, not an evaluation design.
- The metric IS the team's target or OKR. That is Goodhart's precondition by definition - the fix is to move the target to the money and demote the metric to a floor.
The $704 button ★ 20 min · everyone presses both
Same evaluator as a1 - Lumen's model on a live 2,000-session slice - but tonight you press the two buttons. One asks the machine to find the threshold with the best F1. The other asks for the threshold with the lowest total error cost, using the $2 / $74 price list. They disagree, they disagree by real money, and the ugly one wins.
Press Optimize F1. The threshold jumps to 0.61, F1 hits 0.706, and the metric tiles look magnificent. Now read the cost tile: $1,850. Remember that number.
Press Optimize $. The threshold drops to 0.22, cost falls to $1,146 - and F1 collapses to 0.161. Sit with the discomfort: the best business point has the ugliest metrics on the card. A dashboard sorted by F1 would rank the cheapest operating point dead last.
Do the arithmetic out loud: $1,850 minus $1,146 is $704 - the Goodhart gap. That is what optimizing the team's favorite metric costs on this one slice, versus optimizing the money. Nobody did anything wrong; the metric's hidden equal-costs assumption did it.
Now change the FN cost box - try a world where a missed buyer is worth much less - and press Optimize $ again. Watch the optimal threshold move. The model never changed; your business assumptions did, and the decision followed. Say the lesson: the cost matrix IS the decision. The metrics are commentary.
The scoreboard, for the record - three operating points of the SAME model on the SAME 2,000 sessions. Read the last two rows together: the row a dashboard would celebrate and the row the business should choose are different rows.
| Operating point | Threshold | Precision | Recall | F1 | Error cost |
|---|---|---|---|---|---|
| Default (nobody chose) | 0.50 | 21.5% | 63.6% | 0.321 | $1,736 |
| Optimize F1 (the dashboard's favorite) | 0.61 | 100.0% | 54.5% | 0.706 | $1,850 |
| Optimize $ (the business point) | 0.22 | 8.8% | 100.0% | 0.161 | $1,146 |
One more paradox rides along: at the F1-optimal point, accuracy reads 98.8% - a1's serene headline number, still calm, still uninformative, now decorating the operating point that costs $704 too much.
Three questions for any team quoting F1 5 min read
F1 is not a bad metric - it is a metric with an undisclosed opinion (equal costs) that is almost never true. When a team or a vendor leads with it, these three questions surface the opinion. Good teams enjoy answering them; the silence after each one is also an answer.
Self-studyThe three questions, with what each one exposes4 min read▶
- 1 · "What cost ratio does your problem actually have?" F1 assumes 1 to 1. If the honest answer is 37 to 1 - or anything far from even - the metric and the business are optimizing different worlds. A team that has never priced the two mistakes cannot know whether F1 is fine or catastrophic.
- 2 · "Who picked the threshold?" If the answer is "the default" or a name from the data team alone, the finance-vs-marketing trade from Part 1 was made without either party in the room. The dial needs an owner who knows both prices.
- 3 · "What does the cost-optimal point look like - and why aren't we there?" Tonight you saw it: at Lumen it looks terrible on metrics (F1 0.161) and saves $704 per slice. Sometimes there is a real reason not to operate there - capacity limits, customer-experience floors. Fine: those are satisficing constraints, and they should be stated, not hidden inside a metric choice.
Notice these are governance questions, not math questions. You are not auditing formulas - you are auditing whether a business decision was made by someone authorized to make it.
This week, in your own meetings ◐ 15 min total
- Pick one deployed classifier in your org and ask who owns its threshold. Not who set it - who OWNS it, the way someone owns a pricing decision. If the question has no answer, you found this session's gap in the wild.
- Deliver two prices to one team: what a miss costs, what a false alarm costs, even rough. Ask them to report the cost-optimal operating point next to their usual metrics from now on.
- Find one F1 (or any single blended score) in a report and run the three questions from Part 3. Write down which of the three produced the longest silence.
- Draft your one-optimizing-number memo: for one model you sponsor, name the money metric to maximize and two or three floors that protect stakeholders. One page. It becomes your template in a6.
Official sources covered
This session teaches the decision core of the cost-sensitive evaluation canon - scikit-learn's threshold guidance, Elkan's cost-ratio result, and Ng's metric doctrines - in leader language, with the live evaluator doing the math. This page covers:
Three questions before you go 🎯 ◐ 90 seconds
1 · On Lumen's evaluator, the F1-optimal threshold costs $704 more than the cost-optimal one. Why do the two buttons disagree?
Same model, same 2,000 sessions, same curve - only the target differs. F1's hidden equal-costs assumption points it at a fictional business; the cost optimizer uses the real $2 / $74 prices, lands at threshold 0.22, and looks ugly (F1 0.161) while saving $704.
2 · In Ng's satisficing-vs-optimizing split, which number should a leader make THE optimizing metric?
One optimizing number keeps iteration fast and Goodhart-proof - provided it is wired to the business. Everything else (recall floor, precision floor, latency ceiling) is pass/fail. Optimizing several numbers at once means optimizing none; optimizing F1 means optimizing an equal-costs fiction.
3 · Who should own the threshold on a production classifier?
The threshold trades finance's pain against marketing's pain, so it needs an owner with both prices in hand - and Elkan's rule makes the setting follow from the cost ratio once they are. The 0.5 default is not a standard; sklearn's own docs call it "most certainly not ideal for most use cases."