Ieguvumi:
- Spēja atpazīt datu noplūdes veidus (mērķis, laiks, pirmapstrāde, grupēta rinda) un kā trauksmi pieprasīt rezultātu “pārāk labi, lai būtu patiesība”.
- Spēja novērst noplūdi, agrīni atdalot testa komplektu, cauruļvadu un pareizi sadalot (hronoloģiski/grupēti)
- Spēja padarīt analīzi reproducējamu ar fiksētām sēklām, versiju kontroli un manuālo darbību noņemšanu
Ir divas kļūdas, kas iznieko visvairāk pūļu datu zinātnē, un tās abas ir mānīgas, jo noved pie katastrofas tieši tad, kad viss "šķiet kārtībā". Pirmais ir datu noplūde: modelis lieliski darbojas testa komplektā, taču ražošanas laikā tas avarē. Otrais ir neproducējamība: jūs veicat analīzi sešus mēnešus vēlāk un iegūstat pilnīgi citu rezultātu. Šī vienība ir paredzēta, lai padziļināti zinātu un izvairītos no šīm divām kļūmēm. AI var palielināt abus riskus (ģenerē ātri, ierosina slēptas noplūdes, atvieglo manuālu darbību veikšanu), bet var arī tos samazināt, ja to lieto pareizi. Atšķirība ir disciplīnā.
Datu noplūde: gaišreģa modelis
Datu noplūde ir tad, kad modelis apmācības laikā redz informāciju, kuras tam nebūs faktiskās prognozēšanas laikā. Modelis "krāpjas" ar šo informāciju, lieliski izskatoties testa komplektā, bet bez šīs informācijas avarē ražošanā. Noplūdes simptoms gandrīz vienmēr ir vienāds: pārāk labi, lai būtu patiesība. Pirms jūs priecājaties, redzot 99% precizitāti, jums vajadzētu meklēt noplūdes.
Galvenie noplūdes veidi ir:
1. Vārtu noplūde: iezīme ir mērķa rezultāts. Prognozē "tika atcelts" slejas "atcelšanas datums" vai "atmaksas summa" ir mērķa rezultāts; Tie tiks aizpildīti tikai tad, kad būs skaidrs rezultāts.
2. Laika noplūde: nākotnes informācijas ienesšana pagātnē. Aprēķinot pēdējo 30 dienu vidējo vērtību, iekļaujiet dienas pēc prognozētās dienas vai sadaliet laikrindas nejauši.
3. Pirmsapstrādes noplūde: transformāciju, piemēram, mērogošanas, aizpildīšanas, kodēšanas apgūšana no visiem datiem pirms apmācības/testēšanas nodalījuma. Testa datu vidējā noteikšana traucē apmācību.
4. Dublētas/grupētas rindas noplūde: vienai un tai pašai personai piederošas rindas ir gan apmācībā, gan pārbaudē (divas viena un tā paša pacienta vizītes dažādās kopās). Modele iegaumē cilvēku.
Noplūdes veids
Kā piedzimst
Kā novērst
mērķa noplūde
Kolonna, kas ir mērķa rezultāts
"Vai man tas ir prognozēšanas brīdī" tests
laika noplūde
Nākotnes ienesšana pagātnē
Hronoloģiskais dalījums, logu kontrole
Priekšapstrādes noplūde
Iepriekš sadalīta konversija
Cauruļvads, piemērots tikai no treniņa
Grupētas rindas noplūde
Viena un tā pati vienība divos komplektos
Sadalīt pēc grupas (GroupKFold)
Vienīgā disciplīna, lai novērstu noplūdi
Kopējais risinājums visu veidu noplūžu gadījumā ir viens teikums: pēc iespējas agrāk izolējiet testa komplektu, lai atdarinātu reālo nākotni, un neko "nemācīt". Praksē tas nozīmē: vispirms sadaliet, pēc tam apgūstiet visas transformācijas tikai no apmācības un pielietojiet tās konveijerā (struktūra, kas apkopo visus soļus vienā ķēdē). Katrai funkcijai uzdodiet jautājumu "vai man ir šī informācija prognozes brīdī?" Ja ir laiks, sadaliet to hronoloģiski; Ja viena un tā pati vienība atkārtojas, sadaliet pa grupām.
Uzmanību: Visbīstamākais noplūdes aspekts ir tas, ka tā tiek uzskatīta par veiksmīgu. Slikts modelis acīmredzami radīs sliktus rezultātus un tiks pamanīts; Nopludināts modelis darbojas lieliski, iepriecina visus un tiek nodots ražošanā — tur sākas sabrukums. Tāpēc "ļoti labs" rezultāts ir iemesls satraukumam, nevis svinībām.
Reproducējamība: iegūstiet vienu un to pašu rezultātu divas reizes
Reproducējamība ir iespēja iegūt tādu pašu rezultātu, veicot analīzi vēlreiz citā laikā, citā mašīnā. Bez tā jūsu analīze ir nejauša, nevis zinātniska. Galvenie cēloņi un risinājumi, kas pasliktina reproducējamību:
Manuālas darbības: Manuāla šūnas maiņa programmā Excel, manuāla diagrammas rediģēšana. Risinājums: ievadiet katru soli kodā.
Nefiksēta nejaušība: modeļu apmācība, paraugu ņemšana, sadalīšana ietver nejaušību. Risinājums: izlabojiet nejaušo sēklu (gadījuma ģeneratora sākotnējo vērtību) (random_state=42).
Versijas maiņa: rezultāts var mainīties, mainoties bibliotēkas versijai. Risinājums: izlabojiet atkarības (requirements.txt, vides fails).
Nav uzskaites: nav skaidrs, kuri dati, kāds kods, kurš parametrs tika izmantots. Risinājums: versiju kontrole (Git — sistēma, kas saglabā visas koda versijas) un datu versiju noteikšana.
"Tas darbojas tikai manā datorā": Risinājums: dokumentējiet vidi, ja iespējams, izmantojiet konteinerus (Docker).
trīs mini futrāļi
1. gadījums — mērķa noplūde. Veselības analīzē bija sleja "zāles pēc izrakstīšanas", lai prognozētu, "vai pacients tiks uzņemts atkārtoti". Šī kolonna tika aizpildīta tikai pēc pacienta izrakstīšanas. Modelis deva 96%, ražošanā 61%. 8 nedēļu projekts bija atkritumi. Nodarbība: pajautājiet katrai funkcijai "vai tā ir paredzēta prognozēšanas brīdī?"
2. gadījums — priekšapstrādes noplūde. Viena komanda mērogoja visus datus un pēc tam sadalīja tos. Testa datu vidējais lielums bija saistīts ar mērogošanu. CV vērtējums 89%, faktiskā produkcija 76%. Viltus panākumi pazuda, kad es pārcēlos uz Pipeline un uzzināju par pārvērtībām tikai no apmācības. Nodarbība: vispirms sadaliet, vēlāk pārveidojiet.
3. gadījums — reproducēšanas neizdošanās. Kāds analītiķis vēlējās atjaunināt diagrammu, ko viņš iesniedza vadībai trīs mēnešus vēlāk, bet nevarēja atcerēties, kā viņš to sagatavoja; daudzas darbības tika veiktas manuāli programmā Excel. Rezultāts neizdevās, un uzticība tika iedragāta. Nodarbība: nav manuālu darbību, viss ir kodā un Gitā.
Četras kopējamas veidnes
1) Noplūdes pārbaude:
Jūsu loma: noplūžu inspektors. Mērķis: "churn" (0/1), prognozes atsauces datums: ieraksta_datums. Es jums sniegšu šo funkciju sarakstu. KATRAM pazīmei: (a) vai tā ir mērķa sekas, (b) vai tā man ir pieejama prognozēšanas brīdī, (c) vai laika logā ir iekļauta nākotne? Atzīmējiet to kā "nedrošu/aizdomīgu/noplūdi" un uzrakstiet iemeslu. Funkcijas: [saraksts]
2) Cauruļvads bez noplūdēm:
Sklearn konveijera iestatīšana: vispirms sadaliet vilcienu/testu (slāņots, sākuma = 42), PĒC TIKAI ievietojiet visu priekšapstrādi (imputāciju, mērogu, kodēšanu) TIKAI apmācības laikā. Paskaidrojiet, kāpēc kods ir bez noplūdes, kurš solis tika apgūts un kur.
3) Reproducējamības kontrolsaraksta kods:
Es vēlos savu analīzi padarīt reproducējamu. Iesakiet kodu/struktūru, kas pievieno: (1) cieto sēklu visai nejaušībai, (2) izmantoto bibliotēkas versiju drukāšanai, (3) datuma/versijas tagu datiem un izvadei. Sniedziet man arī kontrolsarakstu, lai pārliecinātos, ka nav manuālas darbības.
4) Grupēts nodalījums (viena un tā pati vienības noplūde):
Datos viens un tas pats customer_id pastāv vairākās rindās. Veiciet sadalījumu (GroupKFold vaiGroupShuffleSplit, grupa = klienta_id), kas NAVĻAUJ vienam un tam pašam klientam piedalīties gan apmācībā, gan testēšanā. Iekļaujiet kodu, lai pārbaudītu, vai pēc sadalīšanas abās komplektos nav neviena klienta.
Vāja uzvedne / spēcīga uzvedne
Vāja uzvedne:
Mans modelis atgrieza 98% precizitāti, vai tas nav lieliski? Optimizējiet kodu.
Svinot 98%, noplūde slēpjas. Pirms optimizācijas jāapšauba, vai šis rādītājs ir vai nav.
Spēcīga uzvedne:
Jūsu loma: noplūžu inspektors. Mans modelis testa komplektā atgriež 98% precizitāti, kas man izklausās "pārāk labi, lai būtu patiesība". Pārbaudiet: (1) vai kādas funkcijas ir mērķa rezultāts, (2) vai reklāmguvumi, kas veikti pirms sadalīšanas, (3) ir viena un tā pati vienība divās kopās, (4) vai nav laika noplūdes. Uzskaitiet visus aizdomīgos punktus; Koncentrējieties uz noplūdes atrašanu, nevis uz rezultātu novēršanu.
Šeit augsts rādītājs tiek uzskatīts par zīmi, kas jāapšauba, nevis jāsvin.
Biežas kļūdas
- Svinam "ļoti labu" rezultātu. Pārāk labi, lai būtu patiesība, ir brīdinājums par noplūdi, nevis sasniegums.
- Pārveidošanas apgūšana no visiem datiem pirms dalīšanas. Visizplatītākā noplūde; Vispirms sadaliet ar cauruļvadu.
- Laika rindu sadalīšana nejauši. Modelis redz nākotni; Hronoloģiskais sadalījums ir obligāts.
- Atstājot vienu un to pašu vienību divos komplektos. Modelis iegaumē cilvēku; Sadaliet pa grupām.
- Neiesaistoties manuāli un neierakstot kodu. Analīze kļūst nereproducējama; visam jābūt kodā un Gitā.
Padoms. Projekta sākumā ierakstiet divu teikumu "goda solījumu": "Es nekādi neesmu pieskāries testa komplektam, pirms es to redzu ražošanā. Katrs solis ir kodā, un sēkla ir fiksēta." Ja nevarat godīgi parakstīt šos divus teikumus, jūsu rezultāts vēl nav ticams.
Rezumējot
Datu noplūde un nereproducējamība ir divas visdārgākās klusās kļūdas datu zinātnē. Noplūde ir modeļa nākotnes vīzija un tiek pasniegta kā viltus panākumi; Risinājums ir agri sadalīt testa kopu, apgūt transformācijas tikai no apmācības (konveijera), uzdot katrai funkcijai jautājumu "Vai man tas ir prognozēšanas brīdī" un pareizi sadalīt (hronoloģiski/grupēti). Reproducējamība ir iespēja iegūt vienu un to pašu rezultātu divas reizes; viņa risinājums ir manuāli noņemt soļus, piespraust sēklu, iesaldēt versijas un saglabāt visu Git. AI var palielināt vai samazināt šos riskus; To nosaka jūsu disciplīna.
Lietojumprogrammas uzdevums
Paņemiet sava izveidotā modeļa (vai hipotētiskā) funkciju sarakstu un uzdodiet katram objektam jautājumu "vai man ir šī informācija prognozēšanas brīdī?" rakstiski; Atrodiet vismaz vienu noplūdes kandidātu. Pēc tam aizpildiet kontrolsarakstu, lai padarītu analīzi reproducējamu: vai sēkla ir labota, vai ir manuālas darbības, vai ir reģistrētas versijas, vai tās ir Git. Novērsiet trūkumus.
kontrolsaraksts
- [ ] Vai es vaicāju rezultātu "pārāk labi, lai būtu patiesība" kā brīdinājumu par noplūdi?
- [ ] Vai es uzzināju visas pārvērtības pēc sadalīšanas, tikai no apmācības?
- [ ] Vai esmu sadalījis pēc laika/grupas struktūras (hronoloģiskā/GroupKFold)?
- [ ] Vai esmu padarījis visu nejaušību atkārtojamu ar fiksētu sēklu?
- [ ] Vai es noņēmu manuālās darbības un saglabāju visu kodu un versiju kontroli?