Yunit 2 / 11

Data Pipeline: Pagkolekta, Paglilinis, Pag-tag at Pag-bersyon

Mga nadagdag:

  • Kakayahang mag-set up ng pipeline ng data (pagkolekta, pagpapatunay, paglilinis, pagbabago, paghahati, bersyon) at paglalagay ng pagpapatunay ng schema sa simula ng pipeline
  • Kakayahang gumawa ng nawawalang halaga at mga desisyon sa pag-label batay sa kahulugan ng field at paghahati upang maiwasan ang pagtagas ng data (pangkat at temporal)
  • Kakayahang lumikha ng reproducible data base sa pamamagitan ng pag-aayos ng bersyon ng data at randomness seed

Ang tunay na kapangyarihan ng bawat machine learning system ay nakasalalay sa data, hindi sa modelo. Alam ng mga bihasang inhinyero: "pumasok ang basura, palabasin ang basura" — kahit na ang pinaka-advanced na modelo na pinapakain ng masamang data ay magbubunga ng masamang resulta. Sa unit na ito, itinatatag namin ang pipeline ng data (pipeline ng data: ang hanay ng mga hakbang na ginagawang handa ang hilaw na data para sa pagsasanay sa modelo) at natutunan namin kung aling hakbang ng linyang ito ang ligtas naming magagamit ang artificial intelligence.

Mga hakbang ng linya ng data

Karaniwang dumadaan ang isang linya ng data sa mga paghintong ito:

  1. Pagkolekta (ingestion): Pagkuha ng data mula sa mga source (database, API, log file, mga stream ng kaganapan).
  2. Pagpapatunay: Pagsusuri kung ang data ay sumusunod sa inaasahang schema, mga uri, at mga saklaw.
  3. Paglilinis: Pangangasiwa sa mga nawawalang value, duplicate na tala, outlier, at hindi pagkakapare-pareho.
  4. Pagbabagong-anyo: Ang paggawa ng raw data sa mga katangian — gaya ng pag-convert ng isang kategoryang variable sa isang numero, na gumagawa ng isang "araw ng linggo" mula sa isang petsa.
  5. Paghahati: Paghihiwalay sa mga set ng pagsasanay, pagpapatunay at pagsubok.
  6. Pag-bersyon: Pagre-record kung aling modelo ang sinanay kung aling data.

Ang artificial intelligence ay nakakatipid ng oras sa pamamagitan ng pagbuo ng mga draft at ideya ng code, lalo na sa mga hakbang 2, 3 at 4. Ngunit ang mga desisyon tulad ng kung aling talaan ang itatapon, kung aling nawawalang halaga ang dapat punan at kung paano, pagmamay-ari ng engineer na nakakaalam ng data; dahil ang hindi wastong paglilinis ay maaaring magpasok ng isang nakatagong bias sa modelo.

Pag-verify ng data: maagang pagtatanggol sa linya

Ang pinakamahal na mga error ay nagsisimula hindi sa produksyon, ngunit kung saan ang hakbang sa pag-verify ay nilaktawan. Awtomatikong sinusuri ng pagpapatunay ng schema kung ang bawat papasok na batch ng data ay sumusunod sa inaasahang istraktura. Halimbawa, nasa pagitan ba ng 0-120 ang column ng edad, walang laman ba ang field ng email, nagbago ba ang bilang ng mga column?

Tip: Ilagay ang verification sa simula ng linya. Ang mas maagang corrupt na data ay nahuli, mas mura ito upang ayusin. Ang isang error sa schema na nakuha sa produksyon ay maraming beses na mas mahal kaysa sa isang nahuli sa yugto ng pagsasanay.

Sumulat ng validation scheme na may pandera (o Great Expectations) para sa sumusunod na data schema. Mga column at panuntunan:- user_id: integer, hindi maaaring null, unique- age: integer, hindi maaaring mula sa 0-120- signup_date: petsa, hindi maaaring sa hinaharap- bansa: kategorya, mula sa set {TR, DE, US, UK}- balanse: decimal, hindi maaaring negatibo Gumawa ng makabuluhang mensahe ng error para sa bawat paglabag sa panuntunan. Ipakita ang pagsubok na may halimbawang sirang linya sa dulo ng code.

Paglilinis: ang tao ang nagpapasya

Ang mga nawawalang halaga ay isang katotohanan ng bawat set ng data. Mga paraan upang pangasiwaan:

  • Pagtanggal: Pagtatanggal ng row/column na may napakataas na nawawalang rate. Ngunit may panganib ng pagkawala ng impormasyon at pagkiling.
  • Imputation: Imputation na may mean, median, pinakamadalas na value, o model-based na hula.
  • Flag: Ang pag-iimbak ng "nawawala" na impormasyon sa isang hiwalay na column ng flag — kung minsan ang nawawala mismo ay ang signal.

Alin ang tama ay depende sa problema. Sa isang hanay ng medikal na data, ang impormasyong "hindi nasusukat ang halaga ng dugo" ay dapat pangalagaan sa halip na tanggalin; Dahil kahit ang pagtanggi ng doktor sa pagsukat ay isang senyales. Ang AI ay maaaring magbigay sa iyo ng mga opsyon at code; Piliin mo kung alin ang akma sa realidad ng larangan.

Mahinang prompt / Malakas na prompt

Mahinang prompt: "Punan ang mga nawawalang halaga."

Malakas na prompt: "May mga nawawalang value sa mga sumusunod na column: kita (12% nawawala, right-skewed distribution), last_login (30% missing). Imungkahi na punan ang kita ng median, ngunit ipaliwanag kung bakit median at hindi mean. Para sa last_login, ipagpalagay na ang nawawalang value ay maaaring makabuluhan (ang user ay maaaring hindi kailanman naka-log in); isaalang-alang ang pagbuo ng isang never_login approach sa halip na idagdag ang bias. modelo."

Pagkakaiba: ang malakas na prompt ay nagbibigay ng impormasyon sa pamamahagi at kahulugan ng lugar; Ang artificial intelligence ay gumagawa ng suporta sa desisyon sa halip na mekanikal na pagpuno.

Pag-label: nasusukat ang kalidad

Sa pinangangasiwaang pag-aaral (pag-aaral kung saan ibinibigay ang mga halimbawa na may mga tamang sagot), ang natutunan ng modelo ay mga label (mga label: ang tamang sagot para sa bawat halimbawa). Ang kalidad ng label ay nagtatakda ng kisame — kung hindi pare-pareho ang label ng mga tao, hindi pare-parehong natututo ang modelo.

Sinusukat ng kasunduan sa inter-annotator ang rate kung saan ang iba't ibang tao ay nagbibigay ng parehong label sa parehong sample; Ito ay ipinahayag ng isang koepisyent tulad ng Kappa ni Cohen. Ang mababang pagsunod ay nagpapahiwatig na ang gawain ay hindi malinaw o ang pagtuturo ay mahina.

Nakakatulong ang artificial intelligence sa pag-label sa dalawang paraan: (1) pagbalangkas ng alituntunin ng anotasyon, (2) paunang pag-label at pagpapatama nito sa tao. Ngunit ang pre-labeling sa LLM ay may pitfall: ang sistematikong error ng modelo ay maaaring tumagas sa buong set ng label. Kaya naman palaging sinusuri ng mga tao ang ilan sa mga label ng LLM.

Pansin: Huwag ituring ang mga label na ginawa ng LLM bilang "ground truth". Suriin ang isang sample sa isang tao at sukatin ang LLM-human fit. Kung mababa ang pagsunod, ang paunang pag-label ay mas makakasama kaysa makabubuti.

Pagkahati ng data: maiwasan ang pagtagas

Ang pinaka-mapanganib na pagkakamali kapag hinahati ang data sa pagsasanay/validasyon/pagsubok ay ang pagtagas ng data: ang paghahalo ng impormasyon ng pagsubok sa pagsasanay. Mga halimbawa:

  • Ang mga talaan ng parehong user ay nahulog sa parehong pagsasanay at pagsubok (group leak).
  • Gamit ang hinaharap sa pagsasanay at ang nakaraan sa pagsubok sa serye ng oras (temporal na pagtagas).
  • Kinakalkula ang mga parameter ng scaling (normalization) mula sa lahat ng data at pagkatapos ay paghahati.

Ang pansamantalang paghahati ay mahalaga para sa mga problemang kinasasangkutan ng oras: sanayin ang nakaraan, pagsubok sa hinaharap. Ang random splitting ay nagbibigay ng "hinaharap" na benepisyo na hinding-hindi mangyayari sa produksyon at nagpapalaki sa mga sukatan.

Pag-bersyon at muling paggawa ng data

"Anong data ang ginamit namin sa pagsasanay sa modelong ito?" Ang kakayahang masagot ang tanong pagkalipas ng ilang buwan ay ang tanda ng seryosong ML engineering. Iniimbak ng bersyon ng data ang bawat snapshot ng data na may ID (hash o tag ng bersyon). Mga tool gaya ng data ng bersyon ng DVC (Data Version Control) tulad ng code.

Upang kopyahin ang resulta ng isang modelo, tatlong bagay ang dapat ayusin: ang bersyon ng data, ang bersyon ng code, at ang random na binhi. Hindi posibleng sabihin na "Nakuha ko ang parehong resulta" kung wala ang trio na ito. Palalalimin natin ang Reproducibility sa unit 11; ngunit ang pag-aayos ng binhi sa pipeline ng data ay nagsisimula dito.

tatlong mini case

Case 1 - Ang araw na na-save ang validation ng schema. Kapag ang isang team ay nag-convert ng upstream system price field mula sa mga pennies patungong liras, lahat ng mga presyo ay bumaba ng 100 beses. Tinanggihan ng pagpapatunay ng schema ang batch bilang "presyo sa labas ng hanay" at ang modelo ay hindi sinanay sa sirang data. Kung walang pag-verify, ang error ay mapapansin lamang sa produksyon, na may mga maling hula.

Kaso 2 - Bias ng maling pagpuno. Sa isang modelo ng kredito, ang mga nawawalang halaga ng kita ay napunan ng mean. Ngunit ang mga nawawalang kita ay nakararami sa grupong mababa ang kita; ang average na artipisyal na "pinayaman" ang pangkat na ito, at ang modelo ay nag-alok sa kanila ng isang hindi patas na mataas na limitasyon. Inayos ang problema sa median + missingness flag.

Kaso 3 - Pansamantalang pagtagas. Ang isang modelo ng pagtataya ng demand ay mukhang mahusay sa set ng pagsubok (95% katumpakan) ngunit bumagsak sa produksyon. Bakit: dahil sa random na paghahati, nakita ng modelo ang hinaharap. Ang paglipat sa temporal binning ay bumaba sa katumpakan ng pagsubok sa 78% — ngunit iyon ay tunay na pagganap at pinanatili ito sa produksyon.

Mga nakopyang template

Hatiin ang sumusunod na dataset sa tatlong set: pagsasanay/validation/testing.Constraint: Isa itong time series; Gumamit ng TEMPORAL splitting (magsanay sa nakaraan, pagsubok sa hinaharap). Pigilan ang batch leakage: magkaroon ng parehong `customer_id` sa isang cluster lang. Kalkulahin ang mga parameter ng scaling LAMANG mula sa set ng pagsasanay, pagkatapos ay ilapat sa lahat. I-print kung gaano karaming mga linya ang natitira sa code sa bawat hakbang at magdagdag ng paninindigan na tumitingin kung walang mga tagas.

Sumulat ng draft na alituntunin ng anotasyon para sa gawaing ito sa pag-label.Gawain: [hal. Lagyan ng label ang pagsusuri ng customer bilang positibo/negatibo/neutral]Linawin ang mga borderline na kaso: sarcasm, halo-halong emosyon, paano lagyan ng label ang review na walang kaugnayan sa produkto? Magbigay ng 5 halimbawa at 3 mahirap na kaso na magpapapataas ng pagkakapare-pareho sa mga tagger.

Gumawa ng reproducibility checklist para sa pipeline ng data na ito:- Paano dapat ayusin ang bersyon ng data?- Aling mga randomness seed ang dapat itakda kung saan?- Anong metadata (data hash, row count, date) ang dapat i-log? Aking codebase: [wika/library]

Suriin ang cleanup code na ito para sa data leakage. Partikular na tingnan ito: kinakalkula ba ang mga parameter ng scaling/encoding BAGO hatiin? Mayroon bang anumang mga istatistika na kinakalkula mula sa lahat ng data o pagsasanay lamang? Code: [code]

Talahanayan ng desisyon: nawawalang diskarte sa halaga

Katayuan

Inirerekomendang diskarte

Bakit

Numerical, skewed distribution

punan ng median

Ang average ay apektado ng mga outlier

Numerical, simetriko

punan ng average

Pinoprotektahan ang impormasyon

Ang kakulangan ay maaaring makabuluhan

I-flag ang column + fill

Ang kakulangan ay isang senyales

Nawawalang rate > 60%

Suriin/i-discard ang column

Sobrang ingay

Pangkategorya

"Hindi alam" na kategorya

Hindi lumilikha ng artipisyal na mayorya

Mga karaniwang pagkakamali

  • Nilaktawan ang pag-verify. Kung walang kontrol ng schema, tahimik na pumapasok ang sirang data.
  • Pag-scale bago hatiin. Naglalabas ito ng mga istatistika ng pagsubok sa edukasyon.
  • Paggamit ng random na paghahati sa time series. Gumagawa ito ng mga pekeng mataas na sukatan.
  • Blindly nagtitiwala sa mga label ng LLM. Ang sistematikong error ay kumakalat sa buong data.
  • Hindi sine-save ang bersyon ng data. Hindi mo maaaring kopyahin ang resulta.
  • Mechanical na pagpuno na may average. Binabalewala nito ang kahulugan ng field, nagdaragdag ng bias.

Sa buod

Ang data pipeline ay ang pundasyon ng ML system at karapat-dapat ng higit na pagsisikap kaysa sa modelo. Ilagay ang pagpapatunay sa itaas; gumawa ng mga desisyon sa paglilinis at pag-label nang may kaalaman sa domain; maiwasan ang pagtagas (grupo at temporal) sa kompartimento; ayusin ang bersyon ng data at seed. Bumubuo ang AI ng code at mga ideya sa linyang ito, ngunit nasa iyo ang pagpapasya kung aling data ang ipoproseso at kung paano — dahil ang bawat maling desisyon dito ay pumapasok sa modelo bilang isang nakatagong kapintasan.

Gawain ng aplikasyon

Sumulat ng validation scheme (pandera/Great Expectations) sa sarili mong dataset at sadyang magdagdag ng masamang row at ipakita na nahuli ito. Pagkatapos ay hatiin ang data sa temporal o batchwise, kalkulahin ang mga parameter ng scaling mula sa pagsasanay lamang, at i-verify na walang leakage na may paggigiit. Isulat ang bersyon ng data at bilang ng hilera sa isang metadata file.

checklist

  • [ ] Ang pagpapatunay ng schema ay tumatakbo sa tuktok ng linya.
  • [ ] Pinili ko ang diskarte sa nawawalang halaga batay sa kahulugan ng field, hindi ko ito pinunan nang mekanikal.
  • [ ] Sinukat ko ang kalidad ng label (pagsunod); Sinuri ko ng tao ang mga tag ng LLM.
  • [ ] Pinigilan ko ang grupo at temporal na pagtagas sa pane.
  • [ ] Ang pag-scale/encoding ay kinakalkula mula sa set ng pagsasanay lamang.
  • [ ] Bersyon ng data, bilang ng mga row at seed na naitala.