Vienība 2 / 11

Datu cauruļvads: vākšana, tīrīšana, marķēšana un versiju noteikšana

Ieguvumi:

  • Spēja iestatīt datu cauruļvadu (savākšana, validācija, tīrīšana, pārveidošana, sadalīšana, versiju veidošana) un shēmas validācijas ievietošana konveijera sākumā
  • Spēja pieņemt trūkstošās vērtības un marķēšanas lēmumus, pamatojoties uz lauka nozīmi un dalījumu, lai novērstu datu noplūdi (grupu un laika)
  • Spēja izveidot reproducējamu datu bāzi, fiksējot datu versiju un nejaušības sēklu

Katras mašīnmācīšanās sistēmas patiesais spēks slēpjas datos, nevis modelī. Pieredzējuši inženieri zina: “atkritumi iekšā, atkritumi ārā” — pat vismodernākais modelis, kuram tiek ievadīti slikti dati, radīs sliktus rezultātus. Šajā vienībā mēs izveidojam datu cauruļvadu (datu cauruļvads: darbību ķēde, kas sagatavo neapstrādātos datus modeļa apmācībai) no gala līdz beigām un uzzinām, kurā šīs līnijas posmā mēs varam droši izmantot mākslīgo intelektu.

Datu līnijas soļi

Datu līnija parasti iet caur šīm pieturām:

  1. Savākšana (pārsūtīšana): datu iegūšana no avotiem (datubāze, API, žurnālfaili, notikumu straumes).
  2. Validācija: pārbauda, ​​vai dati atbilst paredzētajai shēmai, veidiem un diapazoniem.
  3. Tīrīšana: apstrādājiet trūkstošās vērtības, ierakstu dublikātus, novirzes un neatbilstības.
  4. Pārveidošana: neapstrādātu datu pārvēršana atribūtos, piemēram, kategoriska mainīgā konvertēšana par skaitli, "nedēļas dienas" izveidošana no datuma.
  5. Sadalīšana: sadalīšana apmācības, apstiprināšanas un testēšanas komplektos.
  6. Versionēšana: ieraksta, kurš modelis tika apmācīts ar kādiem datiem.

Mākslīgais intelekts ietaupa laiku, ģenerējot koda uzmetumus un idejas, īpaši 2., 3. un 4. solī. Taču lēmumi, piemēram, kuru ierakstu izmest, kuru trūkstošo vērtību aizpildīt un kā, pieder inženierim, kurš zina datus; jo nepareiza tīrīšana modelī var ievadīt slēptu novirzi.

Datu pārbaude: līnijas agrīna aizsardzība

Dārgākās kļūdas sākas nevis ražošanā, bet gan tur, kur verifikācijas posms tiek izlaists. Shēmas validācija automātiski pārbauda, ​​vai katra ienākošā datu pakete atbilst paredzamajai struktūrai. Piemēram, vai vecuma sleja ir no 0 līdz 120, vai e-pasta lauks ir tukšs, vai sleju skaits ir mainījies?

Padoms. Ievietojiet verifikāciju rindas sākumā. Jo ātrāk tiek noķerti bojāti dati, jo lētāk tos salabot. Ražošanā pieķerta shēmas kļūda ir daudzkārt dārgāka nekā apmācības fāzē pieķerta kļūda.

Uzrakstiet validācijas shēmu ar pandera (vai Great Expectations) tālāk norādītajai datu shēmai. Kolonnas un kārtulas:- user_id: vesels skaitlis, nevar būt nulle, unikāls- vecums: vesels skaitlis, nevar būt no 0-120- pierakstīšanās_datums: datums, nevar būt nākotnē- valsts: kategorisks, no kopas {TR, DE, US, UK}- atlikums: decimāldaļa, nevar būt negatīvs. Izveidojiet jēgpilnu kļūdas ziņojumu par katru noteikumu pārkāpumu. Parādiet testu ar lauztas līnijas piemēru koda beigās.

Tīrīšana: cilvēks ir tas, kurš izlemj

Trūkstošās vērtības ir katras datu kopas realitāte. Apstrādes veidi:

  • Dzēšana: tiek atmesta rinda/kolonna ar ļoti lielu trūkstošo līmeni. Taču pastāv informācijas zaudēšanas un neobjektivitātes risks.
  • Imputācija: imputācija ar vidējo, vidējo, biežāko vērtību vai uz modeli balstītu prognozi.
  • Karogs: “Trūkst” informācijas glabāšana atsevišķā karoga kolonnā — dažreiz pati trūkstošā informācija ir signāls.

Kurš no tiem ir pareizs, ir atkarīgs no problēmas. Medicīnisko datu kopā informācija par "asins vērtību nav izmērīta" ir jāsaglabā, nevis jādzēš; Jo pat ārsta atteikums veikt mērījumus ir signāls. AI var sniegt jums opcijas un kodu; Jūs izvēlaties, kurš no tiem atbilst lauka realitātei.

Vāja uzvedne / spēcīga uzvedne

Vāja uzvedne: "Ievadiet trūkstošās vērtības."

Spēcīga uzvedne: "Šajās kolonnās trūkst vērtību: ienākumi (trūkst 12%, sadalījums ir pa labi), last_login (trūkst 30%). Iesakiet ievadīt ienākumus ar mediānu, bet paskaidrojiet, kāpēc mediāna, nevis vidējā. Pieņemsim, ka pēdējā_login trūkstošā vērtība varētu būt nozīmīga (lietotājs, iespējams, nekad nav pieteicies); apsveriet iespēju ģenerēt never_logged_in karodziņu W, lai pievienotu karodziņu W.

Atšķirība: spēcīga uzvedne sniedz izplatīšanas informāciju un apgabala nozīmi; mākslīgais intelekts ražo lēmumu atbalstu, nevis mehānisku pildījumu.

Marķējums: tiek mērīta kvalitāte

Uzraudzītās mācībās (mācībās, kurās tiek sniegti piemēri ar pareizajām atbildēm), modelis iemācās etiķetes (etiķetes: pareizā atbilde katram piemēram). Etiķetes kvalitāte nosaka griestus — ja cilvēki marķē nekonsekventi, modelis mācās nekonsekventi.

Anotatoru savstarpējā vienošanās mēra ātrumu, kādā dažādi cilvēki piešķir vienu un to pašu apzīmējumu vienam un tam pašam paraugam; To izsaka ar tādu koeficientu kā Koena Kapa. Zema atbilstība norāda, ka uzdevums ir neskaidrs vai norādījumi ir vāji.

Mākslīgais intelekts palīdz marķēt divos veidos: (1) izstrādāt anotācijas vadlīnijas, (2) iepriekš marķēt un likt cilvēkam to tikai labot. Taču iepriekšējai marķēšanai ar LLM ir kļūme: sistemātiska modeļa kļūda var iekļūt visā etiķešu komplektā. Tāpēc cilvēki vienmēr pārbauda dažas LLM etiķetes.

Uzmanību: neuzskatiet LLM ražotās etiķetes par "patiesību". Pārbaudiet paraugu ar cilvēku un izmēriet LLM piemērotību cilvēkam. Ja atbilstība ir zema, iepriekšēja marķēšana nodarīs vairāk ļauna nekā laba.

Datu nodalījums: novērstu noplūdi

Visbīstamākā kļūda, sadalot datus apmācībā/validācijā/testēšanā, ir datu noplūde: testa informācijas sajaukšana apmācībā. Piemēri:

  • Viena un tā paša lietotāja ieraksti attiecas gan uz apmācību, gan testēšanu (grupas noplūde).
  • Nākotnes izmantošana apmācībās un pagātnes izmantošana testēšanā laika rindās (temporālā noplūde).
  • Mērogošanas (normalizācijas) parametru aprēķināšana no visiem datiem un pēc tam dalīšana.

Laika sadalīšana ir būtiska problēmām, kas saistītas ar laiku: trenieties ar pagātni, pārbaudiet nākotni. Nejauša sadalīšana dod "nākotnes" ieguvumu, kas nekad nenotiks ražošanā, un palielina rādītājus.

Datu versiju veidošana un reproducējamība

“Ar kādiem datiem mēs apmācījām šo modeli?” Spēja atbildēt uz jautājumu mēnešiem vēlāk ir nopietnas ML inženierijas pazīme. Datu versiju noteikšana saglabā katru datu momentuzņēmumu ar ID (jaukšanas vai versijas tagu). Rīki, piemēram, DVC (datu versijas kontroles) versijas dati, piemēram, kods.

Lai reproducētu modeļa rezultātu, ir jālabo trīs lietas: datu versija, koda versija un nejaušā sēkla. Bez šīs trijotnes nav iespējams pateikt "es saņēmu tādu pašu rezultātu". Mēs padziļināsim reproducējamību 11. vienībā; bet sēklu fiksēšana datu konveijerā sākas no šejienes.

trīs mini futrāļi

1. gadījums — saglabāta dienas shēmas validācija. Kad komanda pārveidoja augšupējās sistēmas cenu lauku no santīmiem uz lirām, visas cenas samazinājās 100 reižu. Shēmas validācija noraidīja partiju kā "cena ārpus diapazona", un modelis netika apmācīts ar bojātiem datiem. Bez pārbaudes kļūda tiktu pamanīta tikai ražošanā ar nepareizām prognozēm.

2. gadījums — nepareiza pildījuma novirze. Kredīta modelī trūkstošās ienākumu vērtības tika aizpildītas ar vidējo. Taču trūkstošo ienākumu pārsvarā bija zemo ienākumu grupā; vidējā noteikšana mākslīgi "bagātināja" šo grupu, un modelis viņiem piedāvāja netaisnīgi augstu robežu. Novērsta problēma ar vidējo un trūkstošo karogu.

3. gadījums — īslaicīga noplūde. Pieprasījuma prognozēšanas modelis testa komplektā izskatījās lieliski (95% precizitāte), taču ražošanā tas neizdevās. Kāpēc: nejaušas sadalīšanas dēļ modelis bija redzējis nākotni. Pārejot uz pagaidu binēšanu, testa precizitāte samazinājās līdz 78%, taču tā bija reāla veiktspēja un saglabāja to ražošanā.

Kopējamas veidnes

Sadaliet šādu datu kopu trīs kopās: apmācība/validācija/testēšana.Ierobežojums: šī ir laika rinda; Izmantojiet TEMPORAL sadalīšanu (apmācīt pagātnē, pārbaudiet nākotnē). Novērst partijas noplūdi: izmantojiet vienu un to pašu klienta_id tikai vienā klasterī. Aprēķiniet mērogošanas parametrus TIKAI no apmācības kopas, pēc tam piemērojiet visiem. Izdrukājiet, cik rindiņu kodā ir atlicis katrā darbībā, un pievienojiet apgalvojumu, kas pārbauda, ​​vai nav noplūdes.

Uzrakstiet šī marķēšanas uzdevuma anotācijas vadlīniju projektu.Uzdevums: [piem. Iezīmējiet klientu atsauksmi pozitīvu/negatīvu/neitrālu] Noskaidrojiet robežgadījumus: sarkasms, jauktas emocijas, kā atzīmēt ar produktu nesaistītu atsauksmi? Sniedziet 5 piemērus un 3 sarežģītus gadījumus, kas uzlabos atzīmju konsekvenci.

Izveidojiet šī datu konveijera reproducējamības kontrolsarakstu:- Kā jālabo datu versija?- Kuras nejaušības sākuma daļas ir jāiestata?- Kādi metadati (datu jaukšana, rindu skaits, datums) ir jāreģistrē? Mana kodu bāze: [valoda/bibliotēka]

Pārbaudiet, vai šajā tīrīšanas kodā nav datu noplūdes. Konkrēti apskatiet šo: vai mērogošanas/kodēšanas parametri tiek aprēķināti PIRMS sadalīšanas? Vai no visiem datiem tiek aprēķināta kāda statistika vai tikai apmācība? Kods: [kods]

Lēmumu tabula: trūkst vērtību stratēģijas

Statuss

Ieteicamā pieeja

Kāpēc

Skaitlisks, šķībs sadalījums

aizpildīt ar mediānu

Vidējo vērtību ietekmē ārpuses

Skaitlisks, simetrisks

aizpildīt ar vidējo

Aizsargā informāciju

Trūkums var būt ievērojams

Atzīmēt kolonnu + aizpildīt

Trūkums ir signāls

Trūkst likme > 60%

Novērtēt/izmest kolonnu

Troksnis ir pārāk liels

Kategorisks

Kategorija "Nezināms".

Nerada mākslīgo vairākumu

Biežas kļūdas

  • Verifikācijas izlaišana. Bez shēmas kontroles bojāti dati iekļūst klusi.
  • Mērogošana pirms sadalīšanas. Tas pārbaužu statistiku nopludina izglītībā.
  • Izmantojot nejaušu sadalīšanu laika rindās. Tas rada viltotus augstus rādītājus.
  • Akli uzticoties LLM etiķetēm. Sistemātiska kļūda izplatās visos datos.
  • Datu versija netiek saglabāta. Jūs nevarat reproducēt rezultātu.
  • Mehāniskā pildīšana ar vidējo. Tas ignorē lauka nozīmi, pievieno neobjektivitāti.

Rezumējot

Datu cauruļvads ir ML sistēmas pamats, un tas ir pelnījis vairāk pūļu nekā modelis. Ievietojiet verifikāciju augšpusē; pieņemt lēmumus par tīrīšanu un marķēšanu, izmantojot zināšanas par jomām; novērstu noplūdi (grupu un īslaicīgu) nodalījumā; salabot datu versiju un sēklu. AI ģenerē kodu un idejas šajā rindā, taču jums ir jāizlemj, kurus datus un kā apstrādāt, jo katrs šeit pieņemtais nepareizais lēmums pāriet modelī kā slēpts trūkums.

Lietojumprogrammas uzdevums

Uzrakstiet validācijas shēmu (pandera/Great Expectations) savā datu kopā un apzināti pievienojiet sliktu rindu un parādiet, ka tā ir aizķerta. Pēc tam sadaliet datus īslaicīgi vai pa daļām, aprēķiniet mērogošanas parametrus tikai no apmācības un pārbaudiet, vai nav noplūdes, izmantojot apgalvojumu. Ierakstiet datu versiju un rindu skaitu metadatu failā.

kontrolsaraksts

  • [ ] Shēmas validācija tiek veikta rindas augšpusē.
  • [ ] Trūkstošo vērtību stratēģiju izvēlējos pēc lauka nozīmes, neaizpildīju to mehāniski.
  • [ ] Izmērīju etiķetes kvalitāti (atbilstību); Es pārbaudīju LLM atzīmes.
  • [ ] Es novērsu grupu un īslaicīgu noplūdi rūtī.
  • [ ] Mērogošana/kodēšana aprēķināta tikai no apmācības komplekta.
  • [ ] Datu versija, reģistrēto rindu skaits un sēklas.