Üksus 3 / 11

Andmete puhastamine ja eeltöötlus: puudub väärtus, kõrvalekalle ja tüübi teisendus

Kasu:

  • Oskus eristada puuduvate väärtuste põhjust (juhuslik, süstemaatiline, tähenduslik) ja valida sobiv strateegia ning arvutada täiteväärtus ainult treeningu põhjal
  • Võimalus uurida kõrvalekaldeid enne nende kustutamist ja teha vahet andmevea ja tõeliselt haruldase sündmuse vahel
  • Võimalus vältida vaikset kadu, jälgides iga sammu mõju ridade/tühjade arvule, tuues samal ajal tüübi ja vormingu vastuolud standardiga

Ligikaudu 60–80 protsenti andmeteadlase ajast kulub puhastamisele; Tööstuses nimetatakse seda naljaga pooleks "data wranglingiks" (data wrangling või andmete puhastamine). Kuna tegelikud andmed ei ole peaaegu kunagi analüüsimiseks valmis: kuupäevad on segavormingus, numbrid salvestatakse tekstina, mõned lahtrid on tühjad, klient ilmub kolm korda samasse tabelisse kahe erineva kirjapildiga. Selles üksuses käsitleme kolme puhastamise põhiaspekti: puuduvad väärtused, kõrvalekalded ja tüübi/vormingu teisendamine. Tehisintellekt on selles töös erakordselt kiire abiline; Kuid teie otsustate, mida ja kuidas puhastada, sest iga puhastusvalik muudab analüüsi.

Koristamise kuldreegel: iga muudatus on otsus

Lahtri kustutamine, puuduva väärtuse täitmine keskmisega, kõrvalekalde kärpimine – ükski neist ei ole "neutraalne" tehte. Igaüks neist muudab andmeid ja mõjutab tulemust. Nii et puhastamise kuldreegel: kirjutage iga muudatus koodi, märkige üles põhjendus, ärge kunagi kirjutage algandmeid üle. AI annab teile kiire puhastuskoodi, kuid teie kohustus on mõista, mida see kood teeb; Ärge käivitage seda ilma, et näete, kui palju ridu on kadunud, kui ütlete "kustuta tühjad read".

Ettevaatust. Ärge kunagi muutke algseid algandmeid. Kirjutage puhastatud versioon eraldi faili/tabelisse. Nii saate vea avastamisel naasta algusest peale ja säilitada reprodutseeritavuse.

Puuduvad väärtused: miks see tühi on, mida teha

Puuduv väärtus (tavaliselt kuvatakse pandades kui NaN - "mitte arv") on siis, kui lahter on tühi. Kuid lünga põhjus määrab lahenduse. On kolm tüüpilist olukorda. Juhuslik puudu: andur ei töötanud hetkeks; Võib-olla on mõistlik see täita. Süstemaatiline puudub: vormivälja küsitakse ainult teatud klientide puhul; Siin on lünk tegelikult teabes. Oluliselt puudu: kui "tagastamiskuupäev" on tühi, siis klient ei tagastanud; See tühik tähendab 0 või "puudub", seda ei täideta.

Peamised strateegiad:

strateegia

Millal see on asjakohane?

risk

Kustuta rida

Puudumiste määr on väga madal (<5%) ja juhuslik

Andmete ja esituse kadu

Kustutage veerg

Suurem osa veerust on tühi (>60%)

teabe kadu

Keskmine/mediaantäitmine

Numbriline, juhuslikult puudu

See vähendab dispersiooni ja moonutab jaotust

Kategooria "tundmatu"

Kategooriline, süstemaatiline puudu

Loob täiendavaid kategooriaid

Ennustamine mudeliga

Keeruline, hinnaline kolonn

Lekkeoht, keerukus

Kriitiline punkt: imputatsiooniväärtus tuleks arvutada ainult treeningandmete põhjal ja sama väärtust tuleks rakendada katseandmetele. Kui lisate katseandmete keskmise, loote lekke (üksus 10). Mediaani (järjekorraandmete keskmine väärtus) eelistatakse sageli keskmisele, kuna see on kõrvalekallete suhtes robustsem kui keskmine.

Kõrvalekalded: viga või tegelik?

Kõrvalväärtus võib olla üks kahest asjast: andmeviga (vanuse veerus 999) või reaalne, kuid haruldane sündmus (kliendi 2 miljoni dollari suurune tellimus). Nende kahe segi ajamine on katastroofiline: kustutage tõeline kõrvalekalle ja viskate olulise teabe minema; Kui lasete veast lahti, kannatavad teie keskmised. Seetõttu tuleb esmalt kõrvalekaldujat uurida, mitte seda automaatselt kustutada.

Levinud tuvastamismeetodid: IQR-meetod (kvartiilidevaheline vahemik; väärtusi, mis ületavad 1,5-kordset erinevust andmete 25% ja 75% kvintiilide vahel, loetakse kõrvalekalleteks) ja z-skoor (standardhälbete arv keskmisest väärtusest kõrvale; tavaliselt on kõrvalekalle, kui see on suurem kui 3). AI kirjutab nende arvutuste koodi sekunditega; Kuid enne kui ütlete "kustuta", kontrollige, millised need väärtused on.

Tüübi ja vormingu teisendamine: vaikne veaallikas

Üks enim peavalu valmistab andmetüüpide segadus. Kui veerg "summa" on salvestatud tekstina, ei saa te lisada; Programm loeb valesti türgi vormingus numbrit, näiteks "1250,50", mitte "tuhat kakssada viiskümmend". Kuupäevad ("01/03/2024" päev-kuu või kuu-päev?), kategooriad ("Mees"/"mees"/"M" on sama asi?) ja ühikud (TL või kuruş?) annavad vaikselt valesid tulemusi. Suur osa puhastamisest on nende ebakõlade tõmbamine standardisse: kuupäevad ühte vormingusse, kategooriad ühte kirjapilti, numbrid ühte ühikusse.

kolm minikarpi

Juhtum 1 – keskmine lõks. Meeskond täitis sissetulekute veerus 320 puuduvat väärtust keskmisega (48 500 dollarit). Kuid puudused olid süstemaatilised: need olid madala sissetulekuga segment, kes polnud kunagi tulusid deklareerinud. Keskmine täitmine tegi selle grupi kunstlikult rikkaks ja krediidimudel oli vale. Õppetund: enne selle täitmist küsige "miks see tühi on".

Juhtum 2 – kõrvalekalle, mida ei tohiks kustutada. Jaemüügianalüütik kustutas müügiandmetest 4 tohutut tellimust (igaüks 1,8 miljonit TL), arvates, et need on "vead". Tegemist oli aga reaalsete ettevõtete tellimustega ja moodustas 22% kogukäibest. Kustutamisjärgne prognoosimudel jättis institutsionaalse nõudluse täielikult rahuldamata. Õppetund: uurige kõrvalekallet enne selle kustutamist.

Juhtum 3 – kuupäevavormingu katastroof. CSV-s segati kuupäevad nii "2024-03-01" kui ka "01.03.2024". Kui YZ kirjutatud kood esimese vormingu järgi sõeluti, muutus 6400 rida NaT-iks "kehtetuks kuupäevaks" ja jäeti vaikselt analüüsist välja. Analüütik märkas seda alles siis, kui ridade arv vähenes. Õppetund: pärast teisendamist kontrollige alati ridade ja tühikute arvu.

Neli kopeeritavat malli

1) Puuduv väärtuskaart:

Mul on pandad df. Kirjutage kood, mis loob tabeli, mis näitab iga veeru puuduvate (NaN) arvu ja protsenti. Seejärel loetlege eraldi veerud, mille puuduv määr on üle 40% ja need, mille puudujääk on alla 5%. Lihtsalt genereerige see diagnoosikood, mitte see, millist strateegiat soovitate; Mina teen otsuse.

2) Väline kontroll (mitte kustutatud):

Kirjutage kood, mis TUTVAB (mitte kustutab!) minu veeru "summa" kõrvalekaldeid, kasutades IQR meetodit. Pange äärepoolsed read eraldi df-i, et saaksin neid käsitsi uurida. Trüki välja ka kõrvalekallete arv ja nende osakaal kogusummas.

3) Tüübi/vormingu standardimine:

Kirjutage kood, mis standardib järgmisi veerge:- "kuupäev": võib olla segavormingus ("2024-03-01" ja "01.03.2024"); teisendage need kõik kuupäeva-kellaaja järgi, loendage tõlkimatud ja teatage (viska vaikselt minema). - "sugu": "Mees"/"mees"/"M" -> "M", "Naine"/"naine"/"F" -> "K". - "summa": türgi vormingus tekst ("1.250,50") -> kümnendnumber. Printige pärast iga konversiooni, mitut rida see mõjutab.

4) Kontrollige enne/pärast puhastamist:

Kirjutage kood, mis võrdleb valitud veergude df.shapet, puuduvat arvu ja kokkuvõtvat statistikat (keskmine, mediaan, min, max) enne ja pärast puhastamisetappi. Eesmärk: näha, mida puhastamine muudab.

Nõrk viip / Tugev viip

Nõrk viip:

Kustutage need andmed.

"Selge" on mitmetähenduslik; AI ei tea, millised puuduvad osad tuleks kustutada, mida täita, millist veergu töödelda ja kuidas. Tulemus: pimedad, pöördumatud muutused.

Võimas viip:

Sinu roll: andmete puhastamise assistent. df veerud: kliendi_id (int), registreerimise_kuupäev (segavormingus tekst), tulu_tl (tekst, "1 200,00"), linn (tekst, ebaühtlane õigekiri). Reeglid: - algse df muutmine; Töötage koopiaga nimega df_clean.- Teisendage tulu_tl numbriks, loendage, mida ei saa tõlkida.- Muutke kirje_kuupäev väärtuseks datetime, teatage veast.- Ärge kustutage ühtegi rida ilma minu nõusolekuta; Näidake kandidaate eraldi. Pärast iga sammu printige välja df_temiz.shape ja puuduv number.

Siin on allikas kaitstud, iga transformatsioon loetakse, kustutamine jäetakse inimese hooleks.

Levinud vead

  • Lünkade täitmine küsimata "miks see tühi on?" Süstemaatilise/olulise puudujäägi täitmine keskmisega moonutab andmeid.
  • Kõrvalväärtuse kustutamine ilma seda uurimata. Tõeliste, kuid haruldaste sündmuste kõrvaleheitmine hävitab olulise teabe.
  • Täidise väärtuse arvutamine kõigi andmete põhjal. Katseandmete lisamine tekitab lekke; lihtsalt arvuta trennist.
  • Ei kontrolli ridade/tühjade arvu pärast teisendamist. Read, mis on vaikselt NaT/NaN, jäetakse analüüsist välja.
  • Algandmete ülekirjutamine. Tagastus ja reprodutseeritavus on kadunud.
Näpunäide: viige puhastus läbi "enne-pärast" võrdlusega. Printige pärast iga sammu kriitiliste veergude df.shape, puuduv arv ja kokkuvõtlik statistika. Nii näete kohe, et üks samm hävitab ootamatult 6000 rida.

Kokkuvõttes

Puhastamine on andmeteaduse kõige aeganõudvam ja otsuseid nõudvam faas. Iga muudatus muudab andmeid, seega on iga muudatus teadlik otsus. Puuduvate väärtuste korral küsige "miks on see tühi?" Enne nende kustutamist vaadake üle kõik kõrvalekalded; Viige tüüp ja formaat standardiks. Arvutage täiteväärtus ainult treeninguandmete põhjal, säilitage originaal ja jälgige iga sammu mõju loendades. AI on selles äris tohutu kiirendaja, kuid inimesed otsustavad, mida ja miks puhastate.

Rakenduse ülesanne

Võtke (või looge) väike tabel ja sisestage sinna teadlikult kolm ülesannet: puuduv väärtuskorteež, kõrvalekalle, segatud kuupäevavorming. Taotlege tehisintellektilt diagnoosi ja standardimiskoodi ülaltoodud mallidega; võrrelge ridade ja tühikute arvu enne/pärast iga sammu. Proovige tabada vähemalt üks "vaikiv kaotus" ja märkige, kuidas te seda märkasite.

kontrollnimekiri

  • [ ] Kas säilitasin algsed algandmed ja töötasin koopia kallal?
  • [ ] Kas olen esitanud iga puuduva veeru kohta küsimuse "miks see tühi on"?
  • [ ] Kas ma vaatasin kõrvalekalded enne nende kustutamist üle?
  • [ ] Kas ma arvutasin polstri väärtuse ainult treeningandmete põhjal?
  • [ ] Kas ma kontrollin pärast iga sammu ridade/tühjade arvu ja välistan vaikse kadu?