Enhed 6 / 11

Modelbygning: Problemdefinition, algoritmevalg og træning/testopdeling

Gevinster:

  • Evne til at definere problemtypen (klassificering, regression, clustering) og succeskriterier i henhold til de reelle omkostninger ved jobbet
  • Evne til at opdele dataene ærligt (uden at røre testsættet; kronologisk i tidsserien) og etablere et lækagefrit evalueringsgrundlag
  • Evne til at vælge en fortolkelig model ved at starte med en simpel baseline og kun tilføje kompleksitet, når den fortjener det.

Indtil videre har vi indsamlet data, renset dem, udforsket dem og produceret funktioner. Nu kommer vi til det virkelige arbejde, at bygge en model. En model er en matematisk struktur, der lærer et mønster fra data og producerer forudsigelser for nye situationer. Men den mest kritiske del af opbygningen af ​​en model er ikke selve koden, men de to beslutninger, der går forud for den: at definere det rigtige problem og opdele dataene korrekt. AI er en kraftfuld rådgiver inden for algoritmevalg, kodeskrivning og parameterjustering; men det er op til én at beslutte, hvad man vil forudsige, og hvad succes betyder. Et dårligt defineret problem vil ikke fungere, selv med en perfekt skrevet model.

Problemdefinition først: hvad forudsiger vi

Hvert modelleringsjob starter med et spørgsmål, og dette spørgsmål bestemmer modellens type. Klassificering — outputtet er en kategori: "Vil denne kunde forlade eller blive?", "Er denne transaktion falsk?". Regression (på engelsk regression - outputtet er et tal): "Hvor meget er dette hus værd?", "Hvor mange ordrer kommer næste måned?". Clustering (opdeling af umærkede data i naturlige grupper): "Hvor mange naturlige segmenter er mine kunder opdelt i?".

Anden del af problemformuleringen er succeskriteriet: hvad betyder det, at denne model er "god"? I en svindelmodel er det meget dyrere at savne en svindler end ved et uheld at blokere en ærlig kunde; Derfor kommer ikke "generel nøjagtighed", men "rate for fangst af svindlere" i forgrunden. Hvis du ikke definerer dette kriterium fra begyndelsen, vil du sammen med virksomhedsejeren ende med en "meget nøjagtig" model, der ikke virker (vi går dybere ind i metrics i Unit 7).

Forsigtig: "Nøjagtighed" kan være vildledende. Hvis 10 ud af 1000 transaktioner er svigagtige, vil en dum model, der siger "ingen er svigagtig", give 99% nøjagtighed, men vil ikke fange en eneste svindler. Vælg succeskriterier baseret på de reelle omkostninger ved problemet.

Træning/testopdeling: ærlig undersøgelse af modellen

At teste en model med de data, den har lært, er som at stille den studerende de samme spørgsmål, som han/hun studerede til eksamen; Han får høje karakterer, men viser ikke, hvad han virkelig ved. Så vi deler dataene op i to (ofte tre):

  • Træningssæt (træningssæt på engelsk, normalt 70-80%): Modellen lærer på dette.
  • Testsæt (testsæt, normalt 20-30%): Modellen kan slet ikke se dette; reelle præstationer måles her.
  • Valideringssæt: Mellemsæt brugt til modelindstilling (hvilken parameter er bedre); at holde testsættet "rent".

Den mest grundlæggende regel: Testsættet røres aldrig under træning. Skalering, kodning, valg af funktioner - alt sammen læres blot fra træningssættet og anvendes derefter til test (lækageprincip fra enhed 5). Testsættet er første gang, modellen ser den virkelige verden; Hvis du tænder den for tidligt, vil du aldrig vide den sande præstation.

Tidsserieundtagelse: Hvis dine data er tidsafhængige (salg, aktiemarked, efterspørgsel), foretages der ikke tilfældig opdeling. Fordi tilfældig opdeling får modellen til at se fremtiden og forudsige fortiden - dette er lækage. Opdel i stedet kronologisk: Træn med den gamle periode, test med den nye periode.

Algoritmevalg: fra simpel til kompleks

Den mest almindelige fejl hos begyndere er at starte med den mest komplekse model. Den korrekte tilgang er det modsatte: etablere først en simpel baseline. "gæt altid majoritetsklassen" i en klassifikation; "beregn altid middelværdien" i en regression. Denne dumme model giver en baseline; Hvis din egentlige model ikke kan klare dette, er der et problem. Gå derefter videre til enkle og fortolkelige modeller.

model

Problemtype

stærke side

svaghed

Baseline (flertal/gennemsnit)

begge dele

Giver benchmark

lærer ikke

Logistisk regression

Klassifikation

Enkel, fortolkelig

Kun lineær sammenhæng

Lineær regression

regression

Simpelt, hurtigt

lineær antagelse

beslutningstræ

begge dele

fortolkelig

Nem huske

tilfældig skov

begge dele

Stærk, holdbar

Mindre fortolkelig

Gradientboosting (XGBoost osv.)

begge dele

meget stærk

Svært at justere, risiko for udenadshukommelse

Regel: vælg den enkleste "god nok" model. Fortolkelighed er mere værdifuld end magt i de fleste forretningssammenhænge; Det er bedre at forklare en låneafvisning "fordi din gæld i forhold til indkomst er høj" end "fordi den sorte boks sagde det."

tre minisager

Case 1 — Forkert problemdefinition. Et team byggede en klassifikationsmodel baseret på "er kunden tilfreds", men valgte "nøjagtighed" som succeskriteriet. I dataene var 88 % af kunderne tilfredse; Modellen fik 88 % nøjagtighed ved at kalde alle "tilfredse" og fangede aldrig de utilfredse mennesker - selvom det egentlige mål var at finde dem. Lektion: vælg succeskriterier baseret på det virkelige formål.

Tilfælde 2 — Tidslækage i rummet. I et efterspørgselsprognoseprojekt blev data tilfældigt opdelt. Modellen gav 93 % nøjagtighed, men styrtede ned i produktionen, fordi den under træning havde forudsagt januar og derefter november med decemberdata - den havde set fremtiden. Da vi gik over til kronologisk opdeling, steg den faktiske præstation til 74%. Lektion: kronologisk opdeling i tidsserier.

Case 3 — Unødvendig kompleksitet. En analytiker startede direkte med et dybt neuralt netværk, tunede det i uger og fik 81 % nøjagtighed. Så fik en kollega 80 % med 20 linjers logistisk regression - meget hurtigere, fortolkelig og lettere at vedligeholde. Lektion: Start med en basislinje og en simpel model, tilføj kompleksitet, når det fortjener det.

Fire kopierbare skabeloner

1) Afklaring af problemdefinitionen:

Din rolle: modelkonsulent. Hjælp mig med at definere dette job: "Jeg vil reducere kundeafgang." Spørg mig og afklar: (1) er dette en klassificering eller regression, (2) hvad er målvariablen præcist, og hvordan skal den defineres, (3) hvad skal være succeskriterierne og hvorfor. Beslutningen er min; du præsenterer spørgsmålene og mulighederne.

2) Sikker trænings-/testrum:

Opdel min df i træning/test 80%/20%. Oprethold klassefordeling (stratify).random_state=42. Dette er IKKE en TIDSERIE (uafhængige observationer). Udskriv klasseforholdet for hvert sæt efter division. Bare giv opdelingskoden til testsættet uden at anvende nogen transformation.

3) Tidsrækkens kronologiske inddeling:

Dataene er tidsafhængige (datokolonne: ordre_dato). IKKE tilfældigt, opdel kronologisk: ældste 80% træning, nyeste 20% test. Udskriv trænings- og testdatointervallerne, så jeg kan bekræfte, at fremtiden ikke er lækket.

4) Indstilling af en baseline:

Jeg har et klassifikationsproblem (mål: churn 0/1). Opret først en baseline: mål trænings-/testnøjagtigheden med DummyClassifier, som altid forudsiger majoritetsklassen. Træn derefter en simpel logistisk regression og sammenlign, om den slår basislinjen. Vis metrikken for de to side om side.

Svag prompt / Stærk prompt

Svag prompt:

Byg den bedste model med disse data.

"Bedst" ​​er udefineret; Der er ingen problemtype, intet mål, ingen succeskriterier og ingen divisionsstrategi. AI'en genererer et tilfældigt mønster, muligvis utæt.

Kraftig prompt:

Din rolle: modelassistent. Problem: klassificering, mål "churn" (0/1), der er klasseubalance (~12% churn). Succeskriterium: Det er en prioritet at tilbagekalde dem, der churner. Datauafhængig observation (ikke tidsserier). Opgave: (1) 80/20 % stratificeret opdeling, (2) DummyClassifier baseline, (3) logistisk regression, alle transformationer i pipeline og kun lært fra træning. Rør ikke ved testsættet før opdeling.

Her er problemtype, ubalance, kriterium og lækagemål tydelige.

Almindelige fejl

  • Ikke at vælge succeskriterierne efter det egentlige formål. "Nøjagtighed" i ubalancerede data er vildledende; Hvis du ønsker at fange minoritetsklassen, kommer tilbagekaldelse i højsædet.
  • Berøring af testsættet under træning. At lave skalering/kodning før opdeling er utæt og skjuler reel ydeevne.
  • Tilfældig opdeling i tidsserier. Modellen ser fremtiden, kollapser i produktionen; Kronologisk opdeling er afgørende.
  • At hoppe ind i en kompleks model uden at etablere en baseline. Uden benchmarks kan du ikke vide, om en model er rigtig god eller ej.
  • Ignorerer fortolkning. I forretningsbeslutninger er en simpel model, der kan forklares, ofte mere værdifuld end en sort boks.
Tip: Inden du begynder at bygge en model, skal du skrive en sætning: "Denne model vil forudsige _____, dens succes vil blive målt ved metrikken _____, fordi de sande omkostninger ved jobbet er _____." Hvis du ikke kan udfylde denne sætning, er du ikke klar til at skrive kode endnu.

Sammenfattende

Den mest kritiske del af opbygningen af en model er ikke koden, men de beslutninger, der går forud for den: at definere det rigtige problem (klassificering eller regression, hvad er målet, hvad er succeskriteriet) og opdele dataene retfærdigt (uden at røre testsættet; kronologisk i tidsserien). Start altid med en simpel baseline og tilføj kun kompleksitet, når det fortjener det; fortolkning værdsættes over magt i de fleste forretningssammenhænge. AI er en stærk rådgiver i algoritmevalg og kode, men mennesket bestemmer, hvad du forudsiger og hvorfor.

Ansøgningsopgave

Definer et forudsigelsesproblem og udfyld følgende sætning skriftligt: "Denne model vil forudsige ___ (klassificering/regression), målet er ___, succeskriteriet er ___ fordi ___." Derefter opdeles dataene med den rigtige strategi (kronologisk, hvis det er en tidsserie), etablere en baseline og måle, om et simpelt mønster bryder denne baseline.

tjekliste

  • [ ] Har jeg klart defineret problemtypen (klassificering/regression) og målet?
  • [ ] Har jeg valgt succeskriterierne ud fra de faktiske omkostninger ved jobbet?
  • [ ] Forlod jeg testsættet urørt under træningen?
  • [ ] Hvis det er en tidsserie, opdelte jeg den så kronologisk?
  • [ ] Har jeg etableret en baseline, før jeg går videre til den komplekse model?