Eenheid 6 / 11

Modelvorming: probleemdefinitie, algoritmeselectie en training/testsplitsing

Winst:

  • Mogelijkheid om het probleemtype (classificatie, regressie, clustering) en succescriteria te definiëren op basis van de werkelijke kosten van de taak
  • Mogelijkheid om de gegevens eerlijk te verdelen (zonder de testset aan te raken; chronologisch in de tijdreeksen) en een lekvrije evaluatiebasis tot stand te brengen
  • Mogelijkheid om een interpreteerbaar model te kiezen door te beginnen met een eenvoudige basislijn en alleen complexiteit toe te voegen wanneer dit het verdient.

Tot nu toe hebben we gegevens verzameld, opgeschoond, verkend en functies geproduceerd. Nu komen we bij het echte werk: het bouwen van een model. Een model is een wiskundige structuur die uit gegevens een patroon leert en voorspellingen doet voor nieuwe situaties. Maar het meest cruciale onderdeel van het bouwen van een model is niet de code zelf, maar de twee beslissingen die eraan voorafgaan: het definiëren van het juiste probleem en het correct splitsen van de gegevens. AI is een krachtige adviseur bij de selectie van algoritmen, het schrijven van code en het afstemmen van parameters; maar het is aan iemand om te beslissen wat hij wil voorspellen en wat succes betekent. Een slecht gedefinieerd probleem zal zelfs met een perfect geschreven model niet werken.

Eerst probleemdefinitie: wat voorspellen we

Elke modelleeropdracht begint met een vraag, en deze vraag bepaalt het type model. Classificatie — de output is een categorie: "Zal deze klant weggaan of blijven?", "Is deze transactie nep?". Regressie (in het Engels regressie - de output is een getal): "Hoeveel is dit huis waard?", "Hoeveel bestellingen komen er volgende maand?". Clustering (niet-gelabelde gegevens in natuurlijke groepen verdelen): "In hoeveel natuurlijke segmenten zijn mijn klanten verdeeld?".

Het tweede deel van de probleemstelling is het succescriterium: wat betekent het dat dit model ‘goed’ is? In een fraudemodel is het missen van een fraudeur veel duurder dan het per ongeluk blokkeren van een eerlijke klant; Daarom komt niet de ‘algemene nauwkeurigheid’, maar het ‘percentage waarmee fraudeurs worden betrapt’ naar voren. Als je dit criterium niet vanaf het begin definieert, samen met de bedrijfseigenaar, zul je eindigen met een ‘zeer nauwkeurig’ model dat niet werkt (we gaan dieper in op de statistieken in hoofdstuk 7).

Let op: "Nauwkeurigheid" kan misleidend zijn. Als 10 van de 1000 transacties frauduleus zijn, zal een stom model dat zegt: "geen enkele is frauduleus", een nauwkeurigheid van 99% opleveren, maar geen enkele fraudeur betrappen. Kies succescriteria op basis van de werkelijke kosten van het probleem.

Training/testsplitsing: eerlijk onderzoek van het model

Het testen van een model met de gegevens die het heeft geleerd, is hetzelfde als de student dezelfde vragen stellen die hij/zij op het examen heeft bestudeerd; Hij haalt hoge cijfers, maar laat niet zien wat hij echt weet. Daarom splitsen we de gegevens in twee (vaak drie):

  • Trainingsset (trainingsset in het Engels, meestal 70-80%): Het model leert hiervan.
  • Testset (testset, meestal 20-30%): Het model ziet dit helemaal niet; hier worden echte prestaties gemeten.
  • Validatieset: tussenset gebruikt voor modelinstelling (welke parameter is beter); om de testset "schoon" te houden.

De meest basale regel: de testset wordt tijdens de training nooit aangeraakt. Schalen, coderen, functieselectie: het wordt allemaal eenvoudig geleerd uit de trainingsset en vervolgens toegepast op testen (lekprincipe uit Unit 5). De testset is de eerste keer dat het model de echte wereld ziet; Als je hem te vroeg inschakelt, zul je nooit de werkelijke prestaties kennen.

Uitzondering op tijdreeksen: als uw gegevens tijdsafhankelijk zijn (verkoop, aandelenmarkt, vraag), wordt er niet willekeurig gesplitst. Omdat willekeurige splitsing ervoor zorgt dat het model de toekomst ziet en het verleden voorspelt, is dit lekkage. Verdeel in plaats daarvan chronologisch: train met de oude periode, test met de nieuwe periode.

Algoritmeselectie: van eenvoudig tot complex

De meest voorkomende fout van beginners is om met het meest complexe model te beginnen. De juiste aanpak is het tegenovergestelde: stel eerst een eenvoudige basislijn vast. "raad altijd de meerderheidsklasse" in een classificatie; "schat altijd het gemiddelde" in een regressie. Dit stomme model geeft een basislijn; Als uw huidige model hier niet doorheen kan, is er een probleem. Ga dan verder met eenvoudige en interpreteerbare modellen.

model

Probleemtype

sterk punt

zwakte

Basislijn (meerderheid/gemiddeld)

beide

Geeft maatstaf

leert niet

Logistieke regressie

Classificatie

Eenvoudig, interpreteerbaar

Alleen lineaire relatie

Lineaire regressie

regressie

Eenvoudig, snel

lineaire veronderstelling

beslisboom

beide

interpreteerbaar

Gemakkelijk onthouden

willekeurig bos

beide

Sterk, duurzaam

Minder interpreteerbaar

Verloopversterking (XGBoost etc.)

beide

zeer sterk

Moeilijk aan te passen, risico op memoriseren

Regel: kies het eenvoudigste ‘goed genoeg’-model. In de meeste zakelijke contexten is interpreteerbaarheid waardevoller dan macht; Het is beter om een ​​afwijzing van een lening uit te leggen 'omdat uw schuld-inkomensratio hoog is' dan 'omdat de zwarte doos dat zegt'.

drie minikoffers

Geval 1 — Onjuiste probleemdefinitie. Een team bouwde een classificatiemodel op basis van ‘is de klant tevreden’, maar koos ‘nauwkeurigheid’ als succescriterium. Volgens de gegevens was 88% van de klanten tevreden; Het model behaalde een nauwkeurigheid van 88% door iedereen 'tevreden' te noemen en heeft de ontevreden mensen nooit opgemerkt - ook al was het echte doel om ze te vinden. Les: kies succescriteria op basis van een echt doel.

Geval 2 — Tijdlek in het compartiment. In een vraagvoorspellingsproject werden de gegevens willekeurig opgesplitst. Het model gaf een nauwkeurigheid van 93%, maar crashte tijdens de productie omdat het tijdens de training januari en vervolgens november had voorspeld met gegevens uit december – het had de toekomst gezien. Toen we overstapten op chronologische indeling, steeg de werkelijke prestatie naar 74%. Les: chronologische indeling in tijdreeksen.

Geval 3 — Onnodige complexiteit. Eén analist begon rechtstreeks met een diep neuraal netwerk, stemde het wekenlang af en kreeg een nauwkeurigheid van 81%. Toen kreeg een collega 80% met twintig regels logistieke regressie – veel sneller, interpreteerbaar en gemakkelijker te onderhouden. Les: begin met een basislijn en een eenvoudig model, en voeg complexiteit toe wanneer dat nodig is.

Vier kopieerbare sjablonen

1) Verduidelijking van de probleemdefinitie:

Jouw rol: modellenconsulent. Help mij deze taak te definiëren: “Ik wil het klantverloop verminderen.” Vraag mij en verduidelijk: (1) is dit een classificatie of regressie, (2) wat is precies de doelvariabele en hoe moet deze worden gedefinieerd, (3) wat moeten de succescriteria zijn en waarom. De beslissing is aan mij; je presenteert de vragen en opties.

2) Veilig trainings-/testcompartiment:

Verdeel mijn df in training/testen 80%/20%. Klassenverdeling behouden (stratify).random_state=42. Dit is GEEN TIJDREEKS (onafhankelijke observaties). Druk de klassenverhouding van elke set af na deling. Geef gewoon de splitsingscode aan de testset zonder enige transformatie toe te passen.

3) Chronologische indeling van tijdreeksen:

De gegevens zijn tijdsafhankelijk (datumkolom: order_date). NIET willekeurig, chronologisch verdeeld: oudste 80% training, nieuwste 20% testen. Druk de trainings- en testdata af, zodat ik kan verifiëren dat de toekomst niet is gelekt.

4) Een basislijn instellen:

Ik heb een classificatieprobleem (doel: churn 0/1). Stel eerst een basislijn vast: meet de nauwkeurigheid van training/testen met DummyClassifier, die altijd de meerderheidsklasse voorspelt. Train vervolgens een eenvoudige logistische regressie en vergelijk of deze beter is dan de basislijn. Toon de statistieken van de twee naast elkaar.

Zwakke prompt/sterke prompt

Zwakke prompt:

Bouw met deze gegevens het beste model.

"Beste" is niet gedefinieerd; Er is geen probleemtype, geen doel, geen succescriteria en geen verdelingsstrategie. De AI genereert een willekeurig patroon, mogelijk lek.

Krachtige prompt:

Jouw rol: modellenassistent. Probleem: classificatie, doel "churn" (0/1), er is een onevenwicht in de klassen (~12% churn). Succescriterium: Het terugroepen van degenen die churnen is een prioriteit. Gegevensonafhankelijke observatie (geen tijdreeksen). Taak: (1) 80/20% gestratificeerde verdeling, (2) DummyClassifier-basislijn, (3) logistische regressie, alle transformaties in de pijplijn en alleen geleerd van training. Raak de testset niet aan vóór het splitsen.

Hierbij zijn het probleemtype, de onbalans, het criterium en de lekkagemaatstaf duidelijk.

Veel voorkomende fouten

  • Het niet kiezen van de succescriteria op basis van het werkelijke doel. "Nauwkeurigheid" in onevenwichtige gegevens is misleidend; Als je de minderheidsklasse wilt veroveren, komt herinnering naar voren.
  • Het aanraken van de testset tijdens de training. Schalen/coderen vóór het splitsen is lek en verbergt echte prestaties.
  • Willekeurige splitsing in tijdreeksen. Het model ziet de toekomst, stort de productie in; Chronologische indeling is essentieel.
  • In een complex model springen zonder een basislijn vast te stellen. Zonder benchmarks kun je niet weten of een model echt goed is of niet.
  • Het negeren van interpreteerbaarheid. Bij zakelijke beslissingen is een eenvoudig verklaarbaar model vaak waardevoller dan een zwarte doos.
Tip: Voordat u begint met het bouwen van een model, schrijft u één zin: “Dit model voorspelt _____, het succes ervan wordt gemeten aan de hand van de maatstaf _____, omdat de werkelijke kosten van het werk _____ zijn.” Als u deze zin niet kunt invullen, bent u nog niet klaar om code te schrijven.

Samengevat

Het meest kritische onderdeel van het bouwen van een model is niet de code, maar de beslissingen die eraan voorafgaan: het definiëren van het juiste probleem (classificatie of regressie, wat is het doel, wat is het succescriterium) en het eerlijk splitsen van de gegevens (zonder de testset aan te raken; chronologisch in de tijdreeksen). Begin altijd met een eenvoudige basislijn en voeg alleen complexiteit toe als dat nodig is; interpreteerbaarheid wordt in de meeste zakelijke contexten gewaardeerd boven macht. AI is een krachtige adviseur bij algoritmeselectie en code, maar de mens bepaalt wat je voorspelt en waarom.

Applicatie taak

Definieer een voorspellingsprobleem en vul de volgende zin schriftelijk in: “Dit model voorspelt ___ (classificatie/regressie), het doel is ___, het succescriterium is ___ omdat ___.” Splits vervolgens de gegevens met de juiste strategie (chronologisch als het een tijdreeks is), stel een basislijn vast en meet of een eenvoudig patroon die basislijn doorbreekt.

controlelijst

  • [ ] Heb ik het probleemtype (classificatie/regressie) en het doel duidelijk gedefinieerd?
  • [ ] Heb ik de succescriteria gekozen op basis van de werkelijke kosten van de klus?
  • [ ] Heb ik de testset tijdens de training onaangeroerd gelaten?
  • [ ] Als het een tijdreeks is, heb ik deze dan chronologisch opgedeeld?
  • [ ] Heb ik een basislijn vastgesteld voordat ik verder ga met het complexe model?