Câștiguri:
- Abilitatea de a defini tipul problemei (clasificare, regresie, grupare) și criteriile de succes în funcție de costul real al postului
- Abilitatea de a împărți datele în mod onest (fără a atinge setul de testare; cronologic în seria temporală) și de a stabili o bază de evaluare fără scurgeri
- Abilitatea de a alege un model interpretabil pornind de la o linie de bază simplă și adăugând complexitate numai atunci când merită.
Până acum am colectat date, le-am curățat, le-am explorat și am produs funcții. Acum ajungem la munca adevărată, construirea unui model. Un model este o structură matematică care învață un model din date și produce predicții pentru situații noi. Dar partea cea mai critică a construirii unui model nu este codul în sine, ci cele două decizii care îl preced: definirea problemei corecte și împărțirea corectă a datelor. AI este un consilier puternic în selecția algoritmilor, scrierea codului și reglarea parametrilor; dar este la latitudinea unuia să decidă ce să prezică și ce înseamnă succesul. O problemă prost definită nu va funcționa nici măcar cu un model perfect scris.
Definirea problemei mai întâi: ce prezicem
Fiecare job de modelare începe cu o întrebare, iar această întrebare determină tipul de model. Clasificare — rezultatul este o categorie: „Acest client va pleca sau va rămâne?”, „Este această tranzacție falsă?”. Regresie (în engleză regresie - rezultatul este un număr): „Cât valorează această casă?”, „Câte comenzi vor veni luna viitoare?”. Clustering (împărțirea datelor neetichetate în grupuri naturale): „În câte segmente naturale sunt împărțiți clienții mei?”.
A doua parte a enunțului problemei este criteriul succesului: ce înseamnă ca acest model să fie „bun”? Într-un model de fraudă, ratarea unui fraudator este mult mai costisitoare decât blocarea accidentală a unui client onest; Prin urmare, nu „acuratețea generală”, ci „rata de prindere a fraudătorilor” iese în prim-plan. Dacă nu definiți acest criteriu de la început, împreună cu proprietarul afacerii, veți ajunge la un model „foarte precis” care nu funcționează (vom aprofunda în metrici în Unitatea 7).
Atenție: „Acuratețea” poate induce în eroare. Dacă 10 din 1000 de tranzacții sunt frauduloase, un model stupid care spune „niciuna nu este frauduloasă” va oferi o acuratețe de 99%, dar nu va prinde niciun fraudator. Alegeți criteriile de succes pe baza costului real al problemei.
Împărțirea antrenamentului/testelor: examinare sinceră a modelului
Testarea unui model cu datele pe care le-a învățat este ca și cum ai pune elevului aceleași întrebări pe care le-a studiat la examen; Obține note mari, dar nu arată ceea ce știe cu adevărat. Deci, împărțim datele în două (de multe ori trei):
- Set de antrenament (set de antrenament în engleză, de obicei 70-80%): Modelul învață despre asta.
- Set de testare (set de testare, de obicei 20-30%): Modelul nu vede acest lucru deloc; performanța reală este măsurată aici.
- Set de validare: set intermediar utilizat pentru setarea modelului (care parametru este mai bun); pentru a menține setul de testare „curat”.
Cea mai de bază regulă: setul de testare nu este niciodată atins în timpul antrenamentului. Scalare, codificare, selecție de caracteristici — toate sunt pur și simplu învățate din setul de antrenament, apoi aplicate testării (principiul de scurgere din Unitatea 5). Setul de testare este prima dată când modelul vede lumea reală; Dacă îl porniți prea devreme, nu veți ști niciodată adevărata performanță.
Excepție de serie cronologică: dacă datele dvs. depind de timp (vânzări, bursă, cerere), împărțirea aleatorie nu se face. Deoarece divizarea aleatorie face ca modelul să vadă viitorul și să prezică trecutul - aceasta este o scurgere. În schimb, împărțiți cronologic: antrenați-vă cu perioada veche, testați cu perioada nouă.
Selectarea algoritmului: de la simplu la complex
Cea mai frecventă greșeală a începătorilor este să înceapă cu cel mai complex model. Abordarea corectă este inversă: mai întâi stabiliți o linie de bază simplă. „ghici mereu clasa majoritară” într-o clasificare; „estimați întotdeauna media” într-o regresie. Acest model stupid oferă o linie de bază; Dacă modelul dvs. real nu poate trece acest lucru, există o problemă. Apoi treceți la modele simple și interpretabile.
model
Tipul problemei
punct forte
slăbiciune
Linia de referință (majoritate/medie)
ambele
Oferă un punct de referință
nu invata
Regresia logistică
Clasificare
Simplu, interpretabil
Numai relație liniară
Regresia liniară
regresie
Simplu, rapid
presupunere liniară
arborele de decizie
ambele
interpretabil
Memorări ușoare
pădure la întâmplare
ambele
Puternic, durabil
Mai puțin interpretabil
Creșterea gradientului (XGBoost etc.)
ambele
foarte puternic
Greu de reglat, risc de memorare
Regula: alege cel mai simplu model „destul de bun”. Interpretabilitatea este mai valoroasă decât puterea în majoritatea contextelor de afaceri; Este mai bine să explicați o respingere a împrumutului „pentru că raportul dvs. datorie-venit este mare” decât „pentru că așa spunea cutia neagră”.
trei mini cutii
Cazul 1 — Definiție incorectă a problemei. O echipă a construit un model de clasificare bazat pe „clientul este satisfăcut”, dar a ales „acuratețea” drept criteriu de succes. În date, 88% dintre clienți au fost mulțumiți; Modelul a obținut o precizie de 88%, numind pe toți „mulțumiți” și nu i-a prins niciodată pe cei nemulțumiți – chiar dacă scopul real a fost să-i găsească. Lecție: alegeți criteriile de succes pe baza scopului real.
Cazul 2 — Scurgere de timp în compartiment. Într-un proiect de prognoză a cererii, datele au fost împărțite aleatoriu. Modelul a oferit o precizie de 93%, dar sa prăbușit în producție, deoarece la antrenament a prezis ianuarie, apoi noiembrie, cu date din decembrie - a văzut viitorul. Când am trecut la împărțirea cronologică, performanța reală a crescut la 74%. Lecția: împărțirea cronologică în serii de timp.
Cazul 3 — Complexitate inutilă. Un analist a început direct cu o rețea neuronală profundă, a reglat-o timp de săptămâni și a obținut o precizie de 81%. Apoi, un coleg a obținut 80% cu 20 de linii de regresie logistică - mult mai rapid, interpretabil și mai ușor de întreținut. Lecție: începeți cu o linie de bază și un model simplu, adăugați complexitate atunci când merită.
Patru șabloane copiabile
1) Clarificarea definiției problemei:
Rolul dvs.: consultant modeling. Ajutați-mă să definesc această slujbă: „Vreau să reduc numărul de clienți.” Întrebați-mă și clarificați: (1) este aceasta o clasificare sau regresie, (2) care este exact variabila țintă și cum ar trebui definită, (3) care ar trebui să fie criteriile de succes și de ce. Decizia este a mea; prezentați întrebările și opțiunile.
2) Compartiment sigur de antrenament/test:
Împărțiți df-ul meu în antrenament/testare 80%/20%. Menține distribuția clasei (stratify).random_state=42. Aceasta NU este o SERIE DE TIMP (observații independente). Tipăriți raportul de clasă al fiecărui set după împărțire. Doar dați codul de împărțire setului de testare fără a aplica nicio transformare.
3) Împărțirea cronologică a seriilor de timp:
Datele depind de timp (coloana date: order_date). NU aleatoriu, împărțiți cronologic: cel mai vechi 80% antrenament, cel mai nou 20% testare. Imprimați intervalele de date de instruire și testare, astfel încât să pot verifica că viitorul nu s-a scurs.
4) Stabilirea unei linii de bază:
Am o problemă de clasificare (țintă: churn 0/1). Mai întâi, stabiliți o linie de bază: măsurați precizia antrenamentului/testării cu DummyClassifier, care prezice întotdeauna clasa majoritară. Apoi antrenați o regresie logistică simplă și comparați dacă depășește linia de bază. Afișați valorile celor două una lângă alta.
Prompt slab / Prompt puternic
Prompt slab:
Construiți cel mai bun model cu aceste date.
„Cel mai bun” este nedefinit; Nu există nici un tip de problemă, nici un scop, nici un criteriu de succes și nici o strategie de divizare. AI generează un model aleatoriu, posibil cu scurgeri.
Solicitare puternică:
Rolul tău: asistent modeling. Problemă: clasificare, „chirn” țintă (0/1), există dezechilibru de clasă (~12% churn). Criteriul succesului: Rechemarea celor care se renunță este o prioritate. Observație independentă de date (nu serii de timp). Sarcină: (1) împărțire stratificată 80/20%, (2) linie de bază DummyClassifier, (3) regresie logistică, toate transformările în conductă și învățate numai din antrenament. Nu atingeți setul de testare înainte de împărțire.
Aici tipul problemei, dezechilibrul, criteriul și măsura de scurgere sunt clare.
Greșeli comune
- Nealegerea criteriilor de succes conform scopului real. „Acuratețea” datelor dezechilibrate este înșelătoare; Dacă doriți să capturați clasa minoritară, amintirea vine în prim-plan.
- Atingerea setului de testare în timpul antrenamentului. Efectuarea scalării/codării înainte de împărțire este scursă și ascunde performanța reală.
- Împărțirea aleatorie în serii de timp. Modelul vede viitorul, se prăbușește în producție; Împărțirea cronologică este esențială.
- Sări într-un model complex fără a stabili o linie de bază. Fără benchmark-uri nu poți ști dacă un model este cu adevărat bun sau nu.
- Ignorând interpretabilitatea. În deciziile de afaceri, un model simplu explicabil este adesea mai valoros decât o cutie neagră.
Sfat: Înainte de a începe să construiți un model, scrieți o propoziție: „Acest model va prezice _____, succesul său va fi măsurat prin metrica _____, deoarece costul real al jobului este _____.” Dacă nu puteți completa această propoziție, nu sunteți încă pregătit să scrieți cod.
Pe scurt
Cea mai critică parte a construirii unui model nu este codul, ci deciziile care îl preced: definirea problemei corecte (clasificare sau regresie, care este scopul, care este criteriul de succes) și împărțirea corectă a datelor (fără a atinge setul de testare; cronologic în seria de timp). Începeți întotdeauna cu o bază simplă și adăugați complexitate numai atunci când merită; interpretabilitatea este apreciată asupra puterii în majoritatea contextelor de afaceri. AI este un consilier puternic în selecția algoritmilor și a codului, dar omul decide ce prezici și de ce.
Sarcina de aplicare
Definiți o problemă de predicție și completați următoarea propoziție în scris: „Acest model va prezice ___ (clasificare/regresie), ținta este ___, criteriul de succes este ___ pentru că ___.” Apoi împărțiți datele cu strategia potrivită (cronologică dacă este o serie de timp), stabiliți o linie de bază și măsurați dacă un model simplu rupe acea linie de bază.
lista de verificare
- [ ] Am definit clar tipul problemei (clasificare/regresiune) și ținta?
- [ ] Am ales criteriile de succes pe baza costului real al lucrării?
- [ ] Am lăsat setul de test neatins în timpul antrenamentului?
- [ ] Dacă este o serie temporală, am împărțit-o cronologic?
- [ ] Am stabilit o linie de bază înainte de a trece la modelul complex?