Dobici:
- Sposobnost prepoznavanja vrsta curenja podataka (cilj, vrijeme, prethodna obrada, grupirani red) i upitati ocjenu 'previše dobro da bi bilo istinito' kao alarm
- Sposobnost prevencije curenja ranim odvajanjem testnog seta, cjevovoda i pravilnom podjelom (hronološki/grupisani)
- Sposobnost da se analiza učini ponovljivom sa fiksnim sjemenom, kontrolom verzija i uklanjanjem ručnih koraka
Postoje dvije greške koje troše najviše truda u nauci o podacima, a obje su podmukle jer dovode do katastrofe baš kada se čini da je sve u redu. Prvi je curenje podataka: model radi odlično na testnom setu, ali ruši u proizvodnji. Druga je neponovljivost: izvršite analizu šest mjeseci kasnije i dobijete potpuno drugačiji rezultat. Ova jedinica je posvećena detaljnom poznavanju i izbjegavanju ove dvije zamke. AI može povećati oba rizika (generira brzo, sugerira skrivena curenja, olakšava vam poduzimanje ručnih koraka), ali ih također može smanjiti ako se pravilno koristi. Razlika je u disciplini.
Curenje podataka: vidoviti model
Curenje podataka je kada model tokom treninga vidi informacije koje neće imati u trenutku stvarnog predviđanja. Model "vara" sa ovim informacijama, izgleda odlično na testnom setu, ali pada u proizvodnji bez te informacije. Simptom curenja je gotovo uvijek isti: previše dobro da bi bilo istinito. Prije nego se radujete kada vidite 99% tačnosti, trebali biste potražiti curenje.
Glavne vrste curenja su:
1. Propuštanje cilja: karakteristika je rezultat cilja. U predviđanju "je otkazan", kolone "datum otkazivanja" ili "iznos povrata" rezultat su cilja; Oni će biti popunjeni samo kada je rezultat jasan.
2. Curenje vremena: Donošenje budućih informacija u prošlost. Prilikom izračunavanja "prosjeka za posljednjih 30 dana", uključite dane nakon dana prognoze ili nasumično podijelite vremensku seriju.
3. Curenje prije obrade: Transformacije učenja kao što su skaliranje, popunjavanje, kodiranje iz svih podataka prije particije za obuku/testiranje. Usrednjavanje podataka testa ometa obuku.
4. Dupli/grupisani redovi curenja: Redovi koji pripadaju istoj osobi prisutni su i u obuci i u testiranju (dvije posjete istog pacijenta u različitim setovima). Model pamti osobu.
Vrsta curenja
Kako se rodi
Kako spriječiti
curenje cilja
Kolona koja je rezultat cilja
Test "Da li ga imam u trenutku predviđanja".
curenje vremena
Dovođenje budućnosti u prošlost
Hronološka podjela, kontrola prozora
Curenje predobrade
Pre-split konverzija
Pipeline, fit tek sa treninga
Grupirano curenje u redovima
Ista jedinica u dva seta
Podijeli po grupi (GroupKFold)
Jedina disciplina koja sprečava curenje
Uobičajeno rješenje za sve vrste curenja svodi se na jednu rečenicu: Izolirajte testni set što je prije moguće kako biste oponašali stvarnu budućnost i nemojte ga ničemu "učiti". U praksi to znači: prvo podijelite, a zatim naučite sve transformacije samo iz treninga i primijenite ih u cjevovod (struktura koja prikuplja sve korake u jednom lancu). Za svaku funkciju postavite pitanje "imam li ove informacije u vrijeme predviđanja?" Ako ima vremena, podijelite ga hronološki; Ako se ista jedinica ponavlja, podijelite po grupi.
Oprez: Najopasniji aspekt curenja informacija je to što se predstavlja kao uspjeh. Loš model će očito proizvesti loše rezultate i bit će primjećen; Model koji je procurio odlično radi, dopada svima i pušta se u proizvodnju — tu počinje kolaps. Zato je "veoma dobar" rezultat razlog za uzbunu, a ne za slavlje.
Reproducibilnost: dobijanje istog rezultata dvaput
Reproducibilnost je mogućnost da se dobije isti rezultat kada ponovo pokrenete analizu u neko drugo vrijeme, na drugom stroju. Bez toga, vaša analiza je slučajna, a ne naučna. Glavni uzroci i rješenja koja narušavaju reproduktivnost:
Ručni koraci: Ručna promjena ćelije u Excelu, ručno uređivanje grafikona. Rješenje: imajte svaki korak u kodu.
Nefiksna slučajnost: Obuka modela, uzorkovanje, podela uključuje slučajnost. Rješenje: popravite nasumično sjeme (početna vrijednost generatora slučajnih rezultata) (random_state=42).
Promjene verzije: rezultat se može promijeniti kada se promijeni verzija biblioteke. Rješenje: popraviti zavisnosti (requirements.txt, datoteka okruženja).
Bez vođenja evidencije: Nije jasno koji su podaci, koji kod, koji parametar korišteni. Rješenje: kontrola verzija (Git — sistem koji čuva sve verzije koda) i upravljanje verzijama podataka.
"Radi samo na mojoj mašini": Rješenje: dokumentirajte okruženje, koristite kontejnere (Docker) ako je moguće.
tri mini kofera
Slučaj 1 — Ciljno curenje. Zdravstvena analiza je uključivala kolonu "lijekovi nakon otpusta" u predviđanju "hoće li pacijent biti ponovo primljen". Ova kolona je popunjena tek nakon što je pacijent otpušten. Model je dao 96%, u proizvodnji 61%. Osmosedmični projekat je bio smeće. Lekcija: pitajte svaku karakteristiku "da li je prisutna u vrijeme predviđanja?"
Slučaj 2 — Curenje predobrade. Jedan tim je skalirao sve podatke, a zatim ih podijelio. Srednja vrijednost testnih podataka je uključena u skaliranje. CV rezultat 89%, stvarna proizvodnja 76%. Lažni uspjeh je nestao kada sam prešao u Pipeline i naučio o transformacijama samo na treningu. Lekcija: prvo podijelite, a kasnije transformirajte.
Slučaj 3 — Neuspjeh reprodukcije. Analitičar je želeo da ažurira grafikon koji je predstavio menadžmentu tri meseca kasnije, ali nije mogao da se seti kako ga je napravio; mnogi koraci su urađeni ručno u Excel-u. Rezultat nije uspio i povjerenje je poljuljano. Lekcija: nema ručnih koraka, sve je u kodu i Gitu.
Četiri šablona za kopiranje
1) Inspekcija curenja:
Vaša uloga: inspektor curenja. Cilj: "churn" (0/1), referentni datum prognoze: record_date. Daću vam ovu listu karakteristika. Za SVAKU karakteristiku: (a) da li je posledica cilja, (b) da li mi je dostupna u trenutku predviđanja, (c) da li vremenski okvir uključuje budućnost? Označite to kao "nesigurno/sumnjivo/curenje" i napišite razlog. Karakteristike: [lista]
2) Cjevovod bez curenja:
Postavite sklearn Pipeline: prvo podijelite train/test (stratificirano, sjeme=42), ONDA ugradite svu pretprocesu (imputiranje, skaliranje, kodiranje) u cjevovod SAMO iz obuke. Objasnite zašto je kod bez curenja, koji je korak naučen gdje.
3) Kôd kontrolne liste obnovljivosti:
Želim da svoju analizu učinim ponovljivom. Predložite kod/strukturu koja dodaje: (1) tvrdo sjeme za sve slučajnosti, (2) korištene verzije biblioteke za štampanje, (3) oznaku datuma/verzije za podatke i izlaz. Također mi dajte kontrolnu listu da se uvjerim da nema ručnih koraka.
4) Grupirana particija (curenje iste jedinice):
U podacima isti customer_id postoji u više redova. Napravite podjelu (GroupKFold iliGroupShuffleSplit, group = customer_id) koja SPREČAVA da isti klijent bude i na obuci i na testiranju. Uključite kod kako biste provjerili da nema kupaca u oba skupa nakon razdvajanja.
Slaba prompt / Jaka prompt
Slab upit:
Moj model je vratio 98% tačnosti, zar to nije sjajno? Optimizirajte kod.
Proslava 98% skriva curenje. Prije optimizacije treba se zapitati da li je ovaj rezultat stvaran ili ne.
Snažan upit:
Vaša uloga: inspektor curenja. Moj model daje 98% tačnosti na test setu, što mi zvuči "previše dobro da bi bilo istinito". Provjerite: (1) jesu li neke karakteristike rezultat cilja, (2) jesu li konverzije obavljene prije razdvajanja, (3) jesu li ista jedinica u dva seta, (4) ima li curenja vremena. Navedite sve sumnjive tačke; Fokusirajte se na pronalaženje curenja, a ne na popravljanje rezultata.
Ovdje se visok rezultat tretira kao znak da se dovodi u pitanje, a ne da se slavi.
Uobičajene greške
- Slavimo "veoma dobar" rezultat. Rezultat previše dobar da bi bio istinit je upozorenje na curenje podataka, a ne postignuće.
- Učenje transformacije iz svih podataka prije dijeljenja. Najčešće curenje; Prvo podijelite s cjevovodom.
- Podjela vremenske serije nasumično. Model vidi budućnost; Hronološka podjela je obavezna.
- Ostavljanje iste jedinice u dva seta. Model pamti osobu; Podijelite po grupama.
- Ne ulaziti ručno i upisivati kod. Analiza postaje neponovljiva; sve bi trebalo biti u kodu i Gitu.
Savjet: Napišite "zakletvu časti" u dvije rečenice na početku vašeg projekta: "Nisam ni na koji način dotaknuo testni set prije nego što sam ga vidio u produkciji. Svaki korak je u kodu i sjeme je fiksirano." Ako ne možete pošteno da potpišete ove dvije rečenice, vaš rezultat još nije pouzdan.
Ukratko
Curenje podataka i neponovljivost su dvije najskuplje tihe greške u nauci o podacima. Curenje je vizija modela budućnosti i predstavlja se kao lažni uspjeh; Rješenje je da rano podijelite testni set, naučite transformacije samo iz treninga (pipeline), postavite svakoj osobini pitanje "Da li ga imam u vrijeme predviđanja" i uradite ispravno podjelu (hronološko/grupirano). Reproducibilnost je mogućnost da se dvaput dobije isti rezultat; njegovo rješenje je da ručno ukloni korake, zakači sjeme, zamrzne verzije i sve zadrži u Gitu. AI može ili povećati ili smanjiti ove rizike; Vaša disciplina je ta koja određuje.
Zadatak aplikacije
Uzmite listu karakteristika modela koji ste izgradili (ili hipotetičkog) i postavite svakoj osobini pitanje "imam li ove informacije u vrijeme predviđanja?" pismeno; Pronađite barem jednog kandidata za curenje. Zatim ispunite kontrolnu listu da bi vaša analiza bila reproducibilna: da li je seme fiksirano, da li postoje ručni koraci, da li su verzije registrovane, da li su u Gitu. Ispravite nedostatke.
kontrolna lista
- [ ] Da li sam postavio upit za rezultat "previše dobro da bi bilo istinito" kao upozorenje o curenja?
- [ ] Jesam li naučio sve transformacije nakon razdvajanja, samo iz treninga?
- [ ] Jesam li podijelio prema strukturi vremena/grupe (hronološki/GroupKFold)?
- [ ] Jesam li napravio sve slučajnosti ponovljive sa fiksnim sjemenom?
- [ ] Jesam li uklonio ručne korake i zadržao sve u kontroli koda i verzija?