Gevinster:
- Evne til at producere meningsfulde afledte funktioner med domæneviden og kode kategoriske kategorier med passende metoder (one-hot, label, target)
- Evne til at skalere numeriske variabler efter modeltype (standardisering, normalisering) og undgå unødvendig eller ufuldstændig skalering
- Evne til at undgå funktionslækage ved at lære alle transformationer efter trænings-/testdelingen og kun fra træning
Der er et gammelt ordsprog inden for maskinlæring: "Anvendt maskinlæring er i bund og grund funktionsteknologi." Fordi en models succes ofte kommer af, hvilke input du giver til modellen, frem for hvilken algoritme du vælger. Feature engineering er kunsten at producere meningsfulde signaler fra rådata, som modellen kan lære af. Kunstig intelligens er en rig kilde til ideer på dette stadie: Når du spørger "hvilke funktioner kan produceres ud fra disse data", lister den dusinvis af forslag. Men nogle af disse forslag kan være værdifulde, nogle kan være ubrugelige, og nogle kan være farlige (lækage). Det er din opgave at ordne det.
Hvorfor feature engineering
Rådata kommer sjældent til modellen i sin bedste form. Mens kolonnen "fødselsdato" alene er meningsløs, er "alder"-værdien, der genereres fra den, et stærkt signal. Du kan udtrække attributter som "ugedag", "dag/nat", "er det en helligdag" fra "bestillingstidsstemplet". Du kan kombinere to kolonner for at producere et forhold ("gæld/indkomstforhold"). Her er feature engineering at omsætte domæneviden til matematisk signal; Og netop derfor er det scenen, der kræver mest menneskelig intelligens.
Konvertering af kategoriske variable til tal: kodning
Modeller arbejder generelt med tal, ikke tekst. Konvertering af kategoriske variabler (såsom by, farve, produkttype) til tal kaldes kodning. Tre almindelige metoder:
One-hot-kodning: Åbner en separat kolonne med en værdi på 0/1 for hver kategori. For "by" dannes søjler i Istanbul, Ankara, Izmir; Hvis en kunde er fra Istanbul, vil kun den kolonne være 1. Ideel, når antallet af kategorier er lille; Hvis der er for mange kategorier, producerer det hundredvis af kolonner (dette kaldes "størrelseseksplosion").
Etiketkodning: Giver et tal til hver kategori (Istanbul=0, Ankara=1). Det er enkelt, men det kan ved et uheld lære modellen en sekvens (som Ankara > Istanbul); så det bruges med forsigtighed i uordnede kategorier.
Målkodning: Erstatter hver kategori med gennemsnittet af målvariablen i den pågældende kategori. Det er meget kraftfuldt, men den farligste kilde til lækage: Hvis du tager målet for testdataene i betragtning, ser modellen fremtiden. Det bør kun beregnes ud fra træningsdata og omhyggeligt (inden for krydsvalidering).
Skalering: store tal overvælder ikke modellen
Nogle modeller (afstandsbaserede, lineære modeller, neurale netværk) er følsomme over for variablenes skala. Hvis "indkomst" (0-500.000) og "alder" (0-100) falder ind i det samme mønster, kan indkomsten dominere, blot fordi den er større. Skalering løser dette. To almindelige metoder: standardisering (konverterer hver værdi til "hvor mange standardafvigelser væk fra middelværdien") og normalisering (min-max normalisering - komprimerer værdier til området 0-1). Træbaserede modeller (beslutningstræer, tilfældig skov) er skala ufølsomme, de kræver ikke skalering.
Forsigtig: Skalerings- og kodningsparametre (middelværdi, standardafvigelse, kategori-middelmapping) bør kun beregnes ud fra træningsdataene, derefter bør det samme anvendes på testdataene. At inkludere testdata er lækage og får din model til at se bedre ud, end den faktisk er.
Hjertet af lækage i feature engineering
Funktionsgenerering er det sted, hvor datalækagen oftest opstår. To typiske fejl: Tidslækage - producerer en funktion, der inkluderer fremtidig information (inklusive dage efter prognosedagen ved beregning af "gennemsnittet for de sidste 30 dage"). Statistiklækage — beregning af en funktion (skaleringsgennemsnit, målkodningsværdi) ud fra alle data før trænings-/testopdelingen. Regel: lær hver transformation efter at have udført tog-/testopdelingen først og kun fra træningsdataene. Den sikreste måde at gøre dette regelmæssigt på er at bruge pipeline - en struktur, der samler alle transformationer i en enkelt kæde og anvender dem efter opdeling.
Metode
for hvad
Risiko for lækage
bemærk
One-hot-kodning
Variabel med få kategorier
lav
Eksploderer størrelse i flere kategorier
Etiketkodning
Sorteret kategori
lav
Ude af orden lærer forkert rækkefølge
målkodning
Multi-kategori, stærkt signal
meget høj
Lige fra uddannelse, i CV
standardisering
Lineære/afstandsmodeller
medium
Parameter afhænger kun af uddannelse
Tidsvindue funktion
tidsserier
høj
Tilføj fremtiden
tre minisager
Sag 1 — Værdifuld ejendom. Et kreditteam genererede funktionen "gæld i forhold til indkomst" fra kolonnerne "månedlig indkomst" og "månedlig gældsbetaling". Denne enkelt afledte funktion øgede modelnøjagtigheden fra 71 % til 79 %; fordi det var kursen, ikke den absolutte indkomst, der virkelig afgjorde risikoen. Lektion: forhold genereret af domæneviden er stærke signaler.
Tilfælde 2 — Målkodningslækage. Et hold konverterede "postnummeret" til et tal med målkodningen (den gennemsnitlige churn rate i det område), men gjorde det fra alle dataene før opdelingen. Modellen gav 94% på testsættet, faldende til 68% i produktionen. 6 ugers spildte indsats. Lektion: målkodning udføres omhyggeligt, kun inden for træning.
Case 3 — Skalering af glemme. En analytiker satte indtægter (0-400.000) og kundernes alder (18-75) ind i en afstandsbaseret model uden skalering. Modellen så næsten udelukkende på indkomst og knuste alderseffekten. Når skalering blev tilføjet, blev segmentering meningsfuld. Lektion: skalering er ikke forsømt i afstand/lineære modeller.
Fire kopierbare skabeloner
1) Generering af funktionsidéer (eliminering er op til dig):
Din rolle: funktionsingeniørassistent. Mine df-kolonner: fødselsdato, ordretid (tidsstempel), indkomst_tl, debt_tl, by, produktkategori. Mål: "vil lånet blive tilbagebetalt" (0/1). Foreslå 15 funktioner, der kan genereres fra disse kolonner; specificer risikoen for lækage (lav/middel/høj) for hver. Markér tydeligt dem, der indeholder fremtidige oplysninger.
2) Sikker kodning (post-split):
Skriv kode, som one-hot koder for "by" og "produktkategori". VIGTIGT: Tilpas kun kodningen til træningsdataene, og transformer derefter testdataene (med sklearn OneHotEncoder). Forklar, hvordan du håndterer den usete kategori (handle_unknown) i undervisningen.
3) Lækagefri konvertering med Pipeline:
Konfigurer sklearn Pipeline: Anvend StandardScaler på numeriske kolonner, OneHotEncoder til kategoriske kolonner, tilføj en klassificering til sidst. Garanterer, at alle transformationer læres EFTER tog/testopdelingen og kun fra træning. Forklar koden, og hvorfor den er lækagefri.
4) Tidsvinduefunktion (lækagekontrol):
Generer attributten "antal ordrer inden for de seneste 30 dage" for hver kunde, men medtag ALDRIG data efter prognosedagen. Forklar linje for linje, at koden ikke ser ind i fremtiden. Jeg vil give referencedato-kolonnen.
Svag prompt / Stærk prompt
Svag prompt:
Tilføj gode egenskaber til disse data.
"God" er udefineret, målet er uklart, der er ingen lækagekontrol. AI genererer tilfældige, måske utætte, funktioner.
Kraftig prompt:
Din rolle: feature engineer. Mål: "afgang om 30 dage" (0/1), estimeret referencedato: save_date. Der er transaktionshistorik i df.Opgave: Generer 8 funktioner, svar på spørgsmålet "Har jeg disse oplysninger på forudsigelsestidspunktet" for HVER. Tilføjelse af datoen efter referencedatoen i tidsvinduets funktioner. Skriv koden på en pipeline-kompatibel måde, der skal udføres efter tog-/testsektionen.
Her er mål, referencetid og lækagekontrol defineret fra begyndelsen.
Almindelige fejl
- At lære transformationen fra alle data før opdeling. Hvis skalerings-/kodningsparameteren ser testdataene, opstår der lækage.
- Skødesløs brug af målkodning. Det er den mest kraftfulde, men mest utætte metode; bare fra træning, i krydsvalidering.
- Tilføjelse af fremtiden med en tidsvinduefunktion. Hvis "sidste 30 dage"-beregningen indtastes efter prognosedagen, ser modellen fremtiden.
- Unødvendig skalering i træmodellen og ufuldstændig skalering i den lineære model. Skaleringsbeslutninger træffes i henhold til modeltypen.
- Tilføjelse af AI's hvert funktionsforslag uden spørgsmål. Forslag kan omfatte ubrugelige og utætte funktioner.
Tip: Skriv et enkelt spørgsmål ned for hver funktion, du genererer: "Kan jeg beregne denne værdi med de oplysninger, jeg har på det tidspunkt, jeg laver forudsigelsen?" Hvis svaret ikke er et klart "ja", skal du ikke bruge funktionen. Denne enkelt disciplin eliminerer de fleste funktionsrelaterede lækager.
Sammenfattende
Feature engineering er kunsten at generere meningsfulde signaler fra rådata og bestemmer ofte modellens succes mere end algoritmen. Indkodning af kategorier (one-hot, label, target), skalering af numeriske tal (standardisering, normalisering) og fremstilling af afledte funktioner med domæneviden er de grundlæggende værktøjer. Men denne fase er også kernen i lækagen: alle transformationer skal læres efter trænings-/testopdelingen og kun fra træningsdataene. AI genererer masser af ideer; Det er menneskelig dømmekraft, der adskiller det værdifulde fra det farlige.
Ansøgningsopgave
Vælg en målvariabel og design mindst fem afledte funktioner fra de kolonner, du har. For hver af dem skal du besvare spørgsmålet "er jeg tilgængelig på tidspunktet for forudsigelsen" skriftligt og eliminere mindst et som "høj risiko for lækage". Kod derefter de sikre funktioner i en pipeline, der skal implementeres efter partitionering.
tjekliste
- [ ] Anvendte jeg alle transformationer efter tog-/testopdelingen?
- [ ] Lærte jeg kun skalerings-/kodningsparametre fra træning?
- [ ] Har jeg besvaret spørgsmålet "har jeg det på forudsigelsestidspunktet" for hver funktion?
- [ ] Har jeg været ekstra forsigtig med højrisikometoder såsom målkodning?
- [ ] Har jeg besluttet at skalere passende for modeltypen (træ/lineær)?