Nyereség:
- Képes tartományismerettel értelmes származékos jellemzőket előállítani, és megfelelő módszerekkel kategorikus kategóriákat kódolni (one-hot, label, target)
- Lehetőség a numerikus változók modelltípus szerinti skálázására (szabványosítás, normalizálás), és elkerülhető a szükségtelen vagy hiányos skálázás
- Képes elkerülni a jellemzők szivárgását azáltal, hogy megtanulja az összes transzformációt a képzés/teszt felosztása után, és csak az edzésből
Van egy régi mondás a gépi tanulásban: "Az alkalmazott gépi tanulás lényegében a funkciótervezés." Mert egy modell sikere gyakran abból fakad, hogy milyen inputokat adunk a modellhez, nem pedig attól, hogy melyik algoritmust választjuk. A funkciótervezés a nyers adatokból értelmes jelek előállításának művészete, amelyekből a modell tanulhat. A mesterséges intelligencia ebben a szakaszban gazdag ötletforrás: amikor megkérdezzük, hogy „milyen tulajdonságok állíthatók elő ezekből az adatokból”, több tucat javaslatot sorol fel. De néhány ilyen javaslat értékes lehet, néhány haszontalan, és néhány veszélyes (szivárgás). A te dolgod, hogy megoldd.
Miért jellemző tervezés?
A nyers adatok ritkán jutnak el a modellhez a legjobb formában. Míg a "születési dátum" oszlop önmagában értelmetlen, az ebből generált "életkor" érték erős jelzés. Az olyan attribútumokat, mint a "hét napja", "nap/éjszaka", "szabadság van-e" kinyerheti a "rendelés időbélyegzőjéből". Két oszlopot kombinálhat arányszám ("adósság/jövedelem arány") létrehozásához. Itt a funkciótervezés a tartományi tudást matematikai jellé fordítja; És pontosan ezért ez az a színpad, amelyik a legtöbb emberi intelligenciát igényli.
Kategorikus változók számokká konvertálása: kódolás
A modellek általában számokkal, nem szöveggel működnek. A kategorikus változók (például város, szín, terméktípus) számokká alakítását kódolásnak nevezzük. Három általános módszer:
Egyszeri kódolás: Külön oszlopot nyit meg 0/1 értékkel minden kategóriához. A "város" számára Isztambul, Ankara, Izmir oszlopokat alakítanak ki; Ha egy ügyfél Isztambulból származik, csak ez az oszlop lesz 1. Ideális, ha a kategóriák száma kicsi; Ha túl sok a kategória, akkor több száz oszlopot állít elő (ezt hívják "méretrobbanásnak").
Címkekódolás: Minden kategóriához egy számot ad (Isztambul=0, Ankara=1). Egyszerű, de előfordulhat, hogy véletlenül egy sorozatot tanít meg a modellnek (például Ankara > Isztambul); ezért óvatosan használják a rendezetlen kategóriákban.
Célkódolás: Minden kategóriát lecserél az adott kategória célváltozójának átlagára. Nagyon erős, de a legveszélyesebb szivárgásforrás: ha figyelembe vesszük a tesztadatok célpontját, a modell látja a jövőt. Kizárólag az edzési adatokból és körültekintően (a keresztellenőrzésen belül) kell kiszámítani.
Méretezés: a nagy számok nem nyomják túl a modellt
Egyes modellek (távolság alapúak, lineáris modellek, neurális hálózatok) érzékenyek a változók skálájára. Ha a "jövedelem" (0-500 000) és az "életkor" (0-100) ugyanabba a mintába esik, a jövedelem dominálhat egyszerűen azért, mert nagyobb. A méretezés megoldja ezt. Két elterjedt módszer: a szabványosítás (az egyes értékeket "hány standard eltérésre alakítja át az átlagtól") és normalizálás (min-max normalizálás - az értékeket 0-1 tartományba tömöríti). A fa alapú modellek (döntési fák, véletlenszerű erdő) méretaránytalanok, nem igényelnek skálázást.
Figyelem: A skálázási és kódolási paramétereket (átlag, szórás, kategória-átlag leképezés) csak a betanítási adatokból szabad kiszámítani, majd ugyanezt kell alkalmazni a tesztadatokra is. A tesztadatok belefoglalása szivárgást jelent, és a modelled jobban néz ki, mint amilyen valójában.
A szivárgás szíve a funkciótervezésben
A funkciók generálása az a hely, ahol leggyakrabban adatszivárgás származik. Két tipikus hiba: Időszivárgás – olyan funkció létrehozása, amely jövőbeli információkat tartalmaz (beleértve az előrejelzési nap utáni napokat is, amikor az „utolsó 30 nap átlagát” számítjuk). Statisztikai szivárgás – egy jellemző (skálázási átlag, célkódolási érték) kiszámítása az összes adatból a betanítás/teszt felosztása előtt. Szabály: tanuljon meg minden transzformációt a vonat/teszt felosztás elvégzése után, és csak a betanítási adatokból. Ennek legbiztonságosabb módja a rendszeres csővezeték használata – egy olyan szerkezet, amely egyetlen láncba gyűjti az összes transzformációt, és felosztás után alkalmazza azokat.
módszer
minek
Szivárgásveszély
megjegyzés
One-hot kódolás
Változó néhány kategóriával
alacsony
Több kategóriában is méretezhető
Címkekódolás
Rendezett kategória
alacsony
Az Out of order rossz rendet tanít
célkódolás
Több kategóriás, erős jel
nagyon magas
Csak végzettségből, önéletrajzban
szabványosítás
Lineáris/távolsági modellek
közepes
A paraméter csak az iskolai végzettségtől függ
Időablak funkció
idősorok
magas
Adja hozzá a jövőt
három mini tok
1. eset – Értékes ingatlan. Egy hitelezési csapat létrehozta az „adósság/jövedelem arány” funkciót a nyers „havi bevétel” és „havi adósságfizetés” oszlopokból. Ez az egyetlen származtatott jellemző 71%-ról 79%-ra növelte a modell pontosságát; mert a kockázatot valójában a ráta határozta meg, nem az abszolút jövedelem. Tanulság: a tartományi tudás által generált arányok erős jelzések.
2. eset – Célkódolási szivárgás. Az egyik csapat az „irányítószámot” számmá alakította a célkódolással (az átlagos lemorzsolódási arány az adott területen), de ezt az összes adatból tette a felosztás előtt. A modell 94%-ot adott a tesztkészleten, ezzel 68%-ra esett vissza a termelés. 6 hét kárba veszett erőfeszítés. Tanulság: a célkódolás óvatosan, csak edzésen belül történik.
3. eset – Méretezés elfelejtése. Az egyik elemző a bevételt (0-400 000) és az ügyfelek életkorát (18-75) betáplálta egy távolságalapú modellbe, méretezés nélkül. A modell szinte kizárólag a jövedelmet vizsgálta, letörve az életkor hatását. A méretezés hozzáadásával a szegmentálás értelmessé vált. Tanulság: a távolság/lineáris modelleknél a méretezést sem hanyagoljuk el.
Négy másolható sablon
1) Funkcióötlet generálása (a kiküszöbölése Önön múlik):
Az Ön szerepköre: műszaki asszisztens. Df oszlopaim: születési_dátum, rendelési_idő (időbélyeg), bevétel_cím, adósság_címe, város, termék_kategória. Cél: „törlesztik-e a kölcsönt” (0/1). Javasoljon 15 funkciót, amely ezekből az oszlopokból generálható; határozza meg mindegyiknél a szivárgás kockázatát (alacsony/közepes/magas). Jól jelölje meg azokat, amelyek jövőbeli információkat tartalmaznak.
2) Biztonságos kódolás (utáni felosztás):
Írjon egy olyan kódot, amely a "city" és a "product_category" szavakat kódolja. FONTOS: a kódolást csak a képzési adatokhoz illessze, majd alakítsa át a tesztadatokat (sklearn OneHotEncoder segítségével). Magyarázza el, hogyan kezeli a nem látott kategóriát (handle_unknown) az oktatásban.
3) Szivárgásmentes átalakítás csővezetékkel:
Sklearn Pipeline beállítása: alkalmazza a StandardScalert a numerikus oszlopokra, a OneHotEncodert a kategorikus oszlopokra, és adjon hozzá egy osztályozót a végéhez. Garantáljuk, hogy az összes átalakítást a vonat/teszt felosztás UTÁN, és csak a képzésből tanuljuk meg. Magyarázza el a kódot és azt, hogy miért nem szivárog.
4) Időablak funkció (szivárgás ellenőrzése):
Minden egyes vásárlóhoz hozza létre a „rendelések száma az elmúlt 30 napban” attribútumot, de SOHA ne adjon meg az előrejelzési nap utáni adatokat. Magyarázza el sorról sorra, hogy a kód nem néz a jövőbe. Megadom a referencia dátum oszlopát.
Gyenge felszólítás / Erős felszólítás
Gyenge felszólítás:
Adjon hozzá jó tulajdonságokat ehhez az adathoz.
A „jó” nem definiált, a cél nem egyértelmű, nincs szivárgásellenőrzés. Az AI véletlenszerű, esetleg kiszivárogtató funkciókat generál.
Erőteljes felszólítás:
Az Ön szerepe: szolgáltatásmérnök. Cél: "lemorzsolódás 30 napon belül" (0/1), becsült referenciadátum: mentés_dátuma. Tranzakciós előzmények találhatók a df.Task-ban: 8 szolgáltatás létrehozása, és válaszoljon a „Rendelkezésre áll ez az információ az előrejelzés időpontjában” kérdésre MINDENKINEK. A dátum hozzáadása a referenciadátum után az időablak szolgáltatásaiban. Írja le a kódot pipeline-kompatibilis módon, hogy a vonat/teszt szakasz után végre lehessen hajtani.
Itt a cél, a referenciaidő és a szivárgásszabályozás kezdettől fogva definiálva van.
Gyakori hibák
- A transzformáció megtanulása minden adatból osztás előtt. Ha a skálázási/kódolási paraméter látja a tesztadatokat, szivárgás lép fel.
- A célkódolás hanyag használata. Ez a legerősebb, de leginkább szivárgó módszer; csak képzésből, keresztellenőrzésben.
- A jövő hozzáadása egy időablak funkcióval. Ha az "utolsó 30 nap" számítást az előrejelzési nap után adja meg, a modell a jövőt látja.
- Felesleges skálázás a fa modellben és hiányos skálázás a lineáris modellben. A méretezési döntéseket a modell típusának megfelelően hozzák meg.
- Az AI minden funkciójavaslatának hozzáadása kérdés nélkül. A javaslatok tartalmazhatnak haszontalan és szivárgó funkciókat.
Tipp: Írjon fel egy kérdést minden egyes generált funkcióhoz: „Kiszámíthatom ezt az értéket a jóslat készítésekor birtokomban lévő információk alapján?” Ha a válasz nem egyértelmű „igen”, ne használja a funkciót. Ez az egyetlen fegyelem kiküszöböli a legtöbb szolgáltatással kapcsolatos szivárgást.
Összefoglalva
A funkciótervezés a nyers adatokból értelmes jelek generálásának művészete, és gyakran jobban meghatározza a modell sikerét, mint az algoritmus. A kategóriák kódolása (egyszeres, címke, cél), a numerikus értékek skálázása (szabványosítás, normalizálás) és a származékos jellemzők előállítása tartományismerettel az alapvető eszközök. De ez a fázis egyben a szivárgás szíve is: minden transzformációt a betanítás/teszt split után és csak a betanítási adatokból kell megtanulni. Az AI rengeteg ötletet generál; Az emberi ítélőképesség az, ami megkülönbözteti az értékestől a veszélyestől.
Pályázati feladat
Válasszon egy célváltozót, és tervezzen meg legalább öt származékos jellemzőt a rendelkezésre álló oszlopokból. Mindegyik esetében válaszoljon írásban a "rendelkezésre állok-e az előrejelzés időpontjában" kérdésre, és legalább egyet szüntessen meg, mint "nagy a szivárgási kockázat". Ezután kódolja a biztonságos funkciókat egy folyamatban, amelyet a partíció után kell megvalósítani.
ellenőrző lista
- [ ] Alkalmaztam minden átalakítást a vonat/teszt felosztás után?
- [ ] Csak a skálázási/kódolási paramétereket tanultam meg a képzésből?
- [ ] Megválaszoltam az egyes funkcióknál a „megvan az előrejelzés időpontjában” kérdést?
- [ ] Különös figyelmet fordítottam a magas kockázatú módszerekre, például a célkódolásra?
- [ ] Úgy döntöttem, hogy a modelltípusnak megfelelően méretezek (fa/lineáris)?