Mga nadagdag:
- Kakayahang kilalanin ang mga uri ng pagtagas ng data (target, oras, preprocessing, nakagrupong row) at i-query ang markang 'too good to be true' bilang alarma
- Kakayahang maiwasan ang pagtagas sa maagang paghihiwalay ng test set, pipeline at tamang dibisyon (chronological/grouped)
- Kakayahang gawing reproducible ang pagsusuri gamit ang mga nakapirming buto, kontrol sa bersyon at pag-alis ng mga manu-manong hakbang
Mayroong dalawang pagkakamali na nag-aaksaya ng pinakamaraming pagsisikap sa data science, at pareho silang mapanlinlang dahil humahantong sila sa sakuna kapag ang lahat ay "tila maayos." Ang una ay ang pagtagas ng data: mahusay na gumagana ang modelo sa set ng pagsubok ngunit nag-crash sa produksyon. Ang pangalawa ay irreproducibility: magpapatakbo ka ng pagsusuri pagkalipas ng anim na buwan at makakuha ng ganap na kakaibang resulta. Ang yunit na ito ay nakatuon sa pag-alam at pag-iwas sa dalawang pitfalls na ito nang malalim. Maaaring pataasin ng AI ang parehong mga panganib (mabilis na bumubuo, nagmumungkahi ng mga nakatagong paglabas, ginagawang mas madali para sa iyo na gumawa ng mga manu-manong hakbang) ngunit maaari ring bawasan ang mga ito kung ginamit nang tama. Ang pagkakaiba ay nasa disiplina.
Data leak: modelo ng clairvoyant
Ang pagtagas ng data ay kapag nakakita ang modelo ng impormasyon sa panahon ng pagsasanay na hindi nito makukuha sa oras ng aktwal na hula. Ang modelo ay "cheats" gamit ang impormasyong ito, mukhang mahusay sa set ng pagsubok, ngunit nag-crash sa produksyon nang walang impormasyong iyon. Ang sintomas ng isang pagtagas ay halos palaging pareho: masyadong magandang upang maging totoo. Bago ka magsaya kapag nakakita ka ng 99% na katumpakan, dapat kang maghanap ng mga tagas.
Ang mga pangunahing uri ng pagtagas ay:
1. Paglabas ng layunin: Ang isang tampok ay resulta ng layunin. Sa hula na "nakansela", ang mga column na "petsa ng pagkansela" o "halaga ng refund" ay resulta ng target; Mapupuno lang sila kapag malinaw na ang resulta.
2. Time leak: Ang pagdadala ng impormasyon sa hinaharap sa nakaraan. Kapag kinakalkula ang "huling 30 araw na average", isama ang mga araw pagkatapos ng araw ng pagtataya, o hatiin ang serye ng oras nang random.
3. Pre-processing leakage: Learning transformations gaya ng scaling, filling, coding mula sa lahat ng data bago ang training/testing partition. Ang pag-average ng data ng pagsubok ay nakakasagabal sa pagsasanay.
4. Duplicate/grouped row leak: Ang mga row na kabilang sa iisang tao ay nasa parehong pagsasanay at pagsubok (dalawang pagbisita ng parehong pasyente sa magkaibang set). Kabisado ng modelo ang tao.
Uri ng pagtagas
Paano ipinanganak
Paano maiwasan
target na pagtagas
Column na resulta ng target
"Mayroon ba ako nito sa oras ng hula" na pagsubok
pagtagas ng oras
Dinadala ang hinaharap sa nakaraan
Kronolohikal na paghahati, kontrol sa bintana
Preprocessing leak
Pre-split na conversion
Pipeline, magkasya mula sa pagsasanay
Nakapangkat na row leak
Parehong unit sa dalawang set
Hatiin ayon sa pangkat (GroupKFold)
Ang tanging disiplina para maiwasan ang pagtagas
Ang karaniwang solusyon para sa lahat ng uri ng pagtagas ay napupunta sa isang pangungusap: Ihiwalay ang set ng pagsubok sa lalong madaling panahon upang gayahin ang tunay na hinaharap, at huwag "ituro" ito ng anuman. Sa pagsasagawa, nangangahulugan ito: unang hatiin, pagkatapos ay matutunan ang lahat ng mga pagbabagong-anyo lamang mula sa pagsasanay at ilapat ang mga ito sa isang pipeline (isang istraktura na nangongolekta ng lahat ng mga hakbang sa isang solong chain). Para sa bawat feature, itanong ang tanong na "mayroon ba akong impormasyong ito sa oras ng hula?" Kung may oras, hatiin ito ayon sa pagkakasunod-sunod; Kung ang parehong yunit ay paulit-ulit, hatiin ayon sa pangkat.
Babala: Ang pinaka-mapanganib na aspeto ng isang pagtagas ay ang pagpapakita nito sa sarili bilang isang tagumpay. Ang isang masamang modelo ay malinaw na magbubunga ng hindi magandang resulta at mapapansin; Ang isang leaked na modelo ay mahusay na gumagana, nakalulugod sa lahat, at inilalagay sa produksyon — doon magsisimula ang pagbagsak. Iyon ang dahilan kung bakit ang isang "napakagandang" resulta ay dahilan para sa alarma, hindi pagdiriwang.
Reproducibility: pagkuha ng parehong resulta ng dalawang beses
Ang reproducibility ay ang kakayahang makakuha ng parehong resulta kapag nagpatakbo ka muli ng pagsusuri sa ibang pagkakataon, sa ibang makina. Kung wala ito, ang iyong pagsusuri ay hindi sinasadya, hindi pang-agham. Mga pangunahing sanhi at solusyon na nakakapinsala sa muling paggawa:
Mga manu-manong hakbang: Manu-manong pagpapalit ng cell sa Excel, manu-manong pag-edit ng tsart. Solusyon: magkaroon ng bawat hakbang sa code.
Unfixed randomness: Model training, sampling, splitting involve randomness. Solusyon: ayusin ang random na binhi (ang paunang halaga ng random generator) (random_state=42).
Mga pagbabago sa bersyon: Maaaring magbago ang resulta kapag nagbago ang bersyon ng library. Solusyon: ayusin ang mga dependencies (requirements.txt, environment file).
Walang record keeping: Hindi malinaw kung aling data, aling code, aling parameter ang ginamit. Solusyon: version control (Git — ang system na nagse-save ng lahat ng bersyon ng code) at data versioning.
"Gumagana lang ito sa aking makina": Solusyon: idokumento ang kapaligiran, gumamit ng mga lalagyan (Docker) kung maaari.
tatlong mini case
Kaso 1 — Target na pagtagas. Itinampok ng pagsusuri sa kalusugan ang column na "post-discharge medication" sa paghula "kung muling tatanggapin ang pasyente." Ang column na ito ay napunan lamang pagkatapos ng paglabas ng pasyente. Ang modelo ay nagbigay ng 96%, sa produksyon ay 61%. Ang 8 linggong proyekto ay basura. Aralin: tanungin ang bawat tampok na "nariyan ba ito sa oras ng hula?"
Kaso 2 — Preprocessing leak. Isang team ang nag-scale ng lahat ng data at pagkatapos ay hatiin ito. Ang ibig sabihin ng data ng pagsubok ay kasangkot sa scaling. CV score 89%, aktwal na produksyon 76%. Nawala ang pekeng tagumpay nang lumipat ako sa Pipeline at natutunan ang tungkol sa mga pagbabago mula lamang sa pagsasanay. Lesson: hatiin muna, mag-transform mamaya.
Kaso 3 — Pagkabigong magparami. Nais ng isang analyst na i-update ang chart na ipinakita niya sa management pagkalipas ng tatlong buwan ngunit hindi niya maalala kung paano niya ito ginawa; maraming hakbang ang ginawa nang manu-mano sa Excel. Hindi natuloy ang resulta at nayanig ang tiwala. Aralin: walang manu-manong hakbang, lahat ay nasa code at Git.
Apat na maaaring kopyahin na mga template
1) Pag-inspeksyon sa pagtagas:
Ang iyong tungkulin: leak inspector. Target: "churn" (0/1), forecast reference date: record_date. Ibibigay ko sa iyo ang listahan ng mga tampok na ito. Para sa BAWAT tampok: (a) bunga ba ito ng layunin, (b) magagamit ko ba ito sa oras ng hula, (c) kasama ba sa palugit ng oras ang hinaharap? Markahan ito bilang "hindi ligtas/kahina-hinala/leak" at sumulat ng dahilan. Mga Tampok: [listahan]
2) Leak-free na pipeline:
I-set up ang sklearn Pipeline: unang split train/test (stratified, seed=42), THEN fit all preprocessing (impute, scale, encode) sa pipeline mula sa training LAMANG. Ipaliwanag kung bakit walang leak-free ang code, kung aling hakbang ang natutunan kung saan.
3) Code ng checklist ng reproducibility:
Gusto kong gawing reproducible ang aking pagsusuri. Magmungkahi ng code/structure na nagdaragdag ng: (1) hard seed para sa lahat ng randomness, (2) pag-print ng mga bersyon ng library na ginamit, (3) date/version tag para sa data at output. Bigyan din ako ng checklist para matiyak na walang manu-manong hakbang.
4) Nakagrupong partition (parehong unit leak):
Sa data ang parehong customer_id ay umiiral sa maraming row. Gumawa ng isang split (GroupKFold oGroupShuffleSplit, group = customer_id) na PUMIPIGIL sa parehong customer mula sa parehong pagsasanay at pagsubok. Isama ang code para ma-verify na walang mga customer sa parehong set pagkatapos maghiwalay.
Mahinang prompt / Malakas na prompt
Mahinang prompt:
Ang aking modelo ay nagbalik ng 98% na katumpakan, hindi ba? I-optimize ang code.
Itinatago ng pagdiriwang ang 98% ang pagtagas. Bago mag-optimize, dapat itong tanungin kung ang markang ito ay totoo o hindi.
Napakahusay na prompt:
Ang iyong tungkulin: leak inspector. Ibinabalik ng aking modelo ang 98% na katumpakan sa set ng pagsubok, na parang "masyadong maganda para maging totoo" sa akin. Suriin: (1) ang anumang mga tampok na resulta ng target, (2) ang mga conversion na ginawa bago hatiin, (3) ang parehong unit sa dalawang set, (4) mayroon bang anumang oras na tumagas. Ilista ang anumang mga kahina-hinalang punto; Tumutok sa paghahanap ng tumagas, hindi pag-aayos ng marka.
Dito, ang isang mataas na marka ay itinuturing na isang senyales na dapat tanungin, hindi upang ipagdiwang.
Mga karaniwang pagkakamali
- Ipinagdiriwang ang "napakagandang" resulta. Ang masyadong magandang-to-be-true na marka ay isang alerto sa pagtagas, hindi isang tagumpay.
- Pag-aaral ng pagbabago mula sa lahat ng data bago ang paghahati. Ang pinakakaraniwang pagtagas; Hatiin muna gamit ang pipeline.
- Ang random na paghahati sa serye ng oras. Nakikita ng modelo ang hinaharap; Ang pagkakahati ng kronolohikal ay kinakailangan.
- Iniwan ang parehong yunit sa dalawang set. Ang modelo ay kabisado ang tao; Hatiin ayon sa pangkat.
- Hindi manu-manong pumasok at sumulat sa code. Ang pagsusuri ay nagiging hindi na maibabalik; lahat ay dapat nasa code at Git.
Tip: Sumulat ng dalawang pangungusap na "pledge of honor" sa simula ng iyong proyekto: "Hindi ko pa nahawakan ang test set sa anumang paraan bago ko ito makita sa produksyon. Ang bawat hakbang ay nasa code at ang binhi ay naayos na." Kung hindi mo mapirmahan nang tapat ang dalawang pangungusap na ito, hindi pa maaasahan ang iyong resulta.
Sa buod
Ang data leakage at non-reproducibility ay ang dalawang pinakamahal na silent error sa data science. Ang pagtagas ay ang pananaw ng modelo sa hinaharap at nagpapakita ng sarili bilang maling tagumpay; Ang solusyon ay hatiin ang set ng pagsubok nang maaga, alamin ang mga pagbabagong-anyo lamang mula sa pagsasanay (pipeline), tanungin ang bawat tampok ng tanong na "Mayroon ba ako nito sa oras ng hula" at gawin ang tamang paghahati (kronolohikal/naka-grupo). Ang reproducibility ay ang pagkuha ng parehong resulta ng dalawang beses; ang kanyang solusyon ay manu-manong alisin ang mga hakbang, i-pin ang binhi, i-freeze ang mga bersyon, at panatilihin ang lahat sa Git. Maaaring taasan o bawasan ng AI ang mga panganib na ito; Ang iyong disiplina ang nagpapasiya.
Gawain ng aplikasyon
Kunin ang listahan ng tampok ng isang modelo na iyong binuo (o isang hypothetical) at tanungin ang bawat tampok ng tanong na "mayroon ba akong impormasyong ito sa oras ng hula?" sa pagsulat; Maghanap ng hindi bababa sa isang kandidatong tumagas. Pagkatapos ay punan ang isang checklist para gawing reproducible ang iyong pagsusuri: naayos na ba ang binhi, may mga manu-manong hakbang ba, nakarehistro ba ang mga bersyon, nasa Git ba ang mga ito. Ayusin ang mga pagkukulang.
checklist
- [ ] Ni-query ko ba ang markang "too good to be true" bilang alerto sa pagtagas?
- [ ] Natutunan ko ba ang lahat ng pagbabago pagkatapos ng split, mula sa pagsasanay?
- [ ] Nahati ba ako ayon sa istraktura ng oras/pangkat (chronological/GroupKFold)?
- [ ] Ginawa ko bang nauulit ang lahat ng randomness gamit ang fixed seed?
- [ ] Inalis ko ba ang mga manu-manong hakbang at pinanatili ang lahat sa code at version control?