Hogyan kezeljük a hiányzó adatokat

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

A középérték, medián és módusz

A teljes átlag, medián vagy módusz kiszámítása egy nagyon egyszerű imputációs módszer, ez az egyetlen olyan vizsgált függvény, amely nem használja ki az idősor jellemzőit vagy a változók közötti kapcsolatot. Nagyon gyors, de egyértelmű hátrányai vannak. Az egyik hátránya, hogy az átlagimputáció csökkenti az adathalmaz varianciáját.

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"

Lineáris regresszió

Kezdésként a hiányzó értékekkel rendelkező változó több prediktorát azonosítjuk egy korrelációs mátrix segítségével. A legjobb prediktorokat kiválasztjuk és független változóként használjuk egy regressziós egyenletben. A hiányzó adatokkal rendelkező változót függő változóként használjuk. A regressziós egyenlet létrehozásához a prediktorváltozókra vonatkozó teljes adatokkal rendelkező eseteket használjuk; az egyenletet ezután a hiányos esetek hiányzó értékeinek előrejelzésére használjuk. Egy iteratív folyamat során a hiányzó változó értékeit beillesztik, majd az összes esetet felhasználják a függő változó előrejelzésére. Ezeket a lépéseket addig ismételjük, amíg az előre jelzett értékek között egyik lépésről a másikra alig van különbség, azaz konvergálnak.
Ez “elméletileg” jó becsléseket ad a hiányzó értékekre. Ennek a modellnek azonban számos hátránya van, amelyek általában felülmúlják az előnyöket. Először is, mivel a helyettesített értékeket más változókból jósolták, hajlamosak “túl jól” illeszkedni egymáshoz, és így a standard hiba deflálódik. Azt is fel kell tételezni, hogy a regressziós egyenletben használt változók között lineáris kapcsolat van, holott lehet, hogy nincs is.

Multiple Imputation

  1. Imputation: Imputálja a hiányos adathalmazok hiányzó bejegyzéseit m-szer (az ábrán m=3). Vegye figyelembe, hogy az imputált értékeket egy eloszlásból húzzuk ki. A véletlenszerű húzások szimulálása nem tartalmazza a modellparaméterek bizonytalanságát. Jobb megközelítés a Markov-láncos Monte Carlo (MCMC) szimuláció használata. Ez a lépés m teljes adathalmazt eredményez.
  2. Elemzés: Elemezze az m elkészült adathalmazok mindegyikét.
  3. Összevonás: Az m elemzési eredmények integrálása egy végeredménybe

forrás: 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)

Az alábbi okok miatt messze ez a legelőnyösebb imputációs módszer:
– Könnyen használható
– Nincs torzítás (ha az imputációs modell helyes)

Kategorikus változók imputálása

  1. A módos imputáció az egyik módszer, de mindenképpen torzítást vezet be
  2. A hiányzó értékek önmagukban külön kategóriaként kezelhetők. Létrehozhatunk egy másik kategóriát a hiányzó értékek számára, és használhatjuk őket más szintként. Ez a legegyszerűbb módszer.
  3. Predikciós modellek: Itt egy prediktív modellt hozunk létre a hiányzó adatokat helyettesítő értékek becsléséhez. Ebben az esetben az adathalmazunkat két halmazra osztjuk: Egy olyan halmazra, amelyben nincsenek hiányzó értékek a változóhoz (gyakorlóhalmaz), és egy másikra, amelyben hiányzó értékek vannak (teszthalmaz). Az előrejelzéshez olyan módszereket használhatunk, mint a logisztikus regresszió és az ANOVA
  4. Multiple Imputation

KNN (K Nearest Neighbors)

Az adatimputációhoz más gépi tanulási technikák is léteznek, mint az XGBoost és a Random Forest, de mi a KNN-t fogjuk tárgyalni, mivel széles körben használják. Ebben a módszerben k szomszédot választanak ki valamilyen távolságmérés alapján, és átlagukat imputációs becslésként használják. A módszer megköveteli a legközelebbi szomszédok számának és egy távolságmérőnek a kiválasztását. A KNN mind diszkrét attribútumokat (a k legközelebbi szomszédok közül a leggyakoribb értéket), mind folytonos attribútumokat (a k legközelebbi szomszédok közötti átlagot)
A távolságmérő az adatok típusától függően változik:
1. Folyamatos adatok: A folytonos adatokhoz általánosan használt távolságmetrikák az Euklideszi, a Manhattan és a Cosine
2. Kategorikus adatok: Ebben az esetben általában a Hamming-távolságot használják. Az összes kategorikus attribútumot veszi, és mindegyiknél eggyel számol, ha az érték nem azonos két pont között. A Hamming-távolság ekkor megegyezik azon attribútumok számával, amelyeknél az érték eltérő volt.
A KNN algoritmus egyik legvonzóbb tulajdonsága, hogy egyszerűen érthető és könnyen megvalósítható. A KNN nem-parametrikus jellege előnyhöz juttatja bizonyos beállításokban, ahol az adatok nagyon “szokatlanok” lehetnek.
A KNN algoritmus egyik nyilvánvaló hátránya, hogy nagy adathalmazok elemzésekor időigényessé válik, mivel az egész adathalmazon keresztül keresi a hasonló példányokat. Továbbá a KNN pontossága nagy dimenziós adatok esetén jelentősen romolhat, mivel a legközelebbi és a legtávolabbi szomszéd között alig van különbség.

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)

A fent tárgyalt módszerek közül a többszörös imputálás és a KNN széles körben használatos, és a többszörös imputálás, mivel egyszerűbb, általában előnyben részesül.

Ha bármilyen kérdése van ezzel a bejegyzéssel kapcsolatban, kérjük, tegye fel a hozzászólásokban, és igyekszem majd válaszolni.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.