score
A score question places each case on an ordered scale of likelihood. The answer is a level,
such as likely, beside the chance p it was cut from. Like Jev's Score, the levels are ordered
and you can name them. Unlike Jev's Score, a level is not a model's rating against a rubric. It
is the case's chance, cut at points you choose.
When to use
Use score when people or rules act on named bands. For example: "call every account that is
likely or very likely to churn", or "hold any loan rated high for review". To use the number
itself, use yesno.
Request
"risk": {"type": "score", "outcome_column": "churned", "outcome_is_desirable": false}
With your own levels:
"risk": {"type": "score", "outcome_column": "defaulted", "outcome_is_desirable": false,
"levels": ["low", "medium", "high"], "cuts": [0.2, 0.6]}
| Field | |
|---|---|
type |
"score" |
outcome_column |
the yes/no column to learn |
levels |
optional; 2 to 10 distinct names, lowest first. Default unlikely, possible, likely, very_likely. |
cuts |
one fewer than levels, strictly ascending, each between 0 and 1. Default 0.25, 0.5, 0.75. Required when levels is not the default four. |
A case whose p equals a cut goes to the higher level. With the defaults, unlikely is below
0.25 and very_likely is 0.75 and above.
Answer
"risk": {
"type": "score", "state": "answered",
"cases": [{"entity_id": "cust_0001", "p": 0.7005, "level": "likely", "reasons": ["…"]}]
}
Each case carries level, the p it was cut from, and the same reasons a yesno would carry.
Everything else is as in Answers.
Writing score questions
- Set the cuts where your actions change. If the retention team acts above 0.6, make 0.6 a cut. The levels are only as useful as the decisions they separate.
- Name levels for what happens next.
call_this_weekis more useful thanhigh. - One outcome per scale. To combine several outcomes into one grade, ask one question about each and combine them in code, with weights you control.
- A
scoreand ayesnoabout the same outcome share one fit. Ask both if different parts of your code want different forms.