Imputazione k-Nearest Neighbors

Gestione dei dati mancanti con imputazioni in R

Michal Oleszak

Machine Learning Engineer

Imputazione k-Nearest Neighbors

Una tabella con tre colonne: A, B e C. C’è un valore mancante nella colonna A.

Gestione dei dati mancanti con imputazioni in R

Imputazione k-Nearest Neighbors

Una tabella con tre colonne: A, B e C. Tre righe senza il valore mancante sono evidenziate a colori.

Per ogni osservazione con valori mancanti:

  1. Trova k altre osservazioni (donatori, vicini) più simili a quella.
Gestione dei dati mancanti con imputazioni in R

Imputazione k-Nearest Neighbors

Una tabella con tre colonne: A, B e C. Tre righe senza il valore mancante sono evidenziate a colori. Il valore prima mancante in A è sostituito con la media dei numeri nella stessa colonna delle righe evidenziate.

Per ogni osservazione con valori mancanti:

  1. Trova k altre osservazioni (donatori, vicini) più simili a quella.
  2. Sostituisci i valori mancanti con valori aggregati dai k donatori (media, mediana, moda).
Gestione dei dati mancanti con imputazioni in R

Misure di distanza

La distanza tra due osservazioni a e b:

Distanza euclidea per n variabili numeriche:

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

Distanza Manhattan per f variabili fattoriali:

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

Distanza di Hamming per c variabili categoriche:

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

Un sistema di coordinate con due punti collegati da una linea retta.

Un sistema di coordinate con due punti collegati da due linee perpendicolari, come se fossero angoli opposti di un rettangolo.

Gestione dei dati mancanti con imputazioni in R

Distanza di Gower

Un data frame fittizio con tre tipi di variabili, ciascuno evidenziato con un colore diverso: numeriche, fattoriali e categoriche.

Gestione dei dati mancanti con imputazioni in R

Distanza di Gower

Un data frame fittizio con tre tipi di variabili, ciascuno evidenziato con un colore diverso: numeriche, fattoriali e categoriche. Ogni tipo di variabile ha una freccia verso la relativa misura di distanza: Euclidea, Manhattan e Hamming. Le tre misure puntano a un’ellisse con la distanza di Gower, combinazione delle tre.

Gestione dei dati mancanti con imputazioni in R

Imputazione kNN: pratica

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
Gestione dei dati mancanti con imputazioni in R

Ponderare i donatori

  • Tra i k vicini scelti per un’osservazione, alcuni sono più simili di altri.
  • Possiamo dare più peso ai vicini più vicini quando aggreghiamo i valori.
  • Aggrega i vicini con una media pesata, con pesi dati dalle distanze inverse.
  • Valido solo per variabili numeriche.
nhanes_imp <- nhanes %>% 
  kNN(variable = c("TotChol", "Pulse"),
      k = 5,
      numFun = weighted.mean,
      weightDist = TRUE)
Gestione dei dati mancanti con imputazioni in R

Ordinare le variabili

  • L’algoritmo kNN scorre le variabili, imputandole una alla volta.
  • Ogni volta ricalcola le distanze tra osservazioni.
  • Se la prima variabile ha molti NA, il calcolo delle distanze per la seconda userà molti valori imputati.
  • Meglio ordinare le variabili in ordine crescente per numero di NA prima di eseguire kNN.
Gestione dei dati mancanti con imputazioni in R

Ordinare: pratica

vars_by_NAs <- nhanes %>% 
  is.na() %>%
  colSums() %>%
  sort(decreasing = FALSE) %>% 
  names()
nhanes_imp <- nhanes %>% 
  select(vars_by_NAs) %>% 
  kNN(k = 5)
Gestione dei dati mancanti con imputazioni in R

Alleniamoci con l’imputazione kNN!

Gestione dei dati mancanti con imputazioni in R

Preparing Video For Download...