Vienetas 2 / 11

Duomenų srautas: rinkimas, valymas, žymėjimas ir versijų kūrimas

Pelnas:

  • Galimybė nustatyti duomenų konvejerį (rinkti, patvirtinti, išvalyti, transformuoti, skaidyti, kurti versijas) ir pateikti schemos patvirtinimą konvejerio pradžioje
  • Galimybė priimti trūkstamos vertės ir ženklinimo sprendimus pagal lauko reikšmę ir padalijimą, kad būtų išvengta duomenų nutekėjimo (grupinis ir laikinas)
  • Galimybė sukurti atkuriamą duomenų bazę fiksuojant duomenų versiją ir atsitiktinumo sėklą

Tikroji kiekvienos mašininio mokymosi sistemos galia slypi duomenyse, o ne modelyje. Patyrę inžinieriai žino: „šiukšles įvežti, šiukšles išvežti“ – net pažangiausias modelis, tiekiamas blogais duomenimis, duos blogų rezultatų. Šiame skyriuje mes sukuriame duomenų srautą (duomenų srautas: žingsnių grandinė, kuri paruošia neapdorotus duomenis modelio mokymui) iki galo ir sužinome, kuriame šios linijos etape galime saugiai naudoti dirbtinį intelektą.

Duomenų linijos žingsniai

Duomenų linija paprastai eina per šias stoteles:

  1. Rinkimas (perdavimas): duomenų gavimas iš šaltinių (duomenų bazės, API, žurnalo failų, įvykių srautų).
  2. Patvirtinimas: patikrinama, ar duomenys atitinka numatytą schemą, tipus ir diapazonus.
  3. Valymas: trūkstamų verčių, pasikartojančių įrašų, nuokrypių ir neatitikimų tvarkymas.
  4. Transformacija: neapdorotų duomenų pavertimas atributais, pvz., kategorinio kintamojo konvertavimas į skaičių, „savaitės dienos“ generavimas iš datos.
  5. Padalijimas: padalijimas į mokymo, patvirtinimo ir testavimo rinkinius.
  6. Versijų kūrimas: įrašymas, kuris modelis buvo apmokytas naudojant kokius duomenis.

Dirbtinis intelektas taupo laiką generuodamas kodo juodraščius ir idėjas, ypač 2, 3 ir 4 žingsniuose. Tačiau sprendimai, pavyzdžiui, kurį įrašą atmesti, kurią trūkstamą reikšmę užpildyti ir kaip, priklauso duomenis žinančiam inžinieriui; nes netinkamas valymas gali sukelti paslėptą modelio šališkumą.

Duomenų patikrinimas: ankstyva linijos apsauga

Brangiausios klaidos prasideda ne gamyboje, o ten, kur praleidžiamas patikrinimo žingsnis. Schemos patvirtinimas automatiškai patikrina, ar kiekviena gaunama duomenų grupė atitinka numatomą struktūrą. Pavyzdžiui, ar amžiaus stulpelis yra nuo 0 iki 120, ar el. pašto laukas tuščias, ar pasikeitė stulpelių skaičius?

Patarimas: patvirtinimą pateikite eilutės pradžioje. Kuo greičiau sugaunami sugadinti duomenys, tuo pigiau juos ištaisyti. Gamybos metu pagauta schemos klaida yra daug kartų brangesnė nei užfiksuota mokymo etape.

Parašykite patvirtinimo schemą su pandera (arba Great Expectations) toliau nurodytai duomenų schemai. Stulpeliai ir taisyklės:- user_id: sveikasis skaičius, negali būti nulis, unikalus- amžius: sveikasis skaičius, negali būti nuo 0-120- prisiregistravimo_data: data, negali būti ateityje- šalis: kategorinė, iš rinkinio {TR, DE, US, UK} - likutis: dešimtainis, negali būti neigiamas. Pateikite prasmingą klaidos pranešimą apie kiekvieną taisyklės pažeidimą. Parodykite testą su pavyzdžiu laužyta linija kodo pabaigoje.

Valymas: sprendžia žmogus

Trūkstamos reikšmės yra kiekvieno duomenų rinkinio realybė. Tvarkymo būdai:

  • Ištrynimas: atmetama eilutė / stulpelis su labai dideliu trūkstamu rodikliu. Tačiau yra informacijos praradimo ir šališkumo pavojus.
  • Priskyrimas: priskyrimas su vidurkiu, mediana, dažniausia verte arba modeliu pagrįsta prognozė.
  • Vėliava: „Trūko“ informacijos saugojimas atskirame vėliavėlės stulpelyje – kartais pats trūkstamas signalas yra signalas.

Kuris yra teisingas, priklauso nuo problemos. Medicininių duomenų rinkinyje „kraujo vertės neišmatuota“ informacija turėtų būti išsaugota, o ne ištrinta; Nes net ir gydytojo atsisakymas atlikti matavimus yra signalas. AI gali suteikti jums parinktis ir kodą; Jūs pasirenkate, kuris iš jų atitinka tikrovę šioje srityje.

Silpnas raginimas / Stiprus raginimas

Silpnas raginimas: „Įveskite trūkstamas reikšmes“.

Stiprus raginimas: „Trūksta verčių šiuose stulpeliuose: pajamos (trūksta 12 %, paskirstymas į dešinę), last_login (trūksta 30 %). Siūlykite pajamas įrašyti mediana, bet paaiškinkite, kodėl mediana, o ne vidurkis. Tarkime, kad paskutinis_login trūkstama reikšmė gali būti reikšminga (vartotojas galbūt niekada neprisijungė); apsvarstykite galimybę generuoti never_logged_in žymeklį W.

Skirtumas: stiprus raginimas suteikia paskirstymo informaciją ir ploto reikšmę; dirbtinis intelektas sukuria sprendimų palaikymą, o ne mechaninį užpildymą.

Ženklinimas: matuojama kokybė

Vadovaujantis mokymusi (mokymasis, kai pavyzdžiai pateikiami su teisingais atsakymais), tai, ką modelis išmoksta, yra etiketės (etiketės: teisingas kiekvieno pavyzdžio atsakymas). Etikečių kokybė nustato lubas – jei žmonės ženklina nenuosekliai, modelis mokosi nenuosekliai.

Tarp anotatorių susitarimas matuoja greitį, kuriuo skirtingi žmonės suteikia tą pačią etiketę tam pačiam mėginiui; Jis išreiškiamas tokiu koeficientu kaip Coheno Kappa. Mažas atitikimas rodo, kad užduotis neaiški, arba instrukcija silpna.

Dirbtinis intelektas padeda ženklinti dviem būdais: (1) parengti anotacijos gaires, (2) iš anksto paženklinti etiketę ir leisti žmogui tik tai pataisyti. Tačiau išankstinis ženklinimas naudojant LLM turi spąstą: sisteminga modelio klaida gali patekti į visą etikečių rinkinį. Štai kodėl žmonės visada tikrina kai kurias LLM etiketes.

Dėmesio: LLM gaminamų etikečių nelaikykite „pagrindine tiesa“. Patikrinkite mėginį su žmogumi ir išmatuokite LLM-žmogaus tinkamumą. Jei reikalavimų nesilaikoma, išankstinis ženklinimas padarys daugiau žalos nei naudos.

Duomenų skaidinys: apsaugokite nuo nutekėjimo

Pavojingiausia klaida dalijant duomenis į mokymą / patvirtinimą / testavimą yra duomenų nutekėjimas: testo informacijos maišymas į mokymą. Pavyzdžiai:

  • Tie patys vartotojo įrašai patenka ir į mokymus, ir į testavimą (grupės nutekėjimas).
  • Ateities panaudojimas mokymuose ir praeities testavimas laiko eilutėse (laikinis nutekėjimas).
  • Skaičiuojant mastelio (normalizavimo) parametrus iš visų duomenų ir tada dalijant.

Laiko padalijimas yra būtinas sprendžiant problemas, susijusias su laiku: mokykitės su praeitimi, išbandykite ateitį. Atsitiktinis padalijimas suteikia „ateities“ naudos, kurios niekada nebus gamyboje, ir padidina metriką.

Duomenų versijų kūrimas ir atkuriamumas

„Kokiais duomenimis mes mokėme šį modelį? Galimybė atsakyti į klausimą po kelių mėnesių yra rimtos ML inžinerijos bruožas. Duomenų versijų nustatymas išsaugo kiekvieną momentinę duomenų kopiją su ID (maišos arba versijos žyma). Įrankiai, pvz., DVC (duomenų versijos valdymo) versijos duomenys, pvz., kodas.

Norint atkurti modelio rezultatą, reikia nustatyti tris dalykus: duomenų versiją, kodo versiją ir atsitiktinę pradžią. Be šios trijulės neįmanoma pasakyti „gavau tą patį rezultatą“. Pagilinsime atkuriamumą 11 skyriuje; bet sėklos fiksavimas duomenų konvejeryje prasideda nuo čia.

trys mini dėklai

1 atvejis – išsaugotas dienos schemos patvirtinimas. Kai komanda pavertė ankstesnės sistemos kainų lauką iš centų į liras, visos kainos sumažėjo 100 kartų. Schemos patvirtinimas atmetė paketą kaip „kaina nepatenka į diapazoną“, o modelis nebuvo apmokytas su sugadintais duomenimis. Be patikrinimo klaida būtų pastebėta tik gamyboje, neteisingai numatant.

2 atvejis – neteisingas užpildymas. Kredito modelyje trūkstamos pajamų vertės buvo užpildytos vidurkiu. Tačiau trūkstamų pajamų daugiausia buvo mažas pajamas gaunančių asmenų grupėje; vidurkis dirbtinai „praturtino“ šią grupę, o modelis jiems pasiūlė nesąžiningai aukštą ribą. Išspręsta medianos + trūkstamos vėliavėlės problema.

3 atvejis – laikinas nutekėjimas. Paklausos prognozavimo modelis puikiai atrodė bandymo rinkinyje (95 % tikslumas), tačiau gamyboje sudužo. Kodėl: dėl atsitiktinio padalijimo modelis matė ateitį. Perėjus prie laikinojo atskyrimo, bandymo tikslumas sumažėjo iki 78 %, tačiau tai buvo tikras našumas ir jis liko gamyboje.

Kopijuojami šablonai

Padalinkite šį duomenų rinkinį į tris rinkinius: mokymas / patvirtinimas / testavimas. Apribojimas: Tai yra laiko eilutė; Naudokite LAIKINĮ padalijimą (mokykite praeityje, išbandykite ateityje). Neleiskite paketo nutekėti: turėkite tą patį „customer_id“ tik vienoje grupėje. Apskaičiuokite mastelio keitimo parametrus TIK iš mokymo rinkinio, tada pritaikykite visiems. Atspausdinkite, kiek eilučių liko kode kiekviename žingsnyje ir pridėkite tvirtinimą, kuris patikrina, ar nėra nuotėkio.

Parašykite šios ženklinimo užduoties anotacijos gairės juodraštį.Užduotis: [pvz.,. Pažymėkite kliento atsiliepimą teigiamai / neigiamai / neutraliai] Išsiaiškinkite ribinius atvejus: sarkazmas, įvairios emocijos, kaip pažymėti atsiliepimą, nesusijusį su produktu? Pateikite 5 pavyzdžius ir 3 sudėtingus atvejus, kurie padidins žymų nuoseklumą.

Sukurkite šio duomenų srauto atkuriamumo kontrolinį sąrašą:- Kaip turėtų būti nustatyta duomenų versija?- Kuriuos atsitiktinumo pradinės dalys turėtų būti nustatytos?- Kokie metaduomenys (duomenų maiša, eilučių skaičius, data) turėtų būti registruojami? Mano kodų bazė: [kalba/biblioteka]

Patikrinkite šį valymo kodą, ar nėra duomenų nutekėjimo. Konkrečiai pažvelkite į tai: ar mastelio / kodavimo parametrai apskaičiuojami PRIEŠ padalijimą? Ar iš visų duomenų skaičiuojama kokia nors statistika, ar tik mokymas? Kodas: [kodas]

Sprendimų lentelė: trūksta vertės strategijos

Būsena

Rekomenduojamas požiūris

Kodėl

Skaitinis, iškreiptas skirstinys

užpildyti mediana

Viduriui įtakos turi nuokrypiai

Skaitinis, simetriškas

užpildyti vidutiniu

Saugo informaciją

Trūkumas gali būti reikšmingas

Žymėti stulpelį + užpildyti

Trūkumas yra signalas

Trūkstama norma > 60 %

Įvertinti/išmesti stulpelį

Triukšmo per daug

Kategoriškas

Kategorija „Nežinoma“.

Nesukuria dirbtinės daugumos

Dažnos klaidos

  • Praleidžiamas patvirtinimas. Be schemos valdymo, sugadinti duomenys įsiskverbia tyliai.
  • Mastelio keitimas prieš skaidant. Tai nutekina testų statistiką į švietimą.
  • Atsitiktinis padalijimas laiko eilutėse. Tai sukuria netikrus aukštus rodiklius.
  • Aklai pasitiki LLM etiketėmis. Sisteminė klaida pasklinda per duomenis.
  • Neišsaugoma duomenų versija. Jūs negalite atkurti rezultato.
  • Mechaninis užpildymas su vidutiniu. Tai nepaiso lauko reikšmės, prideda šališkumo.

Apibendrinant

Duomenų kanalas yra ML sistemos pagrindas ir nusipelno daugiau pastangų nei modelis. Įdėkite patvirtinimą viršuje; priimti valymo ir ženklinimo sprendimus, turint srities žinių; užkirsti kelią nuotėkiui (grupiniam ir laikinam) skyriuje; pataisyti duomenų versiją ir pradžią. AI generuoja kodą ir idėjas šioje eilutėje, bet jūs turite nuspręsti, kuriuos duomenis apdoroti ir kaip, nes kiekvienas neteisingas sprendimas pereina į modelį kaip paslėptas trūkumas.

Taikymo užduotis

Parašykite patvirtinimo schemą (pandera / Great Expectations) savo duomenų rinkinyje ir sąmoningai pridėkite blogą eilutę ir parodykite, kad ji užkliuvo. Tada suskirstykite duomenis laikinai arba dalimis, apskaičiuokite mastelio keitimo parametrus tik iš treniruotės ir patikrinkite, ar nėra nuotėkio. Į metaduomenų failą įrašykite duomenų versiją ir eilučių skaičių.

kontrolinis sąrašas

  • [ ] Schemos patvirtinimas vykdomas eilutės viršuje.
  • [ ] Trūkstamos reikšmės strategiją pasirinkau pagal lauko reikšmę, nepildžiau mechaniškai.
  • [ ] Matavau etiketės kokybę (atitikimą); Žmogus patikrino LLM žymas.
  • [ ] Užkirtau kelią grupės ir laikino nutekėjimo srityje.
  • [ ] Mastelio keitimas / kodavimas skaičiuojamas tik iš mokymo rinkinio.
  • [ ] Duomenų versija, įrašytų eilučių skaičius ir sėkla.