Most machine learning courses hand you a clean file and a target column. The hard part already happened, off-screen, before you arrived – somebody decided what was worth predicting, argued the definition, found the data, and cleaned it. Then you fit a model, score it, and the course ends. That is not what the job looks like. This course takes one problem – a retail bank wants to know which customers are about to close their current account, early enough to do something about it – and carries it the whole way. From the moment it is a vague request in a meeting, through defining what ‘about to close’ even means, to a model running in production with somebody watching it drift.
The data arrives broken, on purpose. Duplicate rows. Ages of minus one and a hundred and ninety-nine. Sixty-two branch cities spelled seventy-one different ways. Three date formats in one column. Missing values that are missing for a reason you can find in another column, which changes what you are allowed to do about them. You fix all of it, in an order that matters – and you find out why it matters when repairing things in the wrong order turns a hundred and eighty duplicates into thirty-eight.
There are two columns in the extract that will take your model’s AUC from 0.715 to 0.991. Neither of them exists at the moment you need to score a customer. Finding them, and understanding why a savings balance called ‘final’ is a harder trap than a flag called ‘retention call’, is a section of this course rather than a footnote – because leakage is the failure that looks exactly like success, and nobody catches it by being careful.







