zisky:
- Schopnosť rozpoznať typy úniku údajov (cieľ, čas, predbežné spracovanie, zoskupený riadok) a spýtať sa skóre „príliš dobré na to, aby to bola pravda“ ako alarm
- Schopnosť zabrániť úniku včasným oddelením testovacej súpravy, potrubia a správnym rozdelením (chronologické/zoskupené)
- Schopnosť urobiť analýzu reprodukovateľnou s pevnými základmi, kontrolou verzií a odstránením manuálnych krokov
Existujú dve chyby, ktoré mrhajú najviac úsilia v dátovej vede, a obe sú zákerné, pretože vedú ku katastrofe práve vtedy, keď sa všetko „zdá byť v poriadku“. Prvým je únik údajov: model funguje skvele na testovacej súprave, ale vo výrobe padá. Druhým je nereprodukovateľnosť: spustíte analýzu o šesť mesiacov neskôr a získate úplne iný výsledok. Táto jednotka je zameraná na to, aby tieto dve nástrahy do hĺbky poznala a vyhýbala sa im. Umelá inteligencia môže zvýšiť obe riziká (rýchlo generuje, navrhuje skryté úniky, uľahčuje vám manuálne kroky), ale môže ich aj znížiť, ak sa používa správne. Rozdiel je v disciplíne.
Únik údajov: jasnovidný model
Únik dát je, keď model počas tréningu vidí informácie, ktoré nebude mať v čase skutočnej predikcie. Model „podvádza“ s touto informáciou, na testovacej súprave vyzerá skvele, no vo výrobe bez tejto informácie padá. Príznak úniku je takmer vždy rovnaký: príliš dobrý, aby to bola pravda. Predtým, ako sa budete radovať, keď uvidíte 99% presnosť, mali by ste hľadať netesnosti.
Hlavné typy úniku sú:
1. Únik gólu: Funkcia je výsledkom gólu. V prognóze „bola zrušená“ sú stĺpce „dátum zrušenia“ alebo „suma vrátenia“ výsledkom cieľa; Vyplnia sa až vtedy, keď bude jasný výsledok.
2. Únik času: Prenášanie budúcich informácií do minulosti. Pri výpočte „priemeru za posledných 30 dní“ zahrňte dni po predpovedanom dni alebo rozdeľte časové rady náhodne.
3. Únik pred spracovaním: Učenie transformácií, ako je škálovanie, plnenie, kódovanie zo všetkých údajov pred tréningovým/testovacím oddielom. Spriemerovanie testovacích údajov narúša tréning.
4. Netesnosť duplicitných/zoskupených riadkov: Riadky patriace tej istej osobe sú prítomné v tréningu aj testovaní (dve návštevy toho istého pacienta v rôznych súboroch). Modelka si človeka zapamätá.
Typ úniku
Ako sa rodí
Ako zabrániť
cieľový únik
Stĺpec, ktorý je výsledkom cieľa
Test „Mám to v čase predpovede“.
únik času
Prenesenie budúcnosti do minulosti
Chronologické členenie, ovládanie okien
Únik pred spracovaním
Konverzia pred rozdelením
Potrubie, fit už len z tréningu
Únik zoskupených riadkov
Rovnaká jednotka v dvoch súpravách
Rozdeliť podľa skupiny (GroupKFold)
Jediná disciplína, ktorá zabráni úniku
Spoločné riešenie pre všetky typy únikov sa scvrkáva na jednu vetu: Izolujte testovaciu súpravu čo najskôr, aby ste napodobnili skutočnú budúcnosť, a nič ju „neučte“. V praxi to znamená: najprv rozdeľte, potom sa všetky transformácie naučte len z tréningu a aplikujte ich v pipeline (štruktúra, ktorá zhromažďuje všetky kroky do jedného reťazca). Pri každej funkcii položte otázku „mám tieto informácie v čase predpovede?“ Ak je čas, rozdeľte ho chronologicky; Ak sa rovnaká jednotka opakuje, rozdeľte ju podľa skupín.
Pozor: Najnebezpečnejším aspektom úniku je to, že sa prezentuje ako úspech. Zlý model očividne prinesie zlé výsledky a všimne si ho; Uniknutý model funguje skvele, poteší každého a je uvedený do výroby – tam začína kolaps. Preto je „veľmi dobrý“ výsledok dôvodom na poplach, nie na oslavu.
Reprodukovateľnosť: získanie rovnakého výsledku dvakrát
Reprodukovateľnosť je schopnosť získať rovnaký výsledok pri opätovnom spustení analýzy v inom čase na inom počítači. Bez toho je vaša analýza náhodná, nie vedecká. Hlavné príčiny a riešenia, ktoré zhoršujú reprodukovateľnosť:
Manuálne kroky: Manuálna zmena bunky v Exceli, manuálna úprava grafu. Riešenie: majte každý krok v kóde.
Nefixovaná náhodnosť: Tréning modelu, vzorkovanie, rozdelenie zahŕňa náhodnosť. Riešenie: opravte náhodné semeno (počiatočná hodnota generátora náhodnosti) (random_state=42).
Posuny verzií: Výsledok sa môže zmeniť, keď sa zmení verzia knižnice. Riešenie: opravte závislosti (requirements.txt, súbor prostredia).
Žiadne vedenie záznamov: Nie je jasné, ktoré údaje, ktorý kód, ktorý parameter bol použitý. Riešenie: kontrola verzií (Git – systém, ktorý ukladá všetky verzie kódu) a verzovanie údajov.
"Funguje to len na mojom počítači": Riešenie: zdokumentujte prostredie, ak je to možné, použite kontajnery (Docker).
tri mini prípady
Prípad 1 – Cieľový únik. Zdravotná analýza obsahovala stĺpec „liečba po prepustení“ pri predpovedaní „či bude pacient znovu prijatý“. Tento stĺpec sa naplnil až po prepustení pacienta. Model dal 96%, vo výrobe 61%. 8 týždňový projekt bol odpad. Lekcia: opýtajte sa každej funkcie „je prítomná v čase predpovede?“
Prípad 2 – Únik z predbežného spracovania. Jeden tím škáloval všetky údaje a potom ich rozdelil. Priemer testovacích údajov bol zahrnutý do škálovania. CV skóre 89 %, skutočná produkcia 76 %. Falošný úspech zmizol, keď som sa presťahoval do Pipeline a o premenách som sa dozvedel až z tréningu. Ponaučenie: najprv rozdeľ, neskôr pretvor.
Prípad 3 – Zlyhanie pri reprodukcii. Analytik chcel aktualizovať tabuľku, ktorú predložil manažmentu o tri mesiace neskôr, ale nevedel si spomenúť, ako ju vytvoril; veľa krokov bolo vykonaných ručne v Exceli. Výsledok nevyšiel a dôvera bola otrasená. Lekcia: žiadne manuálne kroky, všetko je v kóde a Git.
Štyri kopírovateľné šablóny
1) Kontrola tesnosti:
Vaša úloha: inšpektor úniku. Cieľ: "churn" (0/1), referenčný dátum prognózy: record_date. Dám vám tento zoznam funkcií. Pre KAŽDÚ funkciu: (a) je to dôsledok cieľa, (b) je mi k dispozícii v čase predpovede, (c) zahŕňa časové okno budúcnosť? Označte ho ako „nebezpečný/podozrivý/únik“ a napíšte dôvod. Vlastnosti: [zoznam]
2) Potrubie bez úniku:
Nastavte sklearn Pipeline: najprv rozdeľte vlak/test (stratifikované, seed=42), POTOM vložte všetko predspracovanie (imputácia, mierka, kódovanie) do potrubia LEN z tréningu. Vysvetlite, prečo je kód bez úniku, ktorý krok sa kde naučil.
3) Kód kontrolného zoznamu reprodukovateľnosti:
Chcem, aby bola moja analýza reprodukovateľná. Navrhnite kód/štruktúru, ktorá pridá: (1) pevný základ pre každú náhodnosť, (2) použité verzie knižnice na tlač, (3) značku dátumu/verzie pre údaje a výstup. Poskytnite mi tiež kontrolný zoznam, aby ste sa uistili, že neexistujú žiadne manuálne kroky.
4) Skupinový oddiel (rovnaký únik jednotky):
V údajoch sa rovnaký customer_id nachádza vo viacerých riadkoch. Vykonajte rozdelenie (GroupKFold orGroupShuffleSplit, group = customer_id), ktoré zabráni tomu, aby sa ten istý zákazník zúčastnil školenia aj testovania. Zahrňte kód na overenie, že po rozdelení nie sú žiadni zákazníci v oboch skupinách.
Slabá výzva / Silná výzva
Slabá výzva:
Môj model vrátil presnosť 98 %, nie je to skvelé? Optimalizujte kód.
Oslava 98 % skrýva únik. Pred optimalizáciou si treba položiť otázku, či je toto skóre skutočné alebo nie.
Výkonná výzva:
Vaša úloha: inšpektor úniku. Môj model vracia 98% presnosť na testovacej súprave, čo mi znie „príliš dobré na to, aby to bola pravda“. Skontrolujte: (1) či sú nejaké funkcie výsledkom cieľa, (2) či sú konverzie vykonané pred rozdelením, (3) ide o rovnakú jednotku v dvoch súpravách, (4) či existujú nejaké časové úniky. Uveďte všetky podozrivé body; Zamerajte sa na nájdenie úniku, nie na opravu skóre.
Tu sa vysoké skóre považuje za znamenie, ktoré treba spochybňovať, nie oslavovať.
Časté chyby
- Oslavujeme „veľmi dobrý“ výsledok. Skóre, ktoré je príliš dobré na to, aby to bolo pravdivé, je upozornenie na únik, nie úspech.
- Učenie transformácie zo všetkých údajov pred delením. Najbežnejší únik; Najprv rozdeľte potrubím.
- Náhodné rozdelenie časových radov. Model vidí budúcnosť; Chronologické členenie je nutnosťou.
- Ponechanie rovnakej jednotky v dvoch sadách. Model si zapamätá osobu; Rozdeľte podľa skupiny.
- Nenastupovať ručne a zapisovať do kódu. Analýza sa stáva nereprodukovateľnou; všetko by malo byť v kóde a Git.
Tip: Na začiatok svojho projektu napíšte „sľub cti“ v dvoch vetách: „Nijako som sa testovacej súpravy nedotkol, kým som ju nevidel vo výrobe. Každý krok je v kóde a zárodok je opravený.“ Ak sa nemôžete čestne podpísať pod tieto dve vety, váš výsledok ešte nie je spoľahlivý.
V súhrne
Únik údajov a nereprodukovateľnosť sú dve najdrahšie tiché chyby vo vede o údajoch. Únik je modelovou víziou budúcnosti a prezentuje sa ako falošný úspech; Riešením je skoré rozdelenie testovacej sady, naučenie sa transformácií iba z tréningu (pipeline), položenie každej funkcie otázkou „Mám to v čase predikcie“ a správne rozdelenie (chronologické/zoskupené). Reprodukovateľnosť je schopnosť získať rovnaký výsledok dvakrát; jeho riešením je manuálne odstrániť kroky, pripnúť seed, zmraziť verzie a ponechať všetko v Git. AI môže tieto riziká buď zvýšiť, alebo znížiť; Je to vaša disciplína, ktorá rozhoduje.
Aplikačná úloha
Vezmite si zoznam prvkov modelu, ktorý ste vytvorili (alebo hypotetického modelu) a položte každému prvku otázku: „Mám tieto informácie v čase predpovede?“ písomne; Nájdite aspoň jedného kandidáta na únik. Potom vyplňte kontrolný zoznam, aby bola vaša analýza reprodukovateľná: je seed opravený, existujú manuálne kroky, sú verzie zaregistrované, sú v systéme Git. Opravte nedostatky.
kontrolný zoznam
- [ ] Spýtal som sa skóre „príliš dobré, aby to bola pravda“ ako upozornenie na únik?
- [ ] Naučil som sa všetky premeny po rozdelení len z tréningu?
- [ ] Rozdelil som podľa časovej/skupinovej štruktúry (chronologicky/GroupKFold)?
- [ ] Urobil som všetku náhodnosť opakovateľnú s pevným základom?
- [ ] Odstránil som manuálne kroky a ponechal som všetko pod kontrolou kódu a verzií?