IAT 461 Β· Data Science for Human-Centered Systems

Was the model right? It depends what you mean by right.

Imagine a tool that reads Twitch chat and classifies each message as abusive or fine. Before we judge the model, you'll try moderating yourself β€” then watch how human labels become training data, and how no classifier ever copies them perfectly.

Scroll down. Label a few messages first, then follow the diagrams as each idea comes into view.


#stream-chat Β· your shift1 / 6
st
streamer_ana
thanks for the sub! welcome to the chat πŸ’œ

How would you classify this message?

0 of 6 decided
You're the moderator. For each message, decide whether to label it abusive or fine. No right answers are shown yet β€” just your judgment.
Part 1 Β· You are the moderator

Try classifying messages yourself

Before any model enters the picture, someone has to decide what counts as abuse. On the left you're on moderation duty: read each message and click Flag as abusive or Allow as fine. There's no answer key yet β€” just your judgment.

Take your time on the borderline ones. Trash-talk, sarcasm, and context all matter. If two moderators can disagree, imagine training a machine from their labels.

What you just did is how models get built

When you finish, we'll show your calls next to labels from a panel of human reviewers β€” the same kind of labels used to train a moderation model. The model's job is to reproduce those human decisions on new messages it has never seen.

Labels are human, not magical
A classifier doesn't learn β€œthe truth.” It learns patterns that predict what humans would have labeled. It will approximate those labels, miss edge cases, and inherit the reviewers' blind spots and inconsistencies. It can never fully replicate human judgment β€” which is exactly why we need careful evaluation afterward.
#stream-chat1 / 6
Inputmessage
xX
xX_no_scope: uninstall the game you trash, nobody wants you here
Model output vs reviewer label
Model
Abusive
Ground truth
Abusive
OutcomeTrue Positive
TPCaught abuse

Abusive β€” and the model labeled it abusive. A clean catch.

TP1
FN0
FP0
TN0
Input β†’ model output vs reviewer label β†’ outcome.
Part 2 Β· The four outcomes

Now watch a model sort the same kinds of message

You've seen how subjective moderation can be. Evaluation asks a sharper question: given a set of reviewer labels we treat as ground truth, how often does the model's call match?

Step through the messages on the left with Next. Each one flows through a small diagram: input (the message) β†’ model (abusive or fine) β†’ outcome (compared to the reviewer label).

Four boxes, and only four

Keep clicking. Notice that every message lands in one of just four boxes: the model can be right in two ways (caught abuse, correctly fine) and wrong in two ways (false alarm, missed abuse).

The same fine-but-labeled-abusive trash-talk and the same hostile-but-missed jab are the kinds of mistakes that decide whether a moderation tool is actually any good.

And it doesn't matter whether the model is a giant language model, a list of banned words, or a coin flip. From the outside it does one thing: it sorts messages into predicted abusive and predicted fine.

Why this is model-agnostic
Everything on this page works for any classifier. Evaluation never asks how a model decided β€” only how often its decisions land in each of those four boxes.
The whole idea in one picture

Truth on top, the model's call on the bottom

Here's the move that makes evaluation click. Put the truth at the top β€” abusive on one side, fine on the other. Put the model's classification at the bottom β€” predicted abusive on one side, predicted fine on the other. Then let every message flow from where it really belongs to where the model sent it.

Messages that flow straight down were judged correctly. Messages that cross over are mistakes. That's the entire story β€” and it's exactly what the next diagram shows.

Accuracy
84%
(TP+TN) / all
Precision
70%
TP / predicted abusive
Recall
80%
TP / actual abuse
Top: every message, split by the hidden truth (abusive or fine). Bottom: the model's classification β€” predicted abusive or predicted fine. The four ribbons are the only four things that can happen β€” two correct (straight down), two mistakes (crossing over).
Part 3 Β· The flow

Watch the messages sort themselves

Each dot is a message leaving its true group at the top and landing in the bucket the model chose at the bottom. The width of every ribbon is just how many messages took that route.

Two ribbons run nearly straight down β€” those are the messages the model got right. Two ribbons cross through the middle β€” those are the two ways it can be wrong.

The only four things that can happen

Cross β€œwhat's true” with β€œwhat the model said” and you get exactly four outcomes:

  • Caught abuse β€” abusive, and labeled abusive. (True Positive)
  • Missed abuse β€” abusive, but labeled fine. (False Negative)
  • False alarm β€” fine, but labeled abusive anyway. (False Positive)
  • Correctly fine β€” fine, and labeled fine. (True Negative)

Every number you're about to meet is built from just these four counts.

Part 3 Β· Accuracy

Accuracy: how often, overall, was it right?

The simplest score. Add up everything the model got right β€” the two straight-down ribbons β€” and divide by all the messages.

accuracy = (caught + correctly fine) / everything

Here that's a healthy-looking 84%. But hold that number lightly β€” it quietly mixes two very different kinds of success, and it can hide a lot.

Part 3 Β· Precision

Precision: when it predicts abusive, can you trust it?

Now look only at the predicted abusive bucket β€” both ribbons feeding it. Some of those were real abuse; some were false alarms on perfectly fine messages.

precision = caught abuse / everything predicted abusive

Precision asks: of everything the model labeled abusive, what fraction deserved it? Low precision means lots of false alarms β€” innocent users getting muted.

Part 3 Β· Recall

Recall: how much of the abuse did it catch?

Now look only at the actually abusive group at the top β€” both ribbons leaving it. Some got caught; some slipped through.

recall = caught abuse / all real abuse

Recall asks: of all the abuse that truly existed, what fraction did we catch? Low recall means lots of missed abuse β€” toxic messages reaching the channel.

The key idea
Precision watches the bottom-left bucket (β€œwhen it says abusive, is that trustworthy?”). Recall watches the top-left group (β€œdid we miss anything?”). Same TP on top of each fraction β€” different denominators, different questions.
The catch

Why a 95%-accurate model can be useless

Suppose abuse is rare β€” say 5 messages in every 100. A lazy model that never labels anything abusive is right about the other 95 every time. That's 95% accuracy while catching exactly zero abusive messages.

Accuracy got fooled because it rewards the easy, common case. Precision and recall don't β€” they keep their eyes on the abuse, which is the thing we actually care about. That's why you almost never report accuracy alone.

The trade-off you can't escape
Push to catch more abuse (raise recall) and you'll label more fine messages as abusive too (precision drops). Tighten up to avoid false alarms (raise precision) and more abuse slips by (recall drops). Where you land isn't a math question β€” it's a values question about which mistake hurts more.
Part 4 Β· Your turn

Build your own scenarios

Drag the sliders or pick a preset. The Sankey and confusion matrix stay in sync β€” tap a metric on either side to see which cells and ribbons it uses.

Drag the sliders β€” watch the ribbons move. Tap a metric card to highlight which outcomes it uses.
Predicted abusive
Predicted fine
Actually abusive
TP
48
caught
FN
12
missed
Actually fine
FP
21
false alarm
TN
119
correctly fine
Specificity
85%
F1 score
0.74
Predicted abusive
69
Missed abuse
12
The same four counts as a grid. Tap a metric tab β€” the Sankey highlights the matching ribbons.
Wrapping up

The whole idea, step by step

  1. 1Moderation starts with human judgment β€” and people disagree on borderline messages.
  2. 2Models learn to reproduce human labels, not some perfect objective truth, and they never match perfectly.
  3. 3Evaluation compares a model's calls to those labels: abusive or fine Γ— predicted abusive or predicted fine β†’ four outcomes.
  4. 4Accuracy is the share it got right overall β€” but it's easily fooled when one class is rare.
  5. 5Precision asks: when it predicts abusive, is that trustworthy? (watch the predicted-abusive bucket).
  6. 6Recall asks: of all real abuse, how much did we catch? (watch the abusive group).
  7. 7You can't max out both at once β€” choosing the balance is a values call, not a formula.