Yksikkö 2 / 11

Tietoputki: kerääminen, puhdistus, merkitseminen ja versiointi

Voitot:

  • Kyky perustaa dataliukuhihna (keräys, validointi, puhdistus, muuntaminen, jakaminen, versiointi) ja skeeman validoinnin sijoittaminen liukuhihnan alkuun
  • Kyky tehdä puuttuvia arvoja ja merkintöjä koskevia päätöksiä kentän merkityksen ja jaon perusteella tietojen vuotamisen estämiseksi (ryhmä ja ajallinen)
  • Kyky luoda toistettava tietokanta korjaamalla tietoversio ja satunnaisuussiemen

Jokaisen koneoppimisjärjestelmän todellinen voima piilee tiedoissa, ei mallissa. Kokeneet insinöörit tietävät: "roskat sisään, roskat ulos" - jopa edistynein malli, johon syötetään huonoja tietoja, tuottaa huonoja tuloksia. Tässä yksikössä perustamme dataputken (data pipeline: vaiheketju, joka valmistaa raakadatan mallikoulutukseen) päästä päähän ja opimme, missä tämän linjan vaiheessa voimme turvallisesti käyttää tekoälyä.

Datalinjan vaiheet

Datalinja kulkee tyypillisesti näiden pysähdysten läpi:

  1. Keräys (keräys): Tietojen hakeminen lähteistä (tietokanta, API, lokitiedostot, tapahtumavirrat).
  2. Validointi: Tarkistaa, ovatko tiedot odotetun skeeman, tyyppien ja vaihteluvälien mukaisia.
  3. Puhdistus: Puuttuvien arvojen, päällekkäisten tietueiden, poikkeamien ja epäjohdonmukaisuuksien käsittely.
  4. Muunnos: Raakatietojen muuttaminen attribuutteiksi, kuten kategorisen muuttujan muuntaminen luvuksi, "viikonpäivän" tuottaminen päivämäärästä.
  5. Jakaminen: Jakaminen koulutus-, validointi- ja testaussarjoihin.
  6. Versiointi: Kirjaa, mikä malli on koulutettu millä tiedoilla.

Tekoäly säästää aikaa luomalla koodiluonnoksia ja ideoita, erityisesti vaiheissa 2, 3 ja 4. Mutta päätökset, kuten mikä tietue hylätään, mikä puuttuva arvo täytetään ja miten, kuuluvat tiedot tuntevalle insinöörille. koska väärä puhdistus voi aiheuttaa piilotettuja vääristymiä malliin.

Tietojen todentaminen: linjan varhainen puolustaminen

Kalleimmat virheet eivät ala tuotannossa, vaan siitä, että varmennusvaihe ohitetaan. Kaavan validointi tarkistaa automaattisesti, onko jokainen saapuva tietoerä odotetun rakenteen mukainen. Onko esimerkiksi ikäsarake välillä 0-120, onko sähköpostikenttä tyhjä, onko sarakkeiden määrä muuttunut?

Vinkki: Aseta vahvistus rivin alkuun. Mitä nopeammin korruptoituneet tiedot saadaan kiinni, sitä halvempaa se on korjata. Tuotannossa havaittu skeemavirhe on monta kertaa kalliimpi kuin koulutusvaiheessa havaittu.

Kirjoita vahvistusmalli panderalla (tai Great Expectations) seuraavalle dataskeemalle. Sarakkeet ja säännöt:- user_id: kokonaisluku, ei voi olla tyhjä, yksilöivä- ikä: kokonaisluku, ei saa olla välillä 0-120- signup_date: päivämäärä, ei saa olla tulevaisuudessa- maa: kategorinen, joukosta {TR, DE, US, UK} - saldo: desimaali, ei voi olla negatiivinen. Luo merkityksellinen virheilmoitus jokaiselle sääntörikkomukselle. Näytä testi esimerkkikatkoviivalla koodin lopussa.

Siivous: ihminen päättää

Puuttuvat arvot ovat todellisuutta jokaisessa tietojoukossa. Käsittelytavat:

  • Poisto: hylätään rivi/sarake, jonka puuttumisprosentti on erittäin korkea. Mutta on olemassa tiedon menettämisen ja vääristymisen riski.
  • Imputaatio: Imputaatio keskiarvolla, mediaanilla, yleisimmällä arvolla tai mallipohjaisella ennusteella.
  • Lippu: "Puuttuvien" tietojen tallentaminen erilliseen lippusarakkeeseen – joskus itse puuttuminen on signaali.

Kumpi on oikea, riippuu ongelmasta. Lääketieteellisissä tiedoissa "veriarvoa ei mitattu" -tiedot tulisi säilyttää eikä poistaa; Koska jopa lääkärin kieltäytyminen mittauksista on signaali. AI voi antaa sinulle vaihtoehtoja ja koodia; Voit valita, mikä sopii alan todellisuuteen.

Heikko kehote / Vahva kehote

Heikko kehote: "Täytä puuttuvat arvot."

Vahva kehote: "Seuraavista sarakkeista puuttuu arvoja: tulot (12 % puuttuu, oikea jakauma), last_login (30 % puuttuu). Ehdota tulojen täyttämistä mediaanilla, mutta selitä miksi mediaani eikä keskiarvo. Oletetaan, että last_loginin puuttuva arvo voi olla merkittävä (käyttäjä ei ehkä ole koskaan kirjautunut sisään); harkitse never_logged_in-lipun luomista.

Ero: vahva kehote antaa jakelutiedon ja alueen merkityksen; tekoäly tuottaa päätöstukea mekaanisen täytön sijaan.

Merkintä: laatua mitataan

Ohjatussa oppimisessa (oppiminen, jossa esimerkit annetaan oikeilla vastauksilla) malli oppii tarroja (etiketit: oikea vastaus jokaiselle esimerkille). Tarran laatu asettaa katon – jos ihmiset merkitsevät epäjohdonmukaisesti, malli oppii epäjohdonmukaisesti.

Annotaattorien välinen sopimus mittaa nopeutta, jolla eri ihmiset antavat saman tunnisteen samalle näytteelle; Se ilmaistaan ​​kertoimella, kuten Cohenin Kappa. Matala noudattaminen tarkoittaa, että tehtävä on epäselvä tai ohje on heikko.

Tekoäly auttaa merkitsemisessä kahdella tavalla: (1) merkintäohjeen laatiminen, (2) esimerkintä ja ihmisen vain korjaaminen. Mutta esimerkinnässä LLM:llä on sudenkuoppa: mallin systemaattinen virhe voi vuotaa koko tarrasarjaan. Siksi ihmiset tarkistavat aina joitain LLM-tarroja.

Huomio: Älä pidä LLM:n tuottamia tarroja "pohjatotuutena". Tarkista näyte ihmisellä ja mittaa LLM-ihmissovitus. Jos vaatimustenmukaisuus on alhainen, esimerkinnästä on enemmän haittaa kuin hyötyä.

Tietoosio: estä vuodot

Vaarallisin virhe jaettaessa dataa koulutukseen/validointiin/testaukseen on datavuoto: testitietojen sekoittaminen koulutukseen. Esimerkkejä:

  • Saman käyttäjän tietueet kuuluvat sekä koulutukseen että testaukseen (ryhmävuoto).
  • Tulevaisuuden hyödyntäminen koulutuksessa ja menneisyyden käyttäminen testauksessa aikasarjoissa (temporaalinen vuoto).
  • Skaalausparametrien (normalisointi) laskeminen kaikista tiedoista ja sitten jakaminen.

Ajallinen jakautuminen on välttämätöntä aikaan liittyvissä ongelmissa: harjoittele menneisyydessä, testaa tulevaisuutta. Satunnainen jakaminen antaa "tulevaisuuden" hyödyn, jota ei koskaan tapahdu tuotannossa ja lisää mittareita.

Tietojen versiointi ja toistettavuus

"Millä tiedoilla harjoittelimme tätä mallia?" Mahdollisuus vastata kysymykseen kuukausia myöhemmin on vakavan ML-tekniikan tunnusmerkki. Tietojen versiointi tallentaa jokaisen datavedoksen tunnuksella (hash tai version tag). Työkalut, kuten DVC (Data Version Control) -versiotiedot, kuten koodi.

Mallin tuloksen toistamiseksi on korjattava kolme asiaa: dataversio, koodiversio ja satunnainen siemen. Ei ole mahdollista sanoa "Sain saman tuloksen" ilman tätä kolmikkoa. Syvennämme uusittavuutta yksikössä 11; mutta siemenen korjaaminen dataliukuhihnassa alkaa tästä.

kolme minilaukkua

Tapaus 1 - Päiväskeeman vahvistus tallennettu. Kun tiimi muutti alkupään järjestelmän hintakentän penneistä liiroiksi, kaikki hinnat putosivat 100 kertaa. Kaaman validointi hylkäsi erän "hinta-alueen ulkopuolella", eikä mallia ole koulutettu vioittuneilla tiedoilla. Ilman todentamista virhe huomattaisiin vain tuotannossa, väärillä ennusteilla.

Tapaus 2 - Väärän täytön harha. Luottomallissa puuttuvat tuloarvot täytettiin keskiarvolla. Mutta puuttuvat tulot olivat pääasiassa pienituloisten; keskiarvo "rikasti" tätä ryhmää keinotekoisesti, ja malli tarjosi heille kohtuuttoman korkean rajan. Korjattu mediaani + puuttumislipun ongelma.

Tapaus 3 - Tilapäinen vuoto. Kysynnän ennustemalli näytti hyvältä testisarjassa (95 % tarkkuus), mutta kaatui tuotannossa. Miksi: satunnaisen jakamisen vuoksi malli oli nähnyt tulevaisuuden. Siirtyminen ajalliseen binningiin laski testitarkkuuden 78 prosenttiin – mutta se oli todellista suorituskykyä ja piti sen tuotannossa.

Kopioitavat mallit

Jaa seuraava tietojoukko kolmeen joukkoon: koulutus/validointi/testaus. Rajoitus: Tämä on aikasarja; Käytä TEMPORAL-jakoa (harjoittele menneisyydessä, testaa tulevaisuudessa). Estä erävuoto: käytä samaa asiakastunnusta vain yhdessä klusterissa. Laske skaalausparametrit VAIN harjoitusjoukosta ja käytä sitten kaikkia. Tulosta, kuinka monta riviä koodissa on jäljellä kussakin vaiheessa, ja lisää vahvistus, joka tarkistaa, ettei vuotoja ole.

Kirjoita tähän merkintätehtävään merkintäohjeen luonnos. Tehtävä: [esim. Merkitse asiakasarvostelu positiiviseksi/negatiiviseksi/neutraaliksi] Selvennä rajatapauksia: sarkasmia, ristiriitaisia ​​tunteita, kuinka merkitä arvostelu, joka ei liity tuotteeseen? Anna 5 esimerkkiä ja 3 vaikeaa reunatapausta, jotka lisäävät tunnisteiden johdonmukaisuutta.

Tuota toistettavuuden tarkistuslista tälle dataputkelle:- Miten dataversio tulisi korjata?- Mitkä satunnaisuuden siemenet tulee asettaa mihin?- Mitä metatietoja (tiedon hajautus, rivimäärä, päivämäärä) tulee kirjata? Oma koodikantani: [kieli/kirjasto]

Tarkista tämä puhdistuskoodi tietovuotojen varalta. Katso erityisesti tätä: lasketaanko skaalaus-/koodausparametrit ENNEN jakamista? Lasketaanko tilastot kaikista tiedoista vai vain harjoittelusta? Koodi: [koodi]

Päätöstaulukko: puuttuva arvostrategia

Tila

Suositeltava lähestymistapa

Miksi?

Numeerinen, vino jakauma

täytä mediaanilla

Keskiarvoon vaikuttavat poikkeamat

Numeerinen, symmetrinen

täyttää keskiarvolla

Suojaa tietoa

Puute voi olla merkittävä

Merkitse sarake + täyttö

Puute on signaali

Puuttuva korko > 60 %

Arvioi/hylkää sarake

Melu on liikaa

Kategorinen

"Tuntematon" luokka

Ei luo keinotekoista enemmistöä

Yleisiä virheitä

  • Vahvistuksen ohittaminen. Ilman skeeman hallintaa vioittuneet tiedot livahtaa sisään hiljaa.
  • Skaalaus ennen jakamista. Se vuotaa testitilastoja koulutukseen.
  • Satunnaisen jakamisen käyttö aikasarjoissa. Se tuottaa vääriä korkeita mittareita.
  • Sokeasti luotettu LLM-tarroihin. Systemaattinen virhe leviää koko dataan.
  • Tietoversiota ei tallenneta. Tulosta ei voi toistaa.
  • Mekaaninen täyttö keskiarvolla. Se jättää huomiotta kentän merkityksen, lisää harhaa.

Yhteenvetona

Dataputki on ML-järjestelmän perusta ja ansaitsee enemmän vaivaa kuin malli. Aseta vahvistus yläreunaan; tehdä puhdistus- ja merkintäpäätöksiä alan tuntemuksella; estää vuodot (ryhmä ja ajallinen) osastossa; korjaa dataversio ja siemen. Tekoäly luo koodia ja ideoita tällä rivillä, mutta sinun on päätettävä, mitä tietoja käsitellään ja miten - koska jokainen väärä päätös tässä siirtyy malliin piilotettuna virheenä.

Sovellustehtävä

Kirjoita validointimalli (pandera/Great Expectations) omalle tietojoukollesi ja lisää tarkoituksella huono rivi ja näytä, että se jäi kiinni. Jaa sitten tiedot ajallisesti tai eräittain, laske skaalausparametrit vain harjoittelusta ja varmista, ettei vuotoja ole. Kirjoita dataversio ja rivimäärä metatietotiedostoon.

tarkistuslista

  • [ ] Kaavion tarkistus suoritetaan rivin yläosassa.
  • [ ] Valitsin puuttuvan arvon strategian kentän merkityksen perusteella, en täyttänyt sitä mekaanisesti.
  • [ ] Mittasin etiketin laadun (vaatimustenmukaisuus); Tarkastin LLM-tunnisteet.
  • [ ] Estin ryhmä- ja ajallisen vuodon ruudussa.
  • [ ] Skaalaus/koodaus laskettu vain harjoitussarjasta.
  • [ ] Tietoversio, rivien määrä ja siemen kirjattu.