Jednotka 6 / 11

Tvorba modelu: Definícia problému, výber algoritmu a rozdelenie tréningu/testu

zisky:

  • Schopnosť definovať typ problému (klasifikácia, regresia, zhlukovanie) a kritériá úspešnosti podľa skutočných nákladov na prácu
  • Schopnosť čestne rozdeliť dáta (bez dotyku testovacej sady; chronologicky v časovom rade) a vytvoriť základ pre vyhodnotenie bez úniku
  • Schopnosť vybrať si interpretovateľný model tak, že začnete s jednoduchou základnou líniou a pridáte zložitosť len vtedy, keď si to zaslúži.

Doteraz sme zhromaždili údaje, vyčistili ich, preskúmali a vytvorili funkcie. Teraz sa dostávame k skutočnej práci, stavaniu modelu. Model je matematická štruktúra, ktorá sa učí vzor z údajov a vytvára predpovede pre nové situácie. Najkritickejšou časťou vytvárania modelu však nie je samotný kód, ale dve rozhodnutia, ktoré mu predchádzajú: definovanie správneho problému a správne rozdelenie údajov. AI je výkonným poradcom pri výbere algoritmov, písaní kódu a ladení parametrov; ale je na rozhodnutí, čo predpovedať a čo znamená úspech. Zle definovaný problém nebude fungovať ani s dokonale napísaným modelom.

Najprv definícia problému: čo predpovedáme

Každá modelingová práca začína otázkou a táto otázka určuje typ modelky. Klasifikácia — výstupom je kategória: „Odíde tento zákazník alebo zostane?“, „Je táto transakcia falošná?“. Regresia (v angličtine regresia – výstupom je číslo): „Koľko stojí tento dom?“, „Koľko objednávok príde budúci mesiac?“. Klastrovanie (rozdelenie neoznačených údajov do prirodzených skupín): „Na koľko prirodzených segmentov sú rozdelení moji zákazníci?“.

Druhá časť problému je kritériom úspechu: čo znamená, že tento model je „dobrý“? V modeli podvodu je zmeškanie podvodníka oveľa drahšie ako náhodné zablokovanie čestného zákazníka; Do popredia sa teda dostáva nie „všeobecná presnosť“, ale „miera chytania podvodníkov“. Ak toto kritérium nedefinujete od začiatku, spolu s vlastníkom firmy sa dostanete k „veľmi presnému“ modelu, ktorý nefunguje (podrobnejšie sa budeme venovať metrikám v časti 7).

Pozor: „Presnosť“ môže byť zavádzajúca. Ak je 10 z 1000 transakcií podvodných, hlúpy model, ktorý hovorí, že „žiadna nie je podvodná“, poskytne 99% presnosť, ale nechytí ani jedného podvodníka. Vyberte si kritériá úspechu na základe skutočných nákladov na problém.

Tréning/test splitting: poctivé preskúšanie modelu

Testovanie modelu s údajmi, ktoré sa naučil, je ako klásť študentovi rovnaké otázky, aké študoval na skúške; Dostáva vysoké známky, ale neukazuje, čo skutočne vie. Údaje teda rozdelíme na dve (často tri):

  • Tréningová súprava (tréningová súprava v angličtine, zvyčajne 70-80%): Na tomto sa modelka učí.
  • Testovacia sada (testovacia sada, zvyčajne 20-30%): Model to vôbec nevidí; tu sa meria skutočný výkon.
  • Validačná sada: Stredná sada používaná na nastavenie modelu (ktorý parameter je lepší); aby bola testovacia súprava "čistá".

Najzákladnejšie pravidlo: testovacej súpravy sa počas tréningu nikdy nedotýkajte. Škálovanie, kódovanie, výber funkcií – všetko sa jednoducho naučia z tréningovej sady a potom sa aplikujú na testovanie (princíp úniku z jednotky 5). Testovacia sada je prvýkrát, čo model vidí skutočný svet; Ak ho zapnete príliš skoro, nikdy nepoznáte skutočný výkon.

Výnimka časových radov: Ak sú vaše údaje závislé od času (predaj, akciový trh, dopyt), náhodné rozdelenie sa nevykonáva. Pretože náhodné rozdelenie spôsobuje, že model vidí budúcnosť a predpovedá minulosť – ide o únik. Namiesto toho rozdeľte chronologicky: trénujte so starým obdobím, testujte s novým obdobím.

Výber algoritmu: od jednoduchých po zložité

Najčastejšou chybou začiatočníkov je začať s najkomplexnejším modelom. Správny prístup je opačný: najprv si vytvorte jednoduchú základnú líniu. "vždy hádajte triedu väčšiny" v klasifikácii; "vždy odhadnite priemer" v regresii. Tento hlúpy model dáva základ; Ak to váš skutočný model nedokáže splniť, vyskytol sa problém. Potom prejdite na jednoduché a interpretovateľné modely.

model

Typ problému

silná stránka

slabosť

Základná línia (väčšina/priemer)

oboje

Poskytuje benchmark

neučí sa

Logistická regresia

Klasifikácia

Jednoduché, interpretovateľné

Len lineárny vzťah

Lineárna regresia

regresia

Jednoduché, rýchle

lineárny predpoklad

rozhodovací strom

oboje

interpretovateľné

Ľahké zapamätanie

náhodný les

oboje

Silný, odolný

Menej interpretovateľné

Zosilnenie prechodu (XGBoost atď.)

oboje

veľmi silný

Ťažko sa prispôsobuje, riziko zapamätania

Pravidlo: vyberte si najjednoduchší „dosť dobrý“ model. Interpretovateľnosť je vo väčšine obchodných kontextov cennejšia ako moc; Je lepšie vysvetliť zamietnutie pôžičky „pretože váš pomer dlhu k príjmu je vysoký“ ako „pretože to povedala čierna skrinka“.

tri mini prípady

Prípad 1 – Nesprávna definícia problému. Tím vytvoril klasifikačný model založený na „je zákazník spokojný“, ale ako kritérium úspechu si zvolil „presnosť“. V údajoch bolo spokojných 88 % zákazníkov; Model získal 88% presnosť tým, že každého označil za „spokojného“ a nikdy nezachytil nespokojných ľudí – aj keď skutočným cieľom bolo ich nájsť. Ponaučenie: vyberte si kritériá úspechu na základe skutočného účelu.

Prípad 2 – Únik času v oddelení. V projekte prognózy dopytu boli údaje rozdelené náhodne. Model poskytoval presnosť 93 %, ale vo výrobe havaroval, pretože v tréningu predpovedal január, potom november s decembrovými údajmi – videl budúcnosť. Keď sme prešli na chronologické členenie, skutočný výkon sa zvýšil na 74 %. Lekcia: chronologické členenie v časových radoch.

Prípad 3 – Zbytočná zložitosť. Jeden analytik začal priamo s hlbokou neurónovou sieťou, ladil ju týždne a dosiahol presnosť 81 %. Potom kolega získal 80 % pomocou 20 riadkov logistickej regresie – oveľa rýchlejšie, interpretovateľné a jednoduchšie na údržbu. Ponaučenie: začnite so základnou líniou a jednoduchým modelom, pridajte zložitosť, keď si to zaslúži.

Štyri kopírovateľné šablóny

1) Objasnenie definície problému:

Vaša úloha: modelingový konzultant. Pomôžte mi definovať túto prácu: „Chcem znížiť odchod zákazníkov.“ Opýtajte sa ma a objasnite: (1) je toto klasifikácia alebo regresia, (2) čo presne je cieľová premenná a ako by mala byť definovaná, (3) aké by mali byť kritériá úspechu a prečo. Rozhodnutie je na mne; predložíte otázky a možnosti.

2) Bezpečný tréningový/testovací priestor:

Rozdeliť moje df na tréning/testovanie 80%/20%. Udržujte rozdelenie tried (stratify).random_state=42. Toto NIE JE ČASOVÁ SÉRIA (nezávislé pozorovania). Po rozdelení vytlačte pomer tried každej sady. Stačí zadať deliaci kód testovacej sade bez použitia akejkoľvek transformácie.

3) Časový rad chronologické členenie:

Údaje závisia od času (stĺpec dátumu: dátum_objednávky). NIE náhodné, rozdeľte chronologicky: najstarší 80% tréning, najnovšie 20% testovanie. Vytlačte si rozsahy dátumov školenia a testovania, aby som si mohol overiť, že budúcnosť neunikla.

4) Nastavenie základnej línie:

Mám problém s klasifikáciou (cieľ: churn 0/1). Najprv vytvorte základnú líniu: zmerajte presnosť tréningu/testovania pomocou DummyClassifier, ktorý vždy predpovedá väčšinovú triedu. Potom natrénujte jednoduchú logistickú regresiu a porovnajte, či prekoná základnú líniu. Ukážte metriky týchto dvoch vedľa seba.

Slabá výzva / Silná výzva

Slabá výzva:

S týmito údajmi zostavte najlepší model.

"Najlepšie" nie je definované; Neexistuje žiadny typ problému, žiadny cieľ, žiadne kritériá úspechu a žiadna stratégia rozdelenia. Umelá inteligencia generuje náhodný vzor, ​​ktorý môže byť netesný.

Výkonná výzva:

Vaša úloha: modelingový asistent. Problém: klasifikácia, cieľový "churn" (0/1), existuje triedna nerovnováha (~12% odchod). Kritérium úspešnosti: Prioritou je odvolanie tých, ktorí zatracujú. Pozorovanie nezávislé od údajov (nie časové rady). Úloha: (1) 80/20% stratifikované rozdelenie, (2) základná línia DummyClassifier, (3) logistická regresia, všetky transformácie v potrubí a naučené iba z tréningu. Pred rozdelením sa testovacej súpravy nedotýkajte.

Tu je jasný typ problému, nerovnováha, kritérium a miera úniku.

Časté chyby

  • Nevyberať si kritériá úspechu podľa skutočného účelu. „Presnosť“ v nevyvážených údajoch je zavádzajúca; Ak chcete zaujať menšinovú triedu, prichádza do popredia pripomenutie.
  • Dotýkanie sa testovacej súpravy počas tréningu. Robiť škálovanie/kódovanie pred rozdelením je netesné a skrýva skutočný výkon.
  • Náhodné rozdelenie v časových radoch. Model vidí budúcnosť, kolabuje vo výrobe; Nevyhnutné je chronologické členenie.
  • Skok do zložitého modelu bez vytvorenia základnej línie. Bez benchmarkov nemôžete vedieť, či je model naozaj dobrý alebo nie.
  • Ignorovanie interpretovateľnosti. Pri obchodných rozhodnutiach je jednoduchý vysvetliteľný model často cennejší ako čierna skrinka.
Tip: Skôr ako začnete zostavovať model, napíšte jednu vetu: „Tento model predpovedá _____, jeho úspech sa bude merať metrikou _____, pretože skutočná cena práce je _____.“ Ak nemôžete vyplniť túto vetu, ešte nie ste pripravení na písanie kódu.

V súhrne

Najkritickejšou časťou budovania modelu nie je kód, ale rozhodnutia, ktoré mu predchádzajú: definovanie správneho problému (klasifikácia alebo regresia, aký je cieľ, aké je kritérium úspešnosti) a spravodlivé rozdelenie údajov (bez toho, aby ste sa dotkli testovacej množiny; chronologicky v časovom rade). Vždy začnite s jednoduchou základnou líniou a zložitosť pridajte len vtedy, keď si to zaslúži; interpretovateľnosť sa vo väčšine obchodných kontextov cení nad mocou. Umelá inteligencia je výkonným poradcom pri výbere algoritmov a kódovaní, ale človek rozhoduje o tom, čo predpovedáte a prečo.

Aplikačná úloha

Definujte problém predikcie a dokončite písomne nasledujúcu vetu: „Tento model predpovedá ___ (klasifikácia/regresia), cieľom je ___, kritériom úspechu je ___, pretože ___. Potom rozdeľte údaje správnou stratégiou (chronologickou, ak ide o časový rad), vytvorte základnú líniu a zmerajte, či jednoduchý vzor túto základnú líniu porušuje.

kontrolný zoznam

  • [ ] Jasne som definoval typ problému (klasifikácia/regresia) a cieľ?
  • [ ] Vybral som si kritériá úspešnosti na základe skutočných nákladov na prácu?
  • [ ] Nechal som počas tréningu testovaciu súpravu nedotknutú?
  • [ ] Ak ide o časový rad, rozdelil som ho chronologicky?
  • [ ] Vytvoril som základnú líniu predtým, ako som prešiel na zložitý model?