Enota 2 / 11

Podatkovni cevovod: zbiranje, čiščenje, označevanje in različice

Dobički:

  • Sposobnost nastavitve podatkovnega cevovoda (zbiranje, preverjanje veljavnosti, čiščenje, preoblikovanje, razdelitev, različice) in postavitev validacije sheme na začetek cevovoda
  • Sposobnost odločanja o manjkajoči vrednosti in označevanju na podlagi pomena polja in delitve, da se prepreči uhajanje podatkov (skupinsko in časovno)
  • Sposobnost ustvarjanja ponovljive baze podatkov s popravkom različice podatkov in semena naključnosti

Prava moč vsakega sistema strojnega učenja je v podatkih, ne v modelu. Izkušeni inženirji vedo: "smeti noter, smeti ven" - tudi najnaprednejši model, ki se napaja s slabimi podatki, bo povzročil slabe rezultate. V tej enoti vzpostavimo podatkovni cevovod (podatkovni cevovod: veriga korakov, ki pripravijo neobdelane podatke za usposabljanje modela) od konca do konca in se naučimo, na katerem koraku te linije lahko varno uporabljamo umetno inteligenco.

Koraki podatkovne linije

Podatkovna linija običajno poteka skozi te postaje:

  1. Zbiranje (zaužitje): črpanje podatkov iz virov (zbirka podatkov, API, dnevniške datoteke, tokovi dogodkov).
  2. Validacija: Preverjanje, ali so podatki skladni s pričakovano shemo, vrstami in obsegi.
  3. Čiščenje: obravnava manjkajoče vrednosti, podvojene zapise, izstopajoče vrednosti in nedoslednosti.
  4. Transformacija: Pretvarjanje neobdelanih podatkov v atribute - kot je pretvorba kategorične spremenljivke v število, izdelava "dneva v tednu" iz datuma.
  5. Razdelitev: Ločevanje na sklope za usposabljanje, validacijo in testiranje.
  6. Versioning: Beleženje, kateri model je bil učen s katerimi podatki.

Umetna inteligenca prihrani čas z ustvarjanjem osnutkov in idej kode, zlasti v korakih 2, 3 in 4. Toda odločitve, kot so, kateri zapis zavreči, katero manjkajočo vrednost zapolniti in kako, pripadajo inženirju, ki pozna podatke; ker lahko nepravilno čiščenje vnese skrito pristranskost v model.

Preverjanje podatkov: zgodnja obramba črte

Najdražje napake se ne začnejo v proizvodnji, ampak tam, kjer je korak preverjanja preskočen. Preverjanje sheme samodejno preveri, ali je vsak dohodni paket podatkov v skladu s pričakovano strukturo. Ali je na primer stolpec s starostjo med 0–120, ali je polje za e-pošto prazno, ali se je število stolpcev spremenilo?

Nasvet: Preverjanje postavite na začetek vrstice. Prej ko so poškodovani podatki ujeti, ceneje jih je popraviti. Napaka v shemi, ulovljena v produkciji, je velikokrat dražja od napake, ulovljene v fazi usposabljanja.

Napišite validacijsko shemo s pandero (ali Great Expectations) za naslednjo podatkovno shemo. Stolpci in pravila:- user_id: celo število, ne more biti ničelno, edinstveno- age: celo število, ne more biti od 0-120- signup_date: datum, ne more biti v prihodnosti- država: kategorično, iz nabora {TR, DE, US, UK}- stanje: decimalno, ne more biti negativno Ustvari smiselno sporočilo o napaki za vsako kršitev pravila. Pokažite test s primerom prekinjene črte na koncu kode.

Čiščenje: človek je tisti, ki odloča

Manjkajoče vrednosti so realnost vsakega niza podatkov. Načini ravnanja:

  • Brisanje: Zavrženje vrstice/stolpca z zelo visoko stopnjo manjkajočih. Vendar obstaja nevarnost izgube informacij in pristranskosti.
  • Imputacija: imputacija s povprečjem, mediano, najpogostejšo vrednostjo ali napovedjo na podlagi modela.
  • Zastavica: Shranjevanje informacij o »manjkajočem« v ločenem stolpcu z zastavico - včasih je signal že sam manjkajoč.

Katera je pravilna, je odvisno od težave. V naboru medicinskih podatkov je treba podatke o "vrednosti krvi ni izmerjena" ohraniti, namesto izbrisati; Ker je tudi zdravnikova zavrnitev meritev signal. AI vam lahko ponudi možnosti in kodo; Vi izberete, kateri ustreza realnosti področja.

Šibek poziv/močan poziv

Šibek poziv: "Izpolnite manjkajoče vrednosti."

Močan poziv: »V naslednjih stolpcih so manjkajoče vrednosti: dohodek (manjka 12 %, nagnjena porazdelitev v desno), last_login (manjka 30 %). Predlagajte, da dohodek izpolnite z mediano, vendar razložite, zakaj mediana in ne povprečje. Za last_login domnevajte, da je manjkajoča vrednost morda pomembna (uporabnik se morda ni nikoli prijavil); razmislite o ustvarjanju zastavice never_logged_in namesto brisanja. Zapišite pristranskost, ki bi jo lahko uporabil kateri koli pristop. dodajte modelu."

Razlika: močan poziv daje informacije o distribuciji in pomen področja; umetna inteligenca proizvaja podporo pri odločanju namesto mehanskega polnjenja.

Označevanje: kakovost se meri

Pri nadzorovanem učenju (učenje, pri katerem so podani primeri s pravilnimi odgovori) se model nauči oznak (oznake: pravilni odgovor za vsak primer). Kakovost oznak določa zgornjo mejo – če ljudje označujejo nedosledno, se model uči nedosledno.

Dogovor med označevalci meri stopnjo, s katero različni ljudje istemu vzorcu dodelijo isto oznako; Izražen je s koeficientom, kot je Cohen's Kappa. Nizka skladnost pomeni, da je naloga nejasna ali pa je navodilo šibko.

Umetna inteligenca pomaga pri označevanju na dva načina: (1) priprava smernice za opombo, (2) predhodno označevanje in človek le to popravi. Toda predhodno označevanje z LLM ima past: sistematična napaka modela lahko uhaja v celoten nabor etiket. Zato ljudje vedno preverijo nekatere oznake LLM.

Pozor: Oznak, ki jih je izdelal LLM, ne obravnavajte kot "osnovno resnico". Preverite vzorec s človekom in izmerite ustreznost LLM-človeku. Če je skladnost nizka, bo predhodno označevanje povzročilo več škode kot koristi.

Podatkovna particija: preprečite uhajanje

Najnevarnejša napaka pri delitvi podatkov na usposabljanje/validacijo/testiranje je uhajanje podatkov: mešanje testnih informacij v usposabljanje. Primeri:

  • Zapisi istega uporabnika spadajo tako v usposabljanje kot v testiranje (group leak).
  • Uporaba prihodnosti pri usposabljanju in preteklosti pri testiranju v časovnih serijah (temporalno uhajanje).
  • Izračun parametrov skaliranja (normalizacije) iz vseh podatkov in nato delitev.

Časovna razcepitev je bistvenega pomena za težave, ki vključujejo čas: trenirajte s preteklostjo, preizkusite v prihodnosti. Naključna delitev daje "prihodnjo" korist, ki se nikoli ne bo zgodila v proizvodnji, in napihne meritve.

Verzija podatkov in ponovljivost

"S katerimi podatki smo trenirali ta model?" Biti sposoben odgovoriti na vprašanje mesece pozneje je značilnost resnega inženiringa ML. Različice podatkov shranijo vsak posnetek podatkov z ID-jem (zgoščeno vrednostjo ali oznako različice). Orodja, kot je DVC (Data Version Control), podatki o različici, kot je koda.

Za reprodukcijo rezultata modela je treba popraviti tri stvari: različico podatkov, različico kode in naključno seme. Brez te trojice ni mogoče reči "dobil sem enak rezultat". Ponovljivost bomo poglobili v enoti 11; vendar se popravljanje semena v podatkovnem cevovodu začne od tukaj.

trije mini kovčki

1. primer – shranjena validacija sheme dneva. Ko je skupina pretvorila polje cene navzgor v sistemu iz penijev v lire, so vse cene padle 100-krat. Preverjanje sheme je serijo zavrnilo kot "cena izven obsega" in model ni bil usposobljen s poškodovanimi podatki. Brez preverjanja bi napako opazili le v proizvodnji z napačnimi napovedmi.

Primer 2 - Pristranskost zaradi nepravilnega polnjenja. V kreditnem modelu so bile manjkajoče vrednosti dohodka zapolnjene s povprečjem. Toda manjkajoči dohodki so bili večinoma v skupini z nizkimi dohodki; povprečenje je to skupino umetno »obogatilo«, model pa jim je ponudil nepravično visoko mejo. Odpravljena težava z mediano + zastavico manjkanja.

Primer 3 - Začasno uhajanje. Model za napovedovanje povpraševanja je bil na testnem nizu videti odličen (95-odstotna natančnost), vendar se je v proizvodnji zrušil. Zakaj: zaradi naključnega cepljenja je model videl prihodnost. S prehodom na časovno združevanje je natančnost preskusa padla na 78 % — vendar je bila to resnična zmogljivost in je ostala v proizvodnji.

Kopirane predloge

Naslednji nabor podatkov razdelite na tri sklope: usposabljanje/validacija/testiranje. Omejitev: To je časovna vrsta; Uporabite TEMPORAL delitev (trenirajte v preteklosti, preizkusite v prihodnosti). Preprečite uhajanje serije: imejte isti `customer_id` samo v eni gruči. Izračunajte parametre skaliranja SAMO iz nabora za usposabljanje, nato pa uporabite za vse. Natisnite, koliko vrstic je še ostalo v kodi na vsakem koraku, in dodajte trditev, ki preveri, ali ne pušča.

Napišite osnutek navodil za opombe za to nalogo označevanja. Naloga: [npr. Označite oceno stranke pozitivno/negativno/nevtralno] Pojasnite mejne primere: sarkazem, mešana čustva, kako označiti oceno, ki ni povezana z izdelkom? Navedite 5 primerov in 3 težke robne primere, ki bodo povečali doslednost med označevalci.

Izdelajte kontrolni seznam ponovljivosti za ta podatkovni cevovod: - Kako naj se popravi različica podatkov? - Katera semena naključnosti je treba kje nastaviti? - Katere metapodatke (razpršitev podatkov, število vrstic, datum) je treba zabeležiti? Moja zbirka kod: [jezik/knjižnica]

Preverite to kodo za čiščenje glede uhajanja podatkov. Posebej poglejte to: ali so parametri skaliranja/kodiranja izračunani PRED delitvijo? Ali je kakšna statistika izračunana iz vseh podatkov ali samo usposabljanja? Koda: [koda]

Tabela odločitev: strategija manjkajoče vrednosti

Stanje

Priporočen pristop

zakaj

Numerična, poševna porazdelitev

zapolni z mediano

Na povprečje vplivajo odstopanja

Numerično, simetrično

napolnite s povprečjem

Varuje podatke

Pomanjkanje je lahko znatno

Stolpec z zastavico + polnilo

Pomanjkanje je signal

Manjkajoča stopnja > 60 %

Oceni/zavrzi stolpec

Hrupa je preveč

Kategoričen

Kategorija "Neznano".

Ne ustvarja umetne večine

Pogoste napake

  • Preskok preverjanja. Brez nadzora sheme se poškodovani podatki tiho prikradejo.
  • Skaliranje pred delitvijo. V izobraževanje uhaja statistika testov.
  • Uporaba naključne delitve v časovni vrsti. Proizvaja lažne visoke meritve.
  • Slepo zaupanje oznakam LLM. Sistematična napaka se širi po vseh podatkih.
  • Podatkovna različica se ne shranjuje. Rezultata ne morete reproducirati.
  • Mehansko polnjenje s povprečjem. Zanemarja pomen polja, dodaja pristranskost.

Če povzamem

Podatkovni cevovod je temelj sistema ML in si zasluži več truda kot model. Postavite preverjanje na vrh; sprejemati odločitve o čiščenju in označevanju z znanjem področja; preprečiti uhajanje (skupinsko in časovno) v predelku; popravi podatkovno različico in seme. AI generira kodo in ideje na tej liniji, vendar je na vas, da se odločite, katere podatke boste obdelali in kako — ker vsaka napačna odločitev tukaj preide v model kot skrita napaka.

Aplikacijska naloga

Na svoj nabor podatkov napišite shemo preverjanja (pandera/Great Expectations) in namerno dodajte slabo vrstico ter pokažite, da se je ujela. Nato razdelite podatke začasno ali paketno, izračunajte parametre skaliranja samo iz usposabljanja in preverite, da ni uhajanja s potrditvijo. Zapišite različico podatkov in število vrstic v datoteko z metapodatki.

kontrolni seznam

  • [ ] Preverjanje sheme poteka na vrhu vrstice.
  • [ ] Strategijo manjkajoče vrednosti sem izbral na podlagi pomena polja, nisem ga mehanično izpolnil.
  • [ ] Izmeril sem kakovost etiket (skladnost); Človeško sem preveril oznake LLM.
  • [ ] Preprečil sem skupinsko in časovno uhajanje v podoknu.
  • [ ] Stopnja/kodiranje, izračunana samo iz učnega nabora.
  • [ ] Različica podatkov, število vrstic in zabeleženo seme.