skip to content

Why can't a loan-approval model learn anything from the applicants it rejected?

level: seniorimportance: should knowfreq 45%

answer

  1. outcomes exist only where approval happened
  2. the old policy chose the sample
  3. denial produces no observation ever
  4. hidden officer knowledge inflates observed quality
  5. randomised approvals buy the missing region

basics

~20 s

Repayment is observed only for approved applicants, so rejected ones carry no outcome to learn from. The training set is the slice the previous policy approved, and nothing in it says whether a rejection would have repaid.

solid answer

~50 s

Approving is an action, and repayment is the reward for that action only — deny an applicant and you observe nothing at all, forever. This is the selective-labels problem: the historical training set holds exactly the applicants the incumbent policy approved, so the outcome column is defined only on the region that policy liked. Inside it a model can learn well; outside it, every prediction is extrapolation with no evidence behind it, and that region is precisely where a looser policy would operate. It is worse when officers overrode the score using information never recorded, because among applicants with identical recorded features the approved ones are the better ones on that hidden signal, and the model inherits an optimism it cannot justify. The cure is data: approve a small randomised share you would normally deny.

go deeper

for a junior

Know the basic asymmetry: repayment can only be observed for loans that were actually made, so the rejected applicants are simply absent from the outcome column. Do not invent labels for them.

for a middle

Explain that the labelled region is the region the previous policy approved, so predictions outside it are extrapolation. Be able to say why a strong offline metric computed on approved loans does not support widening the cutoff.

for a senior

Demonstrate the diagnosis and the remedy: spot the unrecorded-override confound, argue for a capped randomised-approval stream below the cutoff, insist that decisions and policy versions be logged, and roll a threshold change out in stages with realised outcomes measured at each step.

for a principal

Own the tradeoff between the cost of deliberately funding loans you expect to lose on and the cost of never being able to justify a policy change. Set the exploration budget, the governance around it, and how the resulting risk estimates are presented to regulators and to the credit committee.

## The structure of the problem A credit decision is a one-shot action with bandit feedback, and an unusually harsh version of it. There are two actions, approve and deny. Approve and you eventually observe a reward: repaid, or defaulted. Deny and you observe nothing — the applicant does not half-repay, does not partially default, simply leaves no outcome behind. The feedback is one-sided, which is why the term **selective labels** is used for it: the labels you hold were selected into existence by the very policy you are trying to improve on. ## What the historical table actually contains Suppose a lender has ten years of applications. The outcome column is populated only for the approved rows. If the incumbent policy approved everyone above a credit-score cutoff, the labelled data is essentially the population above that cutoff. A model fitted there can be genuinely excellent at ranking risk among applicants who look like past approvals. It has no evidence whatsoever about what happens below the cutoff, because nobody below it was ever funded. The practical trap is that this weakness is invisible in normal evaluation. Hold out a slice of history, fit, measure — the numbers look fine, because the holdout is drawn from the same approved region. A high AUC on historical approvals means the model ranks approved applicants well. It says nothing at all about applicants the old policy rejected, and a proposal to lower the cutoff is a proposal to operate exactly there. ## The unobserved-signal problem Selective labels get sharper when a human is in the loop. Say officers could approve or deny against the score, using things never entered into the system: a conversation, a document, local knowledge. Then among applicants who share identical recorded features, the ones who were approved are systematically the better ones on the unrecorded signal. The observed default rate for that feature profile is therefore better than the profile deserves on its own. A model fitted to those outcomes learns an optimistic relationship, and when it is deployed to decide *without* the officer, the applicants it approves are an average draw from the profile rather than the hand-picked subset — so realised defaults come in worse than the backtest promised. The same mechanism makes naive human-versus-model comparisons misleading. The model appears to beat the officers on the approved set because it is being graded only on cases the officers chose to fund. ## The wrong fixes Two shortcuts are common and both are defects. The first is labelling every rejected applicant as a default. That invents a label: some rejections would have repaid, and the model is trained to reproduce the old policy's boundary rather than the underlying risk. The second is imputing outcomes for rejections from their nearest approved neighbours. Near the boundary that borrows from a genuinely different population; far from it there are no neighbours at all, and the imputation is just the model's own extrapolation fed back to itself as if it were data. Retraining on the same approved population, however often, changes nothing — the missing region stays missing, and each cycle narrows the funded population a little further. ## What actually works The honest answer is that the missing evidence has to be bought, not derived. - **Randomised approvals.** Fund a small, deliberately chosen share of applicants the current policy would deny, ideally concentrated in the band just below the cutoff where a policy change is plausible. Those loans are expected to lose money; that loss is the price of the only unconfounded data about the region, and it should be budgeted as a data-acquisition cost with a cap. - **Log the decision, not just the outcome.** Record what was decided, by which policy version, on which score, and whether a human overrode it. Without that, you cannot even tell later which rows were policy-selected. - **External outcomes where they exist.** In some markets, an applicant you denied is funded elsewhere, and their subsequent repayment behaviour is observable through shared reporting. That is partial and biased in its own way, but it is real evidence about the rejected region. - **Be explicit about identification.** Present risk in the rejected region as unidentified rather than predicted, and roll a policy change out as a staged expansion of the cutoff, measuring realised performance at each step, rather than a single jump justified by backtest numbers computed where no relevant data exists. ## Why this generalises The pattern recurs wherever a gate decides who generates an outcome: which candidates get interviewed and then rated, which patients get treated and then followed up, which transactions get let through and then observed for fraud. In each case the model's own past decisions determine which rows of the future training set are ever filled in, and the only durable escape is to deliberately let some traffic through the gate at random and pay for what that teaches you.

  • How would you get any evidence about applicants your current policy rejects?
    Approve a small randomised share of them, concentrated in the band just below the cutoff where a policy change is realistic, and treat the expected losses as a budgeted data-acquisition cost with a hard cap. Log which loans came from that stream so they can be analysed separately. Where the market supports it, outcomes on loans those applicants obtained from other lenders give partial, biased, but real evidence.
  • A new model scores 0.90 AUC on historical approved loans. What does that not tell you?
    It tells you the model ranks risk well among applicants the old policy chose to fund. It says nothing about applicants below the old cutoff, since none of them have outcomes in the data. If the proposal is to loosen the cutoff, the entire business case rests on the one region the metric cannot see.
  • Why does labelling every rejected applicant as a default corrupt the model?
    Because it is an invented label, not an observed one. Some rejections would have repaid, and stamping them all as defaults trains the model to reproduce the old policy's boundary rather than the underlying risk. The result looks accurate against history precisely because it has learned to imitate the decision that created the history.

It is like a doctor who only ever follows up on the patients she admits. She becomes very knowledgeable about the admitted ones and learns nothing at all about the people she sent home.

saying these in an interview costs you the question

  • Treats rejected applicants as implied defaults
  • Claims a strong metric on approved loans proves a looser policy is safe
  • Says imputing the missing outcomes solves it
  • Ignores that the incumbent policy selected the training sample
  • Misses that unrecorded human overrides inflate observed repayment

context