Jedinica 2 / 11

Cjevovod podataka: prikupljanje, čišćenje, označavanje i određivanje verzija

Dobici:

  • Sposobnost postavljanja cjevovoda podataka (prikupljanje, provjera valjanosti, čišćenje, transformacija, dijeljenje, verzija) i postavljanje provjere valjanosti sheme na početak cjevovoda
  • Sposobnost donošenja odluka o nedostajućim vrijednostima i označavanju na temelju značenja polja i podjele kako bi se spriječilo curenje podataka (grupno i vremensko)
  • Sposobnost stvaranja baze podataka koja se može reproducirati popravljanjem verzije podataka i sjemena slučajnosti

Prava snaga svakog sustava strojnog učenja leži u podacima, a ne u modelu. Iskusni inženjeri znaju: "smeće unutra, smeće van" — čak i najnapredniji model s lošim podacima proizvest će loše rezultate. U ovoj jedinici uspostavljamo podatkovni cjevovod (podatkovni cjevovod: lanac koraka koji čine neobrađene podatke spremnima za modeliranje) od kraja do kraja i učimo na kojem koraku ovog niza možemo sigurno koristiti umjetnu inteligenciju.

Koraci podatkovne linije

Podatkovna linija obično prolazi kroz ove stanice:

  1. Prikupljanje (unošenje): Povlačenje podataka iz izvora (baza podataka, API, datoteke dnevnika, tokovi događaja).
  2. Validacija: Provjera jesu li podaci u skladu s očekivanom shemom, vrstama i rasponima.
  3. Čišćenje: rukovanje nedostajućim vrijednostima, duplim zapisima, ekstremima i nedosljednostima.
  4. Transformacija: Pretvaranje neobrađenih podataka u atribute — kao što je pretvaranje kategoričke varijable u broj, stvaranje "dana u tjednu" iz datuma.
  5. Razdvajanje: Odvajanje na skupove za obuku, validaciju i testiranje.
  6. Versioniranje: Bilježenje modela koji je treniran s kojim podacima.

Umjetna inteligencija štedi vrijeme generiranjem nacrta koda i ideja, posebno u koracima 2, 3 i 4. Ali odluke poput toga koji zapis odbaciti, koju nedostajuću vrijednost ispuniti i kako, pripadaju inženjeru koji poznaje podatke; jer nepravilno čišćenje može unijeti skrivenu pristranost u model.

Provjera podataka: rana obrana linije

Najskuplje pogreške ne počinju u proizvodnji, već tamo gdje se preskoči korak provjere. Provjera valjanosti sheme automatski provjerava je li svaka dolazna serija podataka u skladu s očekivanom strukturom. Na primjer, je li stupac dobi između 0-120, je li polje e-pošte prazno, je li se broj stupaca promijenio?

Savjet: Stavite potvrdu na početak retka. Što se prije pokvareni podaci uhvate, to je jeftinije popraviti ih. Pogreška u shemi uhvaćena u proizvodnji višestruko je skuplja od one uhvaćene u fazi obuke.

Napišite shemu provjere valjanosti s panderom (ili Great Expectations) za sljedeću shemu podataka. Stupci i pravila:- user_id: cijeli broj, ne može biti nula, jedinstven- age: cijeli broj, ne može biti od 0-120- signup_date: datum, ne može biti u budućnosti- država: kategorički, iz skupa {TR, DE, US, UK}- stanje: decimalno, ne može biti negativno Proizvodi smislenu poruku o pogrešci za svako kršenje pravila. Prikažite test s primjerom isprekidane linije na kraju koda.

Čišćenje: čovjek je taj koji odlučuje

Vrijednosti koje nedostaju stvarnost su svakog skupa podataka. Načini rukovanja:

  • Brisanje: Odbacivanje retka/stupca s vrlo visokom stopom propuštanja. Ali postoji rizik od gubitka informacija i pristranosti.
  • Imputacija: Imputacija sa srednjom, medijanom, najčešćom vrijednošću ili predviđanjem na temelju modela.
  • Zastavica: Pohranjivanje informacija "nedostaje" u zasebnom stupcu zastavice - ponekad je sam nedostatak signal.

Koji je ispravan ovisi o problemu. U skupu medicinskih podataka informacije o "vrijednosti krvi nisu izmjerene" trebaju se sačuvati, a ne brisati; Jer čak je i odbijanje liječnika da izvrši mjerenje signal. AI vam može dati opcije i kod; Vi birate koji odgovara stvarnosti polja.

Slab upit / Jak upit

Slab upit: "Ispunite vrijednosti koje nedostaju."

Snažan upit: "Nedostaju vrijednosti u sljedećim stupcima: prihod (nedostaje 12%, distribucija nagnuta udesno), last_login (nedostaje 30%). Predložite da prihod popunite medijanom, ali objasnite zašto medijan, a ne srednjim. Za last_login pretpostavite da bi vrijednost koja nedostaje mogla biti značajna (korisnik se možda nikada nije prijavio); razmislite o generiranju zastavice never_logged_in umjesto brisanja. Zapišite pristranost bilo koji pristup dodati modelu."

Razlika: snažan prompt daje informacije o distribuciji i značenje područja; umjetna inteligencija proizvodi podršku odlučivanju umjesto mehaničkog punjenja.

Označavanje: kvaliteta se mjeri

U nadziranom učenju (učenje u kojem se daju primjeri s točnim odgovorima), ono što model uči su oznake (oznake: točan odgovor za svaki primjer). Kvaliteta oznake postavlja gornju granicu — ako ljudi označavaju nedosljedno, model uči nedosljedno.

Sporazum između anotatora mjeri stopu kojom različiti ljudi daju istu oznaku istom uzorku; Izražava se koeficijentom kao što je Cohen's Kappa. Niska usklađenost znači da je zadatak nejasan ili je uputa slaba.

Umjetna inteligencija pomaže u označavanju na dva načina: (1) izrada smjernice za označavanje, (2) prethodno označavanje i davanje čovjeku da to samo ispravi. Ali prethodno označavanje s LLM-om ima zamku: sustavna pogreška modela može procuriti u cijeli skup oznaka. Zato ljudi uvijek provjeravaju neke od oznaka LLM-a.

Pažnja: Nemojte smatrati oznake koje je izradio LLM "osnovnom istinom". Provjerite uzorak s čovjekom i izmjerite LLM-human fit. Ako je usklađenost niska, prethodno označavanje će učiniti više štete nego koristi.

Particija podataka: spriječiti curenje

Najopasnija pogreška pri dijeljenju podataka na obuku/validaciju/testiranje je curenje podataka: miješanje testnih informacija u obuku. Primjeri:

  • Zapisi istog korisnika spadaju i u obuku i u testiranje (curenje grupe).
  • Korištenje budućnosti u obuci i prošlosti u testiranju u vremenskim serijama (temporalno curenje).
  • Izračunavanje parametara skaliranja (normalizacije) iz svih podataka i potom dijeljenje.

Vremensko razdvajanje bitno je za probleme koji uključuju vrijeme: trenirajte s prošlošću, testirajte u budućnosti. Nasumično dijeljenje daje "buduću" korist koja se nikada neće dogoditi u proizvodnji i povećava metriku.

Verzija podataka i ponovljivost

"S kojim podacima smo trenirali ovaj model?" Biti u mogućnosti odgovoriti na pitanje mjesecima kasnije zaštitni je znak ozbiljnog ML inženjerstva. Verzija podataka pohranjuje svaku snimku podataka s ID-om (hash ili oznaka verzije). Alati kao što je DVC (Data Version Control) verzija podataka poput koda.

Da bi se reproducirao rezultat modela, moraju se popraviti tri stvari: verzija podataka, verzija koda i nasumično početno mjesto. Nije moguće reći "dobio sam isti rezultat" bez ove trojke. Produbit ćemo ponovljivost u jedinici 11; ali popravljanje sjemena u cjevovodu podataka počinje odavde.

tri mini kućišta

Slučaj 1 - Spremljena provjera valjanosti sheme dana. Kad je tim pretvorio polje cijena uzlaznog sustava iz penija u lire, sve su cijene pale 100 puta. Provjera valjanosti sheme odbacila je seriju kao "cijenu izvan raspona", a model nije bio obučen s oštećenim podacima. Bez provjere, pogreška bi se primijetila samo u proizvodnji, s netočnim predviđanjima.

Slučaj 2 - Pristranost netočnog punjenja. U kreditnom modelu nedostajuće vrijednosti prihoda popunjene su srednjom. Ali nedostajući prihodi uglavnom su bili u skupini s niskim prihodima; uprosječenje je umjetno "obogatilo" ovu skupinu, a model im je ponudio nepravedno visoku granicu. Riješen je problem s medijanom + zastavom nedostatka.

Slučaj 3 - Vremensko curenje. Model predviđanja potražnje izgledao je sjajno na testnom skupu (95% točnosti), ali se srušio u proizvodnji. Zašto: zbog nasumičnog dijeljenja, model je vidio budućnost. Prebacivanje na vremensko združivanje smanjilo je točnost testa na 78% — ali to je bila stvarna izvedba i zadržala ga je u proizvodnji.

Predlošci koji se mogu kopirati

Podijelite sljedeći skup podataka u tri skupa: obuka/provjera valjanosti/testiranje. Ograničenje: ovo je vremenska serija; Koristite VREMENSKO razdvajanje (trenirajte u prošlosti, testirajte u budućnosti). Spriječite curenje serije: imajte isti `customer_id` samo u jednom klasteru. Izračunajte parametre skaliranja SAMO iz skupa za vježbanje, a zatim ih primijenite na sve. Ispišite koliko je redaka preostalo u kodu u svakom koraku i dodajte tvrdnju koja provjerava da nema curenja.

Napišite nacrt smjernica za označavanje za ovaj zadatak označavanja. Zadatak: [npr. Označite korisničku recenziju pozitivno/negativno/neutralno]Razjasnite granične slučajeve: sarkazam, miješane emocije, kako označiti recenziju koja nije povezana s proizvodom? Navedite 5 primjera i 3 teška rubna slučaja koji će povećati dosljednost među označivačima.

Napravite popis za provjeru ponovljivosti za ovaj cjevovod podataka: - Kako treba popraviti verziju podataka? - Koje početne vrijednosti nasumičnosti gdje treba postaviti? - Koje metapodatke (raspršivanje podataka, broj redaka, datum) treba zabilježiti? Moja baza kodova: [jezik/biblioteka]

Provjerite curenje podataka u ovom kodu za čišćenje. Konkretno pogledajte ovo: izračunavaju li se parametri skaliranja/kodiranja PRIJE dijeljenja? Izračunavaju li se statistike iz svih podataka ili samo treninga? Šifra: [šifra]

Tablica odluka: nedostaje strategija vrijednosti

Status

Preporučeni pristup

zašto

Numerička, iskrivljena distribucija

ispuniti medijanom

Na prosjek utječu ekstremi

Numerički, simetrični

napuniti prosjekom

Štiti informacije

Nedostatak može biti značajan

Označite stupac + ispuna

Nedostatak je signal

Nedostajuća stopa > 60%

Procijeni/odbaci stupac

Buka je previše

Kategoričan

Kategorija "Nepoznato".

Ne stvara umjetnu većinu

Uobičajene greške

  • Preskakanje provjere. Bez kontrole sheme, oštećeni podaci se tiho ušuljaju.
  • Skaliranje prije cijepanja. Propušta statistiku ispita u obrazovanje.
  • Korištenje slučajnog dijeljenja u vremenskim serijama. Proizvodi lažne visoke metrike.
  • Slijepo vjerujući LLM oznakama. Sustavna pogreška širi se kroz podatke.
  • Ne sprema podatkovnu verziju. Ne možete reproducirati rezultat.
  • Mehaničko punjenje s prosjekom. Zanemaruje značenje polja, dodaje pristranost.

Ukratko

Cjevovod podataka temelj je ML sustava i zaslužuje više truda od modela. Stavite potvrdu na vrh; donositi odluke o čišćenju i označavanju sa znanjem domene; spriječiti curenje (skupno i vremensko) u odjeljku; popravite verziju podataka i seed. AI generira kod i ideje na ovoj liniji, ali na vama je da odlučite koje ćete podatke obraditi i kako — jer svaka pogrešna odluka ovdje prelazi u model kao skriveni nedostatak.

Zadatak aplikacije

Napišite shemu provjere valjanosti (pandera/Great Expectations) na vlastitom skupu podataka i namjerno dodajte loš red i pokažite da je uhvaćen. Zatim podijelite podatke privremeno ili grupno, izračunajte parametre skaliranja samo iz obuke i potvrdite da nema curenja pomoću tvrdnje. Zapišite verziju podataka i broj redaka u datoteku metapodataka.

popis za provjeru

  • [ ] Provjera valjanosti sheme izvodi se na vrhu retka.
  • [ ] Odabrao sam strategiju nedostajuće vrijednosti na temelju značenja polja, nisam ga mehanički ispunjavao.
  • [ ] Mjerio sam kvalitetu etikete (sukladnost); LLM oznake sam provjerio ljudski.
  • [ ] Spriječio sam grupno i vremensko curenje u oknu.
  • [ ] Skaliranje/kodiranje izračunato samo iz skupa za obuku.
  • [ ] Verzija podataka, broj redaka i zabilježeno sjeme.