Cum se gestionează datele lipsă

library(imputeTS)na.random(mydata) # Random Imputation
na.locf(mydata, option = "locf") # Last Obs. Carried Forward
na.locf(mydata, option = "nocb") # Next Obs. Carried Backward
na.interpolation(mydata) # Linear Interpolation
na.seadec(mydata, algorithm = "interpolation") # Seasonal Adjustment then Linear Interpolation

Mediana, mediana și modul

Calcularea mediei generale, a medianei sau a modului este o metodă de imputare foarte elementară, este singura funcție testată care nu profită de caracteristicile seriei temporale sau de relația dintre variabile. Este foarte rapidă, dar are dezavantaje clare. Un dezavantaj este că imputarea mediei reduce varianța din setul de date.

library(imputeTS)na.mean(mydata, option = "mean") # Mean Imputation
na.mean(mydata, option = "median") # Median Imputation
na.mean(mydata, option = "mode") # Mode ImputationIn Python
from sklearn.preprocessing import Imputer
values = mydata.values
imputer = Imputer(missing_values='NaN', strategy='mean')
transformed_values = imputer.fit_transform(values)# strategy can be changed to "median" and "most_frequent"

Linear Regression

Pentru început, se identifică mai mulți predictori ai variabilei cu valori lipsă folosind o matrice de corelații. Cei mai buni predictori sunt selectați și utilizați ca variabile independente într-o ecuație de regresie. Variabila cu date lipsă este utilizată ca variabilă dependentă. Cazurile cu date complete pentru variabilele predictoare sunt utilizate pentru a genera ecuația de regresie; ecuația este apoi utilizată pentru a prezice valorile lipsă pentru cazurile incomplete. Într-un proces iterativ, se introduc valori pentru variabila lipsă și apoi toate cazurile sunt utilizate pentru a prezice variabila dependentă. Aceste etape se repetă până când există o diferență mică între valorile prezise de la o etapă la alta, adică acestea converg.
Acesta oferă „teoretic” estimări bune pentru valorile lipsă. Cu toate acestea, există mai multe dezavantaje ale acestui model care tind să depășească avantajele. În primul rând, deoarece valorile înlocuite au fost prezise din alte variabile, acestea tind să se potrivească „prea bine” și astfel eroarea standard este dezumflată. De asemenea, trebuie să se presupună că există o relație liniară între variabilele utilizate în ecuația de regresie, când s-ar putea să nu existe.

Imputare multiplă

  1. Imputare: Impută intrările lipsă din seturile de date incomplete de m ori (m=3 în figură). Rețineți că valorile imputate sunt extrase dintr-o distribuție. Simularea extragerilor aleatorii nu include incertitudinea în parametrii modelului. O abordare mai bună este utilizarea simulării Markov Chain Monte Carlo (MCMC). Această etapă are ca rezultat m seturi de date complete.
  2. Analiză: Analizați fiecare dintre cele m seturi de date completate.
  3. Pooling: Integrați cele m rezultate ale analizei într-un rezultat final

Sursa: http://www.stefvanbuuren.nl/publications/mice%20in%20r%20-%20draft.pdf
# We will be using mice library in r
library(mice)
# Deterministic regression imputation via mice
imp <- mice(mydata, method = "norm.predict", m = 1)
# Store data
data_imp <- complete(imp)# Multiple Imputation
imp <- mice(mydata, m = 5)#build predictive model
fit <- with(data = imp, lm(y ~ x + z))#combine results of all 5 models
combine <- pool(fit)

Aceasta este de departe cea mai preferată metodă de imputare din următoarele motive:
– Ușor de utilizat
– Fără prejudecăți (dacă modelul de imputare este corect)

Imputarea variabilelor categoriale

  1. Mode de imputare este o metodă, dar va introduce cu siguranță prejudecăți
  2. Valorile lipsă pot fi tratate ca o categorie separată de sine stătătoare. Putem crea o altă categorie pentru valorile lipsă și le putem folosi ca un nivel diferit. Aceasta este cea mai simplă metodă.
  3. Modele de predicție: Aici, creăm un model predictiv pentru a estima valorile care vor înlocui datele lipsă. În acest caz, împărțim setul nostru de date în două seturi: Un set fără valori lipsă pentru variabilă (antrenament) și un alt set cu valori lipsă (test). Putem utiliza metode precum regresia logistică și ANOVA pentru predicție
  4. Imputarea multiplă

KNN (K Nearest Neighbors)

Există și alte tehnici de învățare automată precum XGBoost și Random Forest pentru imputarea datelor, dar vom discuta despre KNN, deoarece este utilizat pe scară largă. În această metodă, k vecini sunt aleși pe baza unei anumite măsuri de distanță, iar media lor este utilizată ca o estimare de imputare. Metoda necesită selectarea numărului de vecini cei mai apropiați și a unei măsuri de distanță. KNN poate prezice atât atribute discrete (cea mai frecventă valoare dintre cei mai apropiați k vecini), cât și atribute continue (media dintre cei mai apropiați k vecini)
Metrica de distanță variază în funcție de tipul de date:
1. Date continue: Metricele de distanță utilizate în mod obișnuit pentru datele continue sunt Euclidian, Manhattan și Cosinus
2. Date categorice: Distanța Hamming este în general utilizată în acest caz. Aceasta ia toate atributele categorice și, pentru fiecare dintre ele, numără unu dacă valoarea nu este aceeași între două puncte. Distanța Hamming este atunci egală cu numărul de atribute pentru care valoarea a fost diferită.
Una dintre cele mai atractive caracteristici ale algoritmului KNN este că este simplu de înțeles și ușor de implementat. Natura non-parametrică a KNN îi conferă un avantaj în anumite situații în care datele pot fi foarte „neobișnuite”.
Unul dintre dezavantajele evidente ale algoritmului KNN este faptul că acesta devine consumator de timp atunci când analizează seturi mari de date, deoarece caută instanțe similare prin întregul set de date. În plus, acuratețea KNN poate fi grav degradată cu date cu dimensiuni mari, deoarece există o diferență mică între cel mai apropiat și cel mai îndepărtat vecin.

library(DMwR)
knnOutput <- knnImputation(mydata)In python
from fancyimpute import KNN
# Use 5 nearest rows which have a feature to fill in each row's missing features
knnOutput = KNN(k=5).complete(mydata)

Printre toate metodele discutate mai sus, imputația multiplă și KNN sunt utilizate pe scară largă, iar imputația multiplă, fiind mai simplă, este în general preferată.

Dacă aveți întrebări legate de această postare, vă rog să le puneți în comentarii și voi face tot posibilul să vă răspund.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.