Nyereség:
- Képes felismerni az adatszivárgás típusait (cél, idő, előfeldolgozás, csoportos sor), és riasztásként lekérdezni a „túl szép, hogy igaz legyen” pontszám
- Képes a szivárgás megelőzésére a tesztkészlet, a csővezeték korai szétválasztásával és a helyes felosztással (időrendben/csoportosítva)
- Az elemzés reprodukálhatóvá tétele rögzített magokkal, verzióvezérléssel és a kézi lépések eltávolításával
Két hiba pazarolja a legtöbb erőfeszítést az adattudományban, és mindkettő alattomos, mert éppen akkor vezetnek katasztrófához, amikor „úgy tűnik, hogy minden rendben van”. Az első az adatszivárgás: a modell remekül működik a tesztkészleten, de a gyártás során összeomlik. A második a reprodukálhatatlanság: hat hónappal később lefuttat egy elemzést, és teljesen más eredményt kap. Ez az egység célja ennek a két buktatónak a mélyreható ismerete és elkerülése. A mesterséges intelligencia mindkét kockázatot növelheti (gyorsan generál, rejtett szivárgásokat javasol, megkönnyíti a kézi lépések megtételét), de helyes használat esetén csökkentheti is. A különbség a fegyelemben van.
Adatszivárgás: tisztánlátó modell
Adatszivárgásról van szó, amikor a modell olyan információkat lát a képzés során, amelyekkel a tényleges előrejelzés időpontjában nem rendelkezik. A modell "csal" ezzel az információval, remekül néz ki a tesztkészleten, de a gyártásban ezen információk nélkül összeomlik. A szivárgás tünete szinte mindig ugyanaz: túl szép, hogy igaz legyen. Mielőtt örülne, amikor 99%-os pontosságot lát, meg kell keresnie a szivárgást.
A szivárgás fő típusai a következők:
1. Gólszivárgás: A jellemző a gól eredménye. A "törölve" előrejelzésben a "lemondás dátuma" vagy a "visszatérítés összege" oszlopok a cél eredménye; Csak akkor töltik ki, ha az eredmény egyértelmű.
2. Időszivárgás: A jövő információinak elhozása a múltba. Az "utolsó 30 nap átlagának" kiszámításakor vegye figyelembe az előrejelzési nap utáni napokat, vagy ossza el véletlenszerűen az idősort.
3. Előfeldolgozási szivárgás: Transzformációk, például méretezés, kitöltés, kódolás megtanulása minden adatból a betanítási/tesztelési partíció előtt. A tesztadatok átlagolása zavarja a képzést.
4. Duplikált/csoportosított sorszivárgás: Ugyanahhoz a személyhez tartozó sorok jelen vannak mind a képzésben, mind a tesztelésben (ugyanannak a páciensnek két látogatása különböző sorozatokban). A modell megjegyzi az embert.
Szivárgás típusa
Hogyan születik
Hogyan lehet megelőzni
cél szivárgás
Oszlop, amely a cél eredménye
"Megvan-e az előrejelzés időpontjában" teszt
időszivárgás
A jövőt a múltba hozni
Időrendi felosztás, ablakvezérlés
Előfeldolgozási szivárgás
Előre osztott átalakítás
Csővezeték, edzésből készült
Csoportosított sor szivárgás
Ugyanaz az egység két készletben
Csoportonkénti felosztás (GroupKFold)
Az egyetlen szabály a szivárgás megelőzésére
A közös megoldás minden típusú szivárgás esetén egy mondatban merül ki: A tesztkészletet minél hamarabb izolálja, hogy utánozza a valós jövőt, és ne „tanítson” rá semmit. Ez a gyakorlatban azt jelenti, hogy először osszuk el, majd csak a képzésből tanuljuk meg az összes transzformációt és alkalmazzuk azokat pipeline-ban (egy láncba gyűjtő struktúra). Minden egyes funkciónál tedd fel a „rendelkezem ezzel az információval az előrejelzés időpontjában?” kérdést. Ha van idő, osszuk el időrendben; Ha ugyanaz az egység ismétlődik, ossza csoportokra.
Vigyázat: A szivárgás legveszélyesebb aspektusa az, hogy sikeresnek tűnik. Egy rossz modell nyilvánvalóan rossz eredményeket produkál, és észreveszik; Egy kiszivárgott modell remekül működik, mindenkinek tetszik, és gyártásba kerül – itt kezdődik az összeomlás. Éppen ezért a „nagyon jó” eredmény aggodalomra ad okot, nem pedig az ünneplésre.
Reprodukálhatóság: kétszer ugyanaz az eredmény
A reprodukálhatóság az a képesség, hogy ugyanazt az eredményt kapjuk, amikor máskor, egy másik gépen újra futtatunk egy elemzést. E nélkül az elemzésed mellékes, nem tudományos. A reprodukálhatóságot rontó fő okok és megoldások:
Kézi lépések: Cellák manuális módosítása Excelben, diagram kézi szerkesztése. Megoldás: minden lépés a kódban legyen.
Rögzítetlen véletlenszerűség: A modellképzés, a mintavétel, a felosztás véletlenszerűséggel jár. Megoldás: rögzítse a véletlen magot (a véletlen generátor kezdeti értékét) (random_state=42).
Verzióváltások: Az eredmény változhat, ha a könyvtár verziója megváltozik. Megoldás: a függőségek javítása (requirements.txt, környezetfájl).
Nincs nyilvántartás: Nem egyértelmű, hogy melyik adatot, melyik kódot, melyik paramétert használtuk. Megoldás: verziókezelés (Git – a kód összes verzióját elmentő rendszer) és adatverziókezelés.
"Csak az én gépemen működik": Megoldás: dokumentálja a környezetet, lehetőség szerint használjon konténereket (Docker).
három mini tok
1. eset – Cél szivárgás. Egy egészségügyi elemzésben szerepelt a "kibocsátás utáni gyógyszeres kezelés" rovat, amely megjósolta, hogy "újból felveszik-e a beteget". Ezt az oszlopot csak a beteg elbocsátása után töltötték meg. A modell 96%-ot, a gyártásban 61%-ot adott. A 8 hetes projekt szemét volt. Tanulság: kérdezze meg minden egyes funkciót: "van-e jelen az előrejelzés időpontjában?"
2. eset – Előfeldolgozási szivárgás. Az egyik csapat az összes adatot átméretezte, majd felosztotta. A tesztadatok átlaga szerepet játszott a skálázásban. CV pontszám 89%, tényleges termelés 76%. Az álsiker eltűnt, amikor a Pipeline-hez költöztem, és csak edzésből tanultam az átalakulásokat. Tanulság: először oszd meg, később alakítsd át.
3. eset – A reprodukálás elmulasztása. Egy elemző frissíteni akarta a diagramot, amelyet három hónappal később mutatott be a vezetőségnek, de nem emlékezett, hogyan készítette el; sok lépést kézzel hajtottak végre Excelben. Az eredmény nem jött be, a bizalom megrendült. Tanulság: nincs kézi lépés, minden kódban és Gitben van.
Négy másolható sablon
1) Szivárgásvizsgálat:
Az Ön szerepe: szivárgásvizsgáló. Cél: "churn" (0/1), előrejelzés referencia dátuma: rekord_dátum. Megadom a funkciók listáját. MINDEN jellemzőnél: (a) a cél következménye, (b) elérhető-e számomra az előrejelzés időpontjában, (c) az időablak tartalmazza-e a jövőt? Jelölje meg "nem biztonságos/gyanús/szivárgás"-ként, és írja be az okot. Jellemzők: [lista]
2) Szivárgásmentes csővezeték:
Sklearn Pipeline beállítása: először ossza fel a vonatot/tesztet (rétegzett, seed=42), majd illessze be az összes előfeldolgozást (imputálás, méretezés, kódolás) a folyamatba CSAK a betanításból. Magyarázza el, miért szivárgásmentes a kód, melyik lépést hol tanulták meg.
3) Reprodukálhatósági ellenőrzőlista kódja:
Az elemzésemet reprodukálhatóvá szeretném tenni. Javasoljon olyan kódot/struktúrát, amely hozzáadja a következőket: (1) kemény mag minden véletlenszerűséghez, (2) a felhasznált könyvtári verziók nyomtatása, (3) dátum/verziócímke az adatokhoz és a kimenethez. Adjon egy ellenőrzőlistát is, hogy megbizonyosodjon arról, hogy nincsenek kézi lépések.
4) Csoportos partíció (ugyanaz az egység szivárgása):
Az adatokban ugyanaz a customer_id több sorban szerepel. Hozzon létre egy felosztást (GroupKFold vagyGroupShuffleSplit, group = customer_id), amely MEGELŐZI, hogy ugyanaz az ügyfél legyen képzésben és tesztelésben is. Adjon meg kódot annak ellenőrzésére, hogy a felosztás után nincs-e ügyfél mindkét készletben.
Gyenge felszólítás / Erős felszólítás
Gyenge felszólítás:
A modellem 98%-os pontosságot adott vissza, nem nagyszerű? Optimalizálja a kódot.
A 98% ünneplése elrejti a szivárgást. Az optimalizálás előtt meg kell kérdőjelezni, hogy ez a pontszám valós-e vagy sem.
Erőteljes felszólítás:
Az Ön szerepe: szivárgásvizsgáló. A modellem 98%-os pontosságot ad vissza a tesztkészleten, ami számomra "túl szépnek tűnik, hogy igaz legyen". Ellenőrizze: (1) a cél eredménye-e valamilyen jellemző, (2) a felosztás előtt végrehajtott átalakítások, (3) ugyanaz az egység két halmazban, (4) van-e időszivárgás. Sorolja fel a gyanús pontokat; Koncentrálj a szivárgás megtalálására, ne a pontszám javítására.
Itt a magas pontszámot megkérdőjelezendő jelként kezelik, nem pedig ünnepelni.
Gyakori hibák
- Ünnepeljük a "nagyon jó" eredményt. A túl jó ahhoz, hogy igaz legyen, egy szivárgási riasztás, nem pedig teljesítmény.
- A transzformáció megtanulása minden adatból osztás előtt. A leggyakoribb szivárgás; Oszd fel először csővezetékkel.
- Az idősorok véletlenszerű felosztása. A modell a jövőt látja; A kronológiai felosztás kötelező.
- Ugyanazt az egységet két készletben hagyva. A modell megjegyzi a személyt; Csoportonkénti felosztás.
- Nem lép be kézzel és nem ír be a kódba. Az elemzés reprodukálhatatlanná válik; mindennek kódban és Gitben kell lennie.
Tipp: Írjon egy kétmondatos "becsületbeli fogadalmat" a projektje elejére: "Semmilyen módon nem nyúltam a tesztkészlethez, mielőtt láttam volna a gyártásban. Minden lépés benne van a kódban, és a magot rögzítettem." Ha ezt a két mondatot nem tudja őszintén aláírni, az eredmény még nem megbízható.
Összefoglalva
Az adatszivárgás és a reprodukálhatatlanság az adattudomány két legdrágább csendes hibája. A szivárgás a modell jövőképe, és hamis sikerként jelenik meg; A megoldás az, hogy a tesztkészletet korán felosztjuk, a transzformációkat csak edzésből tanuljuk meg (pipeline), feltesszük minden jellemzőnek a „Megvan-e az előrejelzés időpontjában” kérdést, és helyesen felosztjuk (időrendben/csoportosítva). A reprodukálhatóság az, ha kétszer ugyanazt az eredményt lehet elérni; az ő megoldása az, hogy kézzel eltávolítja a lépéseket, rögzíti a magot, lefagyasztja a verziókat, és mindent a Gitben tart. A mesterséges intelligencia növelheti vagy csökkentheti ezeket a kockázatokat; A fegyelmezettséged határozza meg.
Pályázati feladat
Vegyük fel egy általunk felépített (vagy egy hipotetikus) modell jellemzőlistáját, és tegyük fel mindegyik jellemzőnek a kérdést: "Remekem van ez az információ az előrejelzés időpontjában?" írásban; Keressen legalább egy kiszivárogtatásra jelöltet. Ezután töltsön ki egy ellenőrzőlistát, hogy az elemzés reprodukálható legyen: javítva van-e a mag, vannak-e kézi lépések, regisztrálva vannak-e a verziók, Gitben vannak-e. Javítsa ki a hiányosságokat.
ellenőrző lista
- [ ] Lekérdeztem a "túl szép, hogy igaz legyen" pontszámot szivárgási riasztásként?
- [ ] Megtanultam az összes átalakulást a split után, csak edzésből?
- [ ] Osztottam az idő/csoportstruktúra szerint (időrendben/GroupKFold)?
- [ ] Minden véletlenszerűséget megismételhetővé tettem rögzített maggal?
- [ ] Eltávolítottam a kézi lépéseket, és mindent a kód- és verzióvezérlésben tartottam?