Jednotka 10 / 11

Únik údajov a reprodukovateľnosť: tiché katastrofy a disciplína

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í?