Yksikkö 6 / 11

Mallin rakentaminen: ongelman määrittely, algoritmin valinta ja koulutus-/testausjako

Voitot:

  • Kyky määritellä ongelman tyyppi (luokitus, regressio, klusterointi) ja onnistumiskriteerit työn todellisten kustannusten mukaan
  • Kyky jakaa tiedot rehellisesti (koskematta testijoukkoon; kronologisesti aikasarjoissa) ja luoda vuotamaton arviointiperusta
  • Kyky valita tulkittava malli aloittamalla yksinkertaisesta perusviivasta ja lisäämällä monimutkaisuutta vain silloin, kun se ansaitsee sen.

Tähän mennessä olemme keränneet dataa, puhdistaneet sen, tutkineet sitä ja tuottaneet ominaisuuksia. Nyt päästään varsinaiseen työhön, mallin rakentamiseen. Malli on matemaattinen rakenne, joka oppii datasta kaavan ja tuottaa ennusteita uusiin tilanteisiin. Mutta kriittisin osa mallin rakentamisessa ei ole itse koodi, vaan kaksi sitä edeltävää päätöstä: oikean ongelman määrittäminen ja tiedon jakaminen oikein. AI on tehokas neuvonantaja algoritmien valinnassa, koodin kirjoittamisessa ja parametrien virittämisessä; mutta se on jokaisen itse päätettävä, mitä ennustaa ja mitä menestys tarkoittaa. Huonosti määritelty ongelma ei toimi edes täydellisesti kirjoitetulla mallilla.

Ongelman määritelmä ensin: mitä ennustamme

Jokainen mallinnustyö alkaa kysymyksellä, ja tämä kysymys määrittää mallin tyypin. Luokitus — tulos on luokka: "Poistuuko vai jääkö tämä asiakas?", "Onko tämä tapahtuma väärennös?". Regressio (englanniksi regressio - tulos on numero): "Kuinka paljon tämä talo on arvoinen?", "Kuinka monta tilausta tulee ensi kuussa?". Klusterointi (merkitsemättömän tiedon jakaminen luonnollisiin ryhmiin): "Kuinka moneen luonnolliseen segmenttiin asiakkaani on jaettu?".

Ongelmanratkaisun toinen osa on onnistumiskriteeri: mitä tarkoittaa, että tämä malli on "hyvä"? Petosmallissa huijarin puuttuminen on paljon kalliimpaa kuin rehellisen asiakkaan vahingossa estäminen; Siksi etusijalle ei tule "yleinen tarkkuus" vaan "huijarien kiinnijäämisaste". Jos et määritä tätä kriteeriä alusta alkaen yhdessä yrityksen omistajan kanssa, päädyt "erittäin tarkaan" malliin, joka ei toimi (menemme syvemmälle mittareihin osiossa 7).

Varoitus: "Tarkkuus" voi olla harhaanjohtavaa. Jos 10 1000 tapahtumasta on vilpillisiä, tyhmä malli, joka sanoo "mikään ei ole petollinen", antaa 99% tarkkuuden, mutta ei saa kiinni ainuttakaan huijaria. Valitse onnistumiskriteerit ongelman todellisten kustannusten perusteella.

Koulutus/testin jakaminen: mallin rehellinen tarkastelu

Mallin testaaminen sen oppimilla tiedoilla on kuin kysyisi opiskelijalta samat kysymykset, joita hän opiskeli kokeessa. Hän saa korkeat arvosanat, mutta ei osoita, mitä hän todella tietää. Joten jaamme tiedot kahteen (usein kolmeen):

  • Harjoitussarja (englanninkielinen koulutussarja, yleensä 70-80%): Malli oppii tästä.
  • Testisarja (testisarja, yleensä 20-30 %): Malli ei näe tätä ollenkaan; todellista suorituskykyä mitataan täällä.
  • Validointisarja: Mallin asettamiseen käytetty välisarja (kumpi parametri on parempi); pitääksesi testisarjan "puhtaana".

Perussääntö: testisarjaan ei koskaan kosketa harjoituksen aikana. Skaalaus, koodaus, ominaisuuksien valinta – kaikki yksinkertaisesti opitaan harjoitussarjasta, ja niitä sovelletaan sitten testaukseen (vuotoperiaate yksiköstä 5). Testisarja on ensimmäinen kerta, kun malli näkee todellisen maailman; Jos käynnistät sen liian aikaisin, et koskaan tiedä todellista suorituskykyä.

Aikasarjapoikkeus: Jos tietosi ovat ajasta riippuvaisia ​​(myynti, osakemarkkinat, kysyntä), satunnaista jakamista ei tehdä. Koska satunnainen jakaminen saa mallin näkemään tulevaisuuden ja ennustamaan menneisyyttä - tämä on vuoto. Jaa sen sijaan kronologisesti: harjoittele vanhan ajan kanssa, testaa uuden kauden kanssa.

Algoritmin valinta: yksinkertaisesta monimutkaiseen

Aloittelijoiden yleisin virhe on aloittaa monimutkaisimmalla mallilla. Oikea lähestymistapa on päinvastainen: määritä ensin yksinkertainen perusviiva. "arvaa aina enemmistöluokka" luokituksessa; "arvioi aina keskiarvo" regressiossa. Tämä typerä malli antaa lähtötilanteen; Jos todellinen mallisi ei läpäise tätä, on ongelma. Siirry sitten yksinkertaisiin ja tulkittavissa oleviin malleihin.

malli

Ongelman tyyppi

vahva kohta

heikkous

Perustaso (enemmistö/keskiarvo)

molemmat

Antaa vertailukohdan

ei opi

Logistinen regressio

Luokittelu

Yksinkertaista, tulkittavaa

Vain lineaarinen suhde

Lineaarinen regressio

regressio

Yksinkertainen, nopea

lineaarinen oletus

päätöspuu

molemmat

tulkittavissa

Helppoja muistamista

satunnainen metsä

molemmat

Vahva, kestävä

Vähemmän tulkittavissa

Gradientin tehostus (XGBoost jne.)

molemmat

erittäin vahva

Vaikea säätää, muistiin jäämisen vaara

Sääntö: valitse yksinkertaisin "riittävän hyvä" malli. Tulkittavuus on arvokkaampaa kuin valta useimmissa liiketoimintatilanteissa; On parempi selittää lainan hylkääminen "koska velka-tulo-suhde on korkea" kuin "koska musta laatikko sanoi niin".

kolme minilaukkua

Tapaus 1 – Virheellinen ongelman määritelmä. Ryhmä rakensi luokitusmallin "onko asiakas tyytyväinen" perusteella, mutta valitsi onnistumiskriteeriksi "tarkkuuden". Tietojen mukaan 88 % asiakkaista oli tyytyväisiä; Malli sai 88 % tarkkuuden kutsumalla kaikkia "tyytyväisiksi" eikä koskaan saanut tyytymättömiä kiinni – vaikka todellinen tavoite oli löytää heidät. Oppitunti: valitse menestyskriteerit todellisen tarkoituksen perusteella.

Tapaus 2 – Aikavuoto osastossa. Kysynnän ennusteprojektissa tiedot jaettiin satunnaisesti. Malli antoi 93 % tarkkuuden, mutta kaatui tuotannossa, koska se oli koulutuksessa ennustanut tammikuun, sitten marraskuun joulukuun tiedoilla – se oli nähnyt tulevaisuuden. Kun siirryimme kronologiseen jakoon, todellinen suorituskyky nousi 74 prosenttiin. Oppitunti: kronologinen jako aikasarjoissa.

Tapaus 3 – Tarpeeton monimutkaisuus. Yksi analyytikko aloitti suoraan syvästä hermoverkosta, viritti sitä viikkoja ja sai 81 % tarkkuuden. Sitten kollega sai 80 % 20:llä logistisen regression rivillä – paljon nopeampi, tulkittava ja helpompi ylläpitää. Oppitunti: aloita perusviivasta ja yksinkertaisesta mallista, lisää monimutkaisuutta, kun se ansaitsee sen.

Neljä kopioitavaa mallia

1) Selvennetään ongelman määritelmää:

Tehtäväsi: mallikonsultti. Auta minua määrittelemään tämä tehtävä: "Haluan vähentää asiakkaiden vaihtuvuutta." Kysy minulta ja selvennä: (1) onko tämä luokittelu vai regressio, (2) mikä tarkalleen on kohdemuuttuja ja miten se pitäisi määritellä, (3) mitkä pitäisi olla onnistumiskriteerit ja miksi. Päätös on minun; esität kysymykset ja vaihtoehdot.

2) Turvallinen harjoitus-/koeosasto:

Jaa df:ni harjoitteluun/testaukseen 80 %/20 %. Säilytä luokkajakauma (stratify).random_state=42. Tämä EI OLE AIKASARJA (riippumattomat havainnot). Tulosta kunkin sarjan luokkasuhde jaon jälkeen. Anna vain jakokoodi testijoukolle ilman muunnoksia.

3) Aikasarjan kronologinen jako:

Tiedot ovat ajasta riippuvaisia (päivämääräsarake: tilauspäivämäärä). EI satunnainen, jaa kronologisesti: vanhin 80% harjoittelu, uusin 20% testaus. Tulosta koulutus- ja testauspäivämäärät, jotta voin varmistaa, ettei tulevaisuus ole vuotanut.

4) Perustason asettaminen:

Minulla on luokitteluongelma (kohde: vaihtuvuus 0/1). Määritä ensin perusviiva: mittaa harjoittelun/testauksen tarkkuus DummyClassifierilla, joka ennustaa aina enemmistöluokan. Harjoittele sitten yksinkertainen logistinen regressio ja vertaa, voittaako se perusviivan. Näytä näiden kahden mittarit vierekkäin.

Heikko kehote / Vahva kehote

Heikko kehote:

Rakenna paras malli näiden tietojen avulla.

"Paras" on määrittelemätön; Ei ole ongelmatyyppiä, ei tavoitetta, ei menestyskriteerejä eikä jakostrategiaa. AI luo satunnaisen kuvion, joka voi olla vuotava.

Tehokas kehotus:

Roolisi: malliassistentti. Ongelma: luokittelu, tavoite "vaihtuvuus" (0/1), luokkaepätasapaino (~12 % vaihtuvuus). Onnistumiskriteeri: Tärkeää on muistaa ne, jotka vaikeuttavat. Tiedoista riippumaton havainto (ei aikasarja). Tehtävä: (1) 80/20 % kerrostettu split, (2) DummyClassifier-perusviiva, (3) logistinen regressio, kaikki muunnokset ovat valmisteilla ja oppineet vain harjoittelusta. Älä koske testisarjaan ennen halkaisua.

Tässä ongelman tyyppi, epätasapaino, kriteeri ja vuodon mitta ovat selvät.

Yleisiä virheitä

  • Menestyskriteerejä ei valita todellisen tarkoituksen mukaan. "Tarkkuus" epätasapainoisissa tiedoissa on harhaanjohtavaa; Jos haluat vangita vähemmistöluokan, muistaminen tulee etualalle.
  • Kosketa testisarjaa harjoituksen aikana. Skaalaus/koodaus ennen jakamista vuotaa ja piilottaa todellisen suorituskyvyn.
  • Satunnainen jakaminen aikasarjoissa. Malli näkee tulevaisuuden, romahtaa tuotannossa; Kronologinen jako on välttämätöntä.
  • Hyppääminen monimutkaiseen malliin perustamatta perustaa. Ilman vertailuarvoja ei voi tietää, onko malli todella hyvä vai ei.
  • Tulkittavuuden huomiotta jättäminen. Liiketoimintapäätöksissä yksinkertainen selitettävissä oleva malli on usein arvokkaampi kuin musta laatikko.
Vinkki: Ennen kuin aloitat mallin rakentamisen, kirjoita yksi lause: "Tämä malli ennustaa _____, sen menestystä mitataan mittarilla _____, koska työn todellinen hinta on _____." Jos et voi täyttää tätä lausetta, et ole vielä valmis kirjoittamaan koodia.

Yhteenvetona

Kriittisin osa mallin rakentamisessa ei ole koodi, vaan sitä edeltävät päätökset: oikean ongelman määritteleminen (luokittelu tai regressio, mikä on tavoite, mikä on onnistumiskriteeri) ja datan jakaminen reilusti (koskematta testijoukkoon; kronologisesti aikasarjassa). Aloita aina yksinkertaisesta lähtökohdasta ja lisää monimutkaisuutta vain silloin, kun se ansaitsee sen; tulkintaa arvostetaan yli vallan useimmissa liiketoimintakonteksteissa. Tekoäly on tehokas neuvonantaja algoritmien valinnassa ja koodissa, mutta ihminen päättää mitä ennustat ja miksi.

Sovellustehtävä

Määrittele ennusteongelma ja täytä seuraava lause kirjallisesti: "Tämä malli ennustaa ___ (luokitus/regressio), tavoite on ___, onnistumiskriteeri on ___ koska ___." Jaa sitten tiedot oikealla strategialla (kronologisesti, jos kyseessä on aikasarja), määritä perusviiva ja mittaa, rikkooko yksinkertainen kuvio kyseisen lähtötason.

tarkistuslista

  • [ ] Olenko määritellyt selkeästi ongelman tyypin (luokitus/regressio) ja kohteen?
  • [ ] Olenko valinnut onnistumiskriteerit työn todellisten kustannusten perusteella?
  • [ ] Jätinkö testisarjan koskematta harjoituksen aikana?
  • [ ] Jos se on aikasarja, jaoinko sen kronologisesti?
  • [ ] Olenko määrittänyt perustason ennen kuin siirryn monimutkaiseen malliin?