Enota 6 / 11

Gradnja modela: definicija problema, izbira algoritma in razdelitev usposabljanja/testiranja

Dobički:

  • Sposobnost definiranja tipa problema (razvrstitev, regresija, grozdenje) in kriterijev uspešnosti glede na realne stroške dela
  • Sposobnost poštene razdelitve podatkov (brez dotikanja testnega niza; kronološko v časovni vrsti) in vzpostavitve ocenjevalne osnove brez uhajanja
  • Sposobnost izbire modela, ki ga je mogoče interpretirati, tako da začnete s preprosto osnovo in dodate kompleksnost šele, ko si to zasluži.

Doslej smo zbirali podatke, jih čistili, raziskovali in izdelovali funkcije. Zdaj smo pri pravem delu, gradnji modela. Model je matematična struktura, ki se iz podatkov nauči vzorca in ustvari napovedi za nove situacije. Toda najbolj kritičen del gradnje modela ni koda sama, temveč dve odločitvi pred njo: definiranje pravega problema in pravilna razdelitev podatkov. AI je močan svetovalec pri izbiri algoritmov, pisanju kode in nastavljanju parametrov; vendar se sam odloči, kaj napovedati in kaj pomeni uspeh. Slabo definiran problem ne bo deloval niti s popolnoma napisanim modelom.

Najprej opredelitev problema: kaj napovedujemo

Vsako manekensko delo se začne z vprašanjem in to vprašanje določa vrsto modela. Razvrstitev — rezultat je kategorija: "Ali bo ta stranka odšla ali ostala?", "Ali je ta transakcija lažna?". Regresija (v angleščini regresija - rezultat je število): "Koliko je vredna ta hiša?", "Koliko naročil bo prišlo naslednji mesec?". Grozdenje (razdelitev neoznačenih podatkov v naravne skupine): "Na koliko naravnih segmentov so razdeljene moje stranke?".

Drugi del navedbe problema je merilo uspeha: kaj pomeni, da je ta model "dober"? V modelu goljufije je zamuditi goljufa veliko dražje kot po nesreči blokirati pošteno stranko; Zato v ospredje ne prihaja »splošna natančnost«, temveč »stopnja lovljenja goljufov«. Če tega kriterija ne definirate že na začetku, skupaj z lastnikom podjetja, boste na koncu dobili "zelo natančen" model, ki ne deluje (v 7. enoti se bomo poglobili v metrike).

Pozor: »Natančnost« je lahko zavajajoča. Če je 10 od 1000 transakcij goljufivih, bo neumen model, ki pravi, da "nobena ni goljufiva", dal 99-odstotno natančnost, vendar ne bo ujel niti enega goljufa. Izberite merila uspeha na podlagi dejanske cene problema.

Razdelitev usposabljanja/testiranja: pošten pregled modela

Preizkušanje modela s podatki, ki se jih je naučil, je tako, kot če bi študentu postavili ista vprašanja, kot jih je študiral na izpitu; Dobiva visoke ocene, vendar ne pokaže, kaj v resnici zna. Podatke torej razdelimo na dva (pogosto tri):

  • Nabor za usposabljanje (nabor za usposabljanje v angleščini, običajno 70-80 %): Model se uči na tem.
  • Testni niz (testni niz, običajno 20-30%): Model tega sploh ne vidi; tukaj se meri dejanska uspešnost.
  • Validacijski niz: Vmesni niz, ki se uporablja za nastavitev modela (kateri parameter je boljši); da bo testni set "čist".

Najosnovnejše pravilo: med vadbo se testne garniture nikoli ne dotikamo. Skaliranje, kodiranje, izbira funkcij — vsega se preprosto naučimo iz nabora za usposabljanje in nato uporabimo pri testiranju (načelo uhajanja iz enote 5). Testni niz je model, v katerem prvič vidi resnični svet; Če ga vklopite prezgodaj, ne boste nikoli izvedeli prave zmogljivosti.

Izjema časovne vrste: če so vaši podatki odvisni od časa (prodaja, borza, povpraševanje), se naključna delitev ne izvede. Ker naključna delitev povzroči, da model vidi prihodnost in napoveduje preteklost - to je uhajanje. Namesto tega razdelite kronološko: trenirajte s starim obdobjem, testirajte z novim obdobjem.

Izbira algoritma: od enostavnega do zapletenega

Najpogostejša napaka začetnikov je, da začnejo z najbolj zapletenim modelom. Pravilen pristop je nasproten: najprej določite preprosto izhodišče. "vedno ugani večinski razred" v razvrstitvi; "vedno oceni povprečje" v regresiji. Ta neumni model daje osnovo; Če vaš dejanski model tega ne prenese, obstaja težava. Nato nadaljujte s preprostimi in razumljivimi modeli.

model

Vrsta težave

močna točka

šibkost

Izhodišče (večina/povprečje)

oboje

Daje merilo

ne uči

Logistična regresija

Razvrstitev

Enostavno, razumljivo

Samo linearni odnos

Linearna regresija

regresija

Enostavno, hitro

linearna predpostavka

odločitveno drevo

oboje

razlagati

Enostavno pomnjenje

naključni gozd

oboje

Močna, trpežna

Manj razumljivo

Gradientno povečanje (XGBoost itd.)

oboje

zelo močan

Težko prilagajanje, nevarnost zapomnitve

Pravilo: izberite najpreprostejši "dovolj dober" model. Interpretabilnost je v večini poslovnih kontekstov dragocenejša od moči; Bolje je razložiti zavrnitev posojila, "ker je razmerje med vašim dolgom in dohodkom visoko", kot "ker je tako rekla črna skrinjica."

trije mini kovčki

1. primer – Napačna definicija problema. Ekipa je zgradila model razvrščanja na podlagi "ali je stranka zadovoljna", vendar je kot merilo uspeha izbrala "natančnost". V podatkih je bilo 88 % strank zadovoljnih; Model je dosegel 88-odstotno natančnost, saj je vse označil za "zadovoljne" in nikoli ni ujel nezadovoljnih ljudi - čeprav je bil pravi cilj najti jih. Lekcija: izberite merila uspeha na podlagi resničnega namena.

Primer 2 – Uhajanje časa v predelku. V projektu napovedovanja povpraševanja so bili podatki naključno razdeljeni. Model je dal 93-odstotno natančnost, vendar se je v proizvodnji zrušil, ker je med usposabljanjem napovedal januar, nato november z decembrskimi podatki – videl je prihodnost. Ko smo prešli na kronološko delitev, se je dejanska uspešnost povečala na 74 %. Lekcija: kronološka razdelitev v časovne vrste.

Primer 3 – Nepotrebna zapletenost. En analitik je začel neposredno z globoko nevronsko mrežo, jo nastavljal tedne in dosegel 81-odstotno natančnost. Nato je kolega dobil 80 % z 20 vrsticami logistične regresije — veliko hitreje, razumljivo in lažje za vzdrževanje. Lekcija: začnite z osnovno črto in preprostim modelom, dodajte kompleksnost, ko si to zasluži.

Štiri predloge za kopiranje

1) Pojasnitev definicije problema:

Vaša vloga: svetovalka za manekenstvo. Pomagajte mi definirati to delovno mesto: "Želim zmanjšati odliv strank." Vprašajte me in razjasnite: (1) ali je to klasifikacija ali regresija, (2) kaj točno je ciljna spremenljivka in kako naj bo definirana, (3) kaj naj bodo merila uspeha in zakaj. Odločitev je moja; predstavite vprašanja in možnosti.

2) Varen predel za vadbo/test:

Razdeli moj df na usposabljanje/testiranje 80%/20%. Ohranite razredno porazdelitev (stratificirajte).random_state=42. To NI ČASOVNA NIZA (neodvisna opazovanja). Natisnite razredno razmerje vsakega niza po delitvi. Preprosto dajte razdelitveno kodo testnemu nizu brez uporabe kakršne koli transformacije.

3) Časovna vrsta kronološka delitev:

Podatki so odvisni od časa (datumski stolpec: order_date). NI naključno, razdelite kronološko: najstarejše 80 % usposabljanje, najnovejše 20 % testiranje. Natisnite datume usposabljanja in testiranja, da lahko preverim, ali prihodnost ni pricurljala.

4) Nastavitev izhodišča:

Imam težavo s klasifikacijo (cilj: odliv 0/1). Najprej določite izhodišče: izmerite natančnost usposabljanja/testiranja z DummyClassifier, ki vedno napove večinski razred. Nato urite preprosto logistično regresijo in primerjajte, ali presega osnovno vrednost. Pokažite meritve obeh vzporedno.

Šibek poziv/močan poziv

Šibek poziv:

S temi podatki zgradite najboljši model.

"Najboljši" je nedefiniran; Ni vrste problema, ni cilja, ni meril uspeha in ni strategije delitve. Umetna inteligenca generira naključen vzorec, ki morda pušča.

Močan poziv:

Vaša vloga: pomočnik modela. Težava: razvrstitev, ciljni "odliv" (0/1), obstaja razredno neravnovesje (~12 % odliv). Merilo uspeha: prednostna naloga je odpoklic tistih, ki odstopajo. Podatkovno neodvisno opazovanje (ne časovne vrste). Naloga: (1) 80/20 % stratificirana delitev, (2) izhodiščna linija DummyClassifier, (3) logistična regresija, vse transformacije v cevovodu in naučene samo z usposabljanjem. Ne dotikajte se testnega kompleta, preden ga razdelite.

Tu so jasni vrsta problema, neuravnoteženost, merilo in mera puščanja.

Pogoste napake

  • Neizbira meril uspeha glede na pravi namen. »Natančnost« v neuravnoteženih podatkih je zavajajoča; Če želite ujeti manjšinski razred, pride v ospredje odpoklic.
  • Dotikanje testnega kompleta med vadbo. Izvajanje skaliranja/kodiranja pred delitvijo je nezapleteno in skriva resnično zmogljivost.
  • Naključna delitev v časovni vrsti. Model vidi prihodnost, kolaps v proizvodnji; Nujna je kronološka delitev.
  • Skok v zapleten model brez vzpostavitve osnovne linije. Brez meril uspešnosti ne morete vedeti, ali je model res dober ali ne.
  • Ignoriranje interpretabilnosti. Pri poslovnih odločitvah je preprosto razložljiv model pogosto bolj dragocen kot črna skrinjica.
Namig: Preden začnete graditi model, napišite en stavek: "Ta model bo napovedal _____, njegov uspeh bo merjen z metriko _____, ker je dejanski strošek dela _____." Če ne morete izpolniti tega stavka, še niste pripravljeni napisati kode.

Če povzamem

Najbolj kritičen del gradnje modela ni koda, ampak odločitve, ki so pred njo: definiranje pravega problema (razvrstitev ali regresija, kaj je cilj, kaj je merilo uspeha) in pravična razdelitev podatkov (brez dotikanja testnega niza; kronološko v časovni vrsti). Vedno začnite s preprosto osnovo in dodajte kompleksnost šele, ko si to zasluži; interpretabilnost je v večini poslovnih kontekstov cenjena pred močjo. AI je močan svetovalec pri izbiri algoritmov in kode, vendar se človek odloči, kaj napovedujete in zakaj.

Aplikacijska naloga

Opredelite težavo napovedi in pisno dokončajte naslednji stavek: "Ta model bo napovedal ___ (razvrstitev/regresija), cilj je ___, merilo uspeha je ___, ker ___." Nato razdelite podatke s pravo strategijo (kronološko, če gre za časovno vrsto), določite izhodišče in izmerite, ali preprost vzorec krši to izhodišče.

kontrolni seznam

  • [ ] Ali sem jasno opredelil vrsto problema (razvrstitev/regresija) in cilj?
  • [ ] Ali sem merila za uspeh izbral na podlagi dejanskih stroškov dela?
  • [ ] Ali sem med vadbo pustil testni komplet nedotaknjen?
  • [ ] Če gre za časovno vrsto, ali sem jo razdelil kronološko?
  • [ ] Ali sem postavil izhodišče, preden sem prešel na kompleksen model?