Bias enters mainly through the data, because a model trained on records of how the world has been will reproduce those patterns as predictions about how it should be. It's not usually a bug someone introduced — it's the system faithfully learning a biased history.
The entry points, in order of how often they cause real harm:
1. **Historical bias in the training data.** The canonical example: a hiring model trained on ten years of a company's decisions learns to favour the profile that was historically hired. The model is accurate about the past and discriminatory about the future. Amazon abandoned a recruiting tool for exactly this reason.
2. **Representation bias.** Some groups are underrepresented in the data, so performance is worse for them. Facial recognition systems have shown dramatically higher error rates for darker-skinned women than lighter-skinned men, traced directly to training set composition. Medical models trained on one population underperform on others.
3. **Proxy variables.** You remove the protected attribute, but other features encode it. Postcode correlates with race; a gap in employment history correlates with parenthood; the name of a school correlates with class. Removing the label doesn't remove the information, which is why 'we don't use race as a feature' is not a defence.
4. **Label bias.** The thing you're predicting is itself a biased measurement. A widely-cited healthcare algorithm used *healthcare spending* as a proxy for *health need* — but less was historically spent on Black patients with equal illness, so the model systematically underestimated their need. The maths was fine; the target was wrong.
5. **Feedback loops.** Predictive policing sends more patrols to areas the model flags, producing more recorded incidents there, confirming the model. The system generates its own evidence.
6. **Evaluation bias.** Aggregate accuracy hides subgroup failure. A model at 95% overall can be at 70% for a minority group, and nobody notices unless they disaggregate.
**Can it be removed?** Reduced substantially, eliminated no — partly because 'fair' has multiple mathematical definitions that are provably incompatible. You cannot simultaneously equalise false positive rates, false negative rates and predictive parity across groups except in degenerate cases. So fairness is a choice about which error to distribute how, not a technical box to tick.
What actually helps: audit performance disaggregated by subgroup as standard practice; scrutinise what your label actually measures; involve affected people in defining harm; and keep meaningful human review with a real appeal route for consequential decisions. The last one matters most, because the deepest problem isn't that models are biased — humans are too — it's that automated decisions apply the same bias at enormous scale, invisibly, with no one to argue with.