Ieguvumi:
- Spēja definēt problēmas veidu (klasifikācija, regresija, klasterizācija) un veiksmes kritērijus atbilstoši darba reālajām izmaksām
- Spēja godīgi sadalīt datus (nepieskaroties testa kopai; hronoloģiski laikrindā) un izveidot novērtējuma bāzi bez noplūdēm
- Spēja izvēlēties interpretējamu modeli, sākot ar vienkāršu bāzes līniju un pievienojot sarežģītību tikai tad, kad tas ir to pelnījis.
Līdz šim esam apkopojuši datus, tos iztīrījuši, izpētījuši un radījuši funkcijas. Tagad mēs nonākam pie reālā darba, modeļa veidošanas. Modelis ir matemātiska struktūra, kas apgūst modeli no datiem un rada prognozes jaunām situācijām. Bet modeļa izveides vissvarīgākā daļa nav pats kods, bet gan divi lēmumi, kas ir pirms tā: pareizās problēmas noteikšana un pareiza datu sadalīšana. AI ir spēcīgs padomnieks algoritmu atlasē, koda rakstīšanā un parametru regulēšanā; bet tas ir katra paša ziņā, ko prognozēt un ko nozīmē panākumi. Slikti definēta problēma nedarbosies pat ar perfekti uzrakstītu modeli.
Vispirms problēmas definīcija: ko mēs prognozējam
Katrs modelēšanas darbs sākas ar jautājumu, un šis jautājums nosaka modeļa veidu. Klasifikācija — izvade ir kategorija: "Vai šis klients aizies vai paliks?", "Vai šis darījums ir viltots?". Regresija (angļu valodā regression - izvade ir skaitlis): "Cik šī māja ir vērta?", "Cik pasūtījumu nāks nākammēnes?". Klasterizācija (neiezīmētu datu sadalīšana dabiskās grupās): "Cik dabiskos segmentos ir sadalīti mani klienti?".
Problēmas izklāsta otrā daļa ir veiksmes kritērijs: ko šim modelim nozīmē būt "labam"? Krāpšanas modelī krāpnieka pazušana ir daudz dārgāka nekā godīga klienta nejauša bloķēšana; Tāpēc priekšplānā izvirzās nevis "vispārējā precizitāte", bet gan "krāpnieku notveršanas ātrums". Ja kopā ar uzņēmuma īpašnieku nedefinēsit šo kritēriju no paša sākuma, jūs iegūsit “ļoti precīzu” modeli, kas nedarbosies (mēs sīkāk aplūkosim metriku 7. nodaļā).
Uzmanību: “Precizitāte” var būt maldinoša. Ja 10 no 1000 darījumiem ir krāpnieciski, stulbs modelis, kurā teikts, ka "neviens nav krāpniecisks", nodrošinās 99% precizitāti, taču nenoķers nevienu krāpnieku. Izvēlieties veiksmes kritērijus, pamatojoties uz problēmas patiesajām izmaksām.
Apmācība/testa sadalīšana: godīga modeļa pārbaude
Modeļa testēšana ar iegūtajiem datiem ir tas pats, kas uzdot studentam tos pašus jautājumus, ko viņš/viņa mācījās eksāmenā; Viņš saņem augstas atzīmes, bet neparāda to, ko viņš patiešām zina. Tāpēc mēs sadalām datus divās daļās (bieži vien trīs):
- Apmācību komplekts (apmācību komplekts angļu valodā, parasti 70-80%): Modelis par to mācās.
- Testa komplekts (pārbaudes komplekts, parasti 20-30%): modelis to vispār neredz; šeit tiek mērīts reālais sniegums.
- Validācijas komplekts: Modeļa iestatīšanai izmantotais starpkomplekts (kurš parametrs ir labāks); lai testa komplekts būtu "tīrs".
Pats pamatnoteikums: treniņa laikā testa komplekts nekad netiek aiztikts. Mērogošana, kodēšana, funkciju atlase — tas viss tiek vienkārši apgūts no apmācības komplekta un pēc tam tiek piemērots testēšanai (noplūdes princips no 5. vienības). Testa komplekts ir pirmā reize, kad modelis redz reālo pasauli; Ja ieslēdzat to pārāk agri, jūs nekad neuzzināsit patieso veiktspēju.
Laika rindas izņēmums: ja jūsu dati ir atkarīgi no laika (pārdošana, akciju tirgus, pieprasījums), nejauša sadalīšana netiek veikta. Tā kā nejauša sadalīšana liek modelim redzēt nākotni un paredzēt pagātni - tā ir noplūde. Tā vietā sadaliet hronoloģiski: trenējieties ar veco periodu, pārbaudiet ar jauno periodu.
Algoritma izvēle: no vienkārša līdz sarežģītam
Visizplatītākā iesācēju kļūda ir sākt ar sarežģītāko modeli. Pareizā pieeja ir pretēja: vispirms izveidojiet vienkāršu bāzes līniju. "vienmēr uzmini vairākuma klasi" klasifikācijā; "vienmēr novērtējiet vidējo" regresijā. Šis stulbais modelis sniedz bāzes līniju; Ja jūsu faktiskais modelis to nevar izturēt, pastāv problēma. Pēc tam pārejiet pie vienkāršiem un interpretējamiem modeļiem.
modelis
Problēmas veids
stiprā puse
vājums
Sākumlīnija (vairākums/vidējais)
gan
Dod etalonu
nemācās
Loģistiskā regresija
Klasifikācija
Vienkārši, interpretējami
Tikai lineāras attiecības
Lineārā regresija
regresija
Vienkārši, ātri
lineārs pieņēmums
lēmumu koks
gan
interpretējams
Vieglas iegaumēšanas
nejaušs mežs
gan
Spēcīgs, izturīgs
Mazāk interpretējams
Gradienta palielināšana (XGBoost utt.)
gan
ļoti spēcīga
Grūti pielāgojams, iegaumēšanas risks
Noteikums: izvēlieties vienkāršāko "pietiekami labu" modeli. Vairumā uzņēmējdarbības kontekstu interpretējamība ir vērtīgāka par spēku; Labāk ir izskaidrot aizdevuma noraidīšanu "tāpēc, ka jūsu parāda attiecība pret ienākumiem ir augsta", nevis "tāpēc, ka tā teica melnā kaste".
trīs mini futrāļi
1. gadījums — nepareiza problēmas definīcija. Komanda izveidoja klasifikācijas modeli, pamatojoties uz "vai klients ir apmierināts", bet kā panākumu kritēriju izvēlējās "precizitāti". Datos apmierināti bija 88% klientu; Modelis ieguva 88% precizitāti, visus nosaucot par "apmierinātajiem" un neapmierinātos nekad nenoķēra, lai gan patiesais mērķis bija viņus atrast. Nodarbība: izvēlieties veiksmes kritērijus, pamatojoties uz patieso mērķi.
2. gadījums — laika noplūde nodalījumā. Pieprasījuma prognozēšanas projektā dati tika nejauši sadalīti. Modelis nodrošināja 93% precizitāti, bet avarēja ražošanā, jo apmācībās ar decembra datiem bija paredzējis janvāri, pēc tam novembri — tas bija redzējis nākotni. Kad pārgājām uz hronoloģisko iedalījumu, faktiskais sniegums palielinājās līdz 74%. Nodarbība: hronoloģiskais dalījums laika rindās.
3. gadījums — nevajadzīga sarežģītība. Viens analītiķis sāka tieši ar dziļu neironu tīklu, noregulēja to vairākas nedēļas un ieguva 81% precizitāti. Tad kolēģis ieguva 80% ar 20 loģistikas regresijas līnijām — daudz ātrāk, interpretējamu un vieglāk uzturējamu. Nodarbība: sāciet ar bāzes līniju un vienkāršu modeli, pievienojiet sarežģītību, kad tas ir to pelnījis.
Četras kopējamas veidnes
1) Problēmas definīcijas precizēšana:
Jūsu loma: modelēšanas konsultants. Palīdziet man definēt šo darbu: "Es vēlos samazināt klientu skaitu." Pajautājiet man un precizējiet: (1) vai tā ir klasifikācija vai regresija, (2) kas tieši ir mērķa mainīgais un kā tas jādefinē, (3) kādiem jābūt panākumu kritērijiem un kāpēc. Lēmums ir mans; jūs uzdodat jautājumus un iespējas.
2) Drošs treniņu/testa nodalījums:
Sadaliet manu df apmācībā/testēšanā 80%/20%. Saglabāt klašu sadalījumu (stratify).random_state=42. Šī NAV LAIKRĀDA (neatkarīgi novērojumi). Izdrukājiet katras kopas klases attiecību pēc dalīšanas. Vienkārši ievadiet sadalīšanas kodu testa kopai, neizmantojot nekādas transformācijas.
3) Laika rindu hronoloģiskais iedalījums:
Dati ir atkarīgi no laika (datuma kolonna: order_date). NAV nejauši, sadaliet hronoloģiski: vecākā 80% apmācība, jaunākā 20% pārbaude. Izdrukājiet apmācību un testēšanas datumu diapazonus, lai es varētu pārbaudīt, vai nākotne nav noplūdusi.
4) Bāzes līnijas iestatīšana:
Man ir klasifikācijas problēma (mērķis: kaujas 0/1). Vispirms izveidojiet bāzes līniju: mēriet apmācības/testēšanas precizitāti ar DummyClassifier, kas vienmēr paredz vairākuma klasi. Pēc tam apmāciet vienkāršu loģistikas regresiju un salīdziniet, vai tā pārspēj bāzes līniju. Parādiet abu metriku blakus.
Vāja uzvedne / spēcīga uzvedne
Vāja uzvedne:
Izmantojot šos datus, izveidojiet labāko modeli.
"Labākais" nav definēts; Nav problēmas veida, nav mērķa, nav veiksmes kritēriju un nav sadalījuma stratēģijas. AI ģenerē nejaušu modeli, kas, iespējams, ir noplūde.
Spēcīga uzvedne:
Jūsu loma: modeles palīgs. Problēma: klasifikācija, mērķis "churn" (0/1), ir klases nelīdzsvarotība (~12% churn). Veiksmes kritērijs: Prioritāte ir atsaukt tos, kuri sarūgtina. No datiem neatkarīgs novērojums (nevis laikrindas). Uzdevums: (1) 80/20% stratificēts sadalījums, (2) DummyClassifier bāzes līnija, (3) loģistiskā regresija, visas transformācijas tiek veiktas un apgūtas tikai apmācībā. Pirms sadalīšanas nepieskarieties testa komplektam.
Šeit ir skaidrs problēmas veids, nelīdzsvarotība, kritērijs un noplūdes pasākums.
Biežas kļūdas
- Neizvēloties veiksmes kritērijus pēc patiesā mērķa. "Precizitāte" nelīdzsvarotos datos ir maldinoša; Ja vēlaties notvert mazākumtautību šķiru, priekšplānā izvirzās atsaukšana.
- Pieskaroties testa komplektam treniņa laikā. Mērogošana/kodēšana pirms sadalīšanas ir neskaidra un slēpj reālo veiktspēju.
- Nejaušs dalījums laika rindās. Modelis redz nākotni, sabrūk ražošanā; Hronoloģiskais sadalījums ir būtisks.
- Pārlēkšana uz sarežģītu modeli, nenosakot bāzes līniju. Bez etaloniem nevar zināt, vai modelis tiešām ir labs vai nē.
- Interpretējamības ignorēšana. Uzņēmējdarbības lēmumos vienkāršs izskaidrojams modelis bieži vien ir vērtīgāks par melno kasti.
Padoms. Pirms sākat veidot modeli, uzrakstiet vienu teikumu: "Šis modelis prognozēs _____, tā panākumi tiks mērīti ar metriku _____, jo darba patiesās izmaksas ir _____." Ja nevarat aizpildīt šo teikumu, jūs vēl neesat gatavs rakstīt kodu.
Rezumējot
Modeļa veidošanas viskritiskākā daļa ir nevis kods, bet lēmumi, kas tam tiek pieņemti: pareizās problēmas definēšana (klasifikācija vai regresija, kāds ir mērķis, kāds ir veiksmes kritērijs) un datu godīga sadalīšana (nepieskaroties testa kopai; hronoloģiska laika rindā). Vienmēr sāciet ar vienkāršu bāzes līniju un pievienojiet sarežģītību tikai tad, kad tas ir to pelnījis; Vairumā uzņēmējdarbības kontekstu interpretējamība tiek vērtēta augstāk par varu. AI ir spēcīgs padomdevējs algoritmu atlasē un kodā, taču cilvēks izlemj, ko jūs prognozējat un kāpēc.
Lietojumprogrammas uzdevums
Definējiet prognozēšanas problēmu un rakstiski aizpildiet šādu teikumu: "Šis modelis prognozēs ___ (klasifikācija/regresija), mērķis ir ___, veiksmes kritērijs ir ___, jo ___." Pēc tam sadaliet datus, izmantojot pareizo stratēģiju (hronoloģiski, ja tā ir laikrinda), izveidojiet bāzes līniju un novērtējiet, vai vienkāršs modelis pārtrauc šo bāzes līniju.
kontrolsaraksts
- [ ] Vai esmu skaidri definējis problēmas veidu (klasifikācija/regresija) un mērķi?
- [ ] Vai veiksmes kritērijus esmu izvēlējies, pamatojoties uz faktiskajām darba izmaksām?
- [ ] Vai treniņa laikā es atstāju testa komplektu neskartu?
- [ ] Ja tā ir laikrinda, vai es tās sadalīju hronoloģiski?
- [ ] Vai esmu izveidojis bāzes līniju, pirms pāriet uz sarežģīto modeli?