k-nearest-neighbors-imputatie

Omgaan met missende data met imputaties in R

Michal Oleszak

Machine Learning Engineer

k-nearest-neighbors-imputatie

Een tabel met drie kolommen: A, B en C. Er staat één missende waarde in kolom A.

Omgaan met missende data met imputaties in R

k-nearest-neighbors-imputatie

Een tabel met drie kolommen: A, B en C. Drie rijen zonder de missende waarde zijn gemarkeerd.

Voor elke observatie met missende waarden:

  1. Vind k andere observaties (donoren, buren) die het meest lijken op die observatie.
Omgaan met missende data met imputaties in R

k-nearest-neighbors-imputatie

Een tabel met drie kolommen: A, B en C. Drie rijen zonder de missende waarde zijn gemarkeerd. De eerder missende waarde in A is vervangen door het gemiddelde van de getallen in dezelfde kolom in de gemarkeerde rijen.

Voor elke observatie met missende waarden:

  1. Vind k andere observaties (donoren, buren) die het meest lijken op die observatie.
  2. Vervang de missende waarden door geaggregeerde waarden van de k donoren (gemiddelde, mediaan, modus).
Omgaan met missende data met imputaties in R

Afstandsmaatstaven

De afstand tussen twee observaties a en b:

Euclidische afstand voor n numerieke variabelen:

$\sqrt{\Sigma_{i=1}^{n} (a_i - b_i)^{2}}$

Manhattan-afstand voor f factorvariabelen:

$\Sigma_{i=1}^{f} |a_i - b_i|$

Hamming-afstand voor c categorische variabelen:

$\Sigma_{i=1}^{c} I(a_i \neq b_i)$

Een assenstelsel met twee punten verbonden door een rechte lijn.

Een assenstelsel met twee punten verbonden door twee loodrechte lijnen, alsof de punten twee tegenoverliggende hoeken van een rechthoek zijn.

Omgaan met missende data met imputaties in R

Gower-afstand

Een gesimuleerde data frame met drie variabelentypes, elk gemarkeerd in een andere kleur: numeriek, factor en categorisch.

Omgaan met missende data met imputaties in R

Gower-afstand

Een gesimuleerde data frame met drie variabelentypes, elk gemarkeerd in een andere kleur: numeriek, factor en categorisch. Elk type heeft een pijl naar de bijbehorende afstandsmaat: respectievelijk Euclidisch, Manhattan en Hamming. De drie afstandsmaten wijzen naar een ellips met de Gower-afstand, de combinatie van de drie.

Omgaan met missende data met imputaties in R

kNN-imputatie in de praktijk

library(VIM)
nhanes_imp <- kNN(nhanes, k = 5, variable = c("TotChol", "Pulse"))
head(nhanes_imp)
  Age Gender Weight Height Diabetes TotChol Pulse PhysActive TotChol_imp Pulse_imp
1  16   male   73.2  172.0    FALSE    3.00    76       TRUE       FALSE     FALSE
2  17   male   72.3  176.0    FALSE    2.61    74       TRUE       FALSE     FALSE
3  12   male   57.7  158.9    FALSE    4.27    80       TRUE       FALSE     FALSE
4  16   male   88.9  183.3    FALSE    3.62    58       TRUE       FALSE     FALSE
5  13 female   45.1  157.6    FALSE    2.66    92       TRUE       FALSE     FALSE
6  16 female   48.7  158.4    FALSE    4.32    58      FALSE       FALSE     FALSE
Omgaan met missende data met imputaties in R

Donoren wegen

  • Van de gekozen k buren zijn sommigen vergelijkbaarder dan andere.
  • We kunnen dichterbij gelegen buren zwaarder laten meewegen bij het aggregeren.
  • Aggregateer buren met een gewogen gemiddelde, met gewichten als inverse afstanden tot elke buur.
  • Dit kan alleen voor numerieke variabelen.
nhanes_imp <- nhanes %>% 
  kNN(variable = c("TotChol", "Pulse"),
      k = 5,
      numFun = weighted.mean,
      weightDist = TRUE)
Omgaan met missende data met imputaties in R

Variabelen sorteren

  • Het kNN-algoritme loopt variabelen langs en imputeert ze één voor één.
  • Elke keer worden afstanden tussen observaties berekend.
  • Had de eerste variabele veel missende waarden, dan is de afstand voor de tweede gebaseerd op veel imputaties.
  • Sorteer variabelen oplopend op aantal missende waarden vóór kNN.
Omgaan met missende data met imputaties in R

Variabelen sorteren in de praktijk

vars_by_NAs <- nhanes %>% 
  is.na() %>%
  colSums() %>%
  sort(decreasing = FALSE) %>% 
  names()
nhanes_imp <- nhanes %>% 
  select(vars_by_NAs) %>% 
  kNN(k = 5)
Omgaan met missende data met imputaties in R

Laten we oefenen!

Omgaan met missende data met imputaties in R

Preparing Video For Download...