Imputazione con alberi

Gestione dei dati mancanti con imputazioni in R

Michal Oleszak

Machine Learning Engineer

Approccio di imputazione ad alberi

Usa modelli di machine learning per prevedere i valori mancanti!

  • Approccio non parametrico: nessuna assunzione sulle relazioni tra variabili.
  • Cattura pattern non lineari complessi.
  • Spesso più accurato dei modelli statistici semplici.

In questo corso: pacchetto missForest, basato su randomForest

Gestione dei dati mancanti con imputazioni in R

Alberi decisionali

Schema di un albero decisionale che mostra come un modello assegna diverse probabilità di diabete in base a combinazioni di Altezza e Peso.

Gestione dei dati mancanti con imputazioni in R

Random forest

Schema del funzionamento delle random forest. I dati originali producono tre dataset bagged con sottoinsiemi casuali di colonne. Si adatta un albero decisionale a ciascuno e si aggregano i risultati finali.

Gestione dei dati mancanti con imputazioni in R

Algoritmo missForest

  1. Fai una stima iniziale dei mancanti con imputazione per media.
  2. Ordina le variabili in ordine crescente di valori mancanti.
  3. Per ogni variabile x:
    • Allena una random forest sulla parte osservata di x (altre variabili come predittori).
    • Usala per prevedere la parte mancante di x.
  4. Ripeti il punto 3 finché i valori imputati cambiano poco.
Gestione dei dati mancanti con imputazioni in R

missForest in pratica

nhanes %>% is.na() %>% colSums()
Age     Gender     Weight     Height   Diabetes    TotChol      Pulse PhysActive 
  0          0          9          8          1         85         32         26
library(missForest)
imp_res <- missForest(nhanes)
nhanes_imp  <- imp_res$ximp
nhanes_imp %>% is.na() %>% colSums()
Age     Gender     Weight     Height   Diabetes    TotChol      Pulse PhysActive 
  0          0          0          0          0          0          0          0
Gestione dei dati mancanti con imputazioni in R

Errore di imputazione

missForest() fornisce una stima OOB (out-of-bag) dell’errore di imputazione:

  • NRMSE (errore quadratico medio normalizzato) per variabili continue.
  • PFC (quota di classificazioni errate) per variabili categoriche.

In entrambi i casi, buone prestazioni → valore vicino a 0; valori ~1 indicano un risultato scarso.

imp_res <- missForest(nhanes)
imp_res$OOBerror
      NRMSE         PFC 
0.147687025 0.003676471
Gestione dei dati mancanti con imputazioni in R

Errore di imputazione

missForest() fornisce una stima OOB (out-of-bag) dell’errore di imputazione:

  • NRMSE (errore quadratico medio normalizzato) per variabili continue.
  • PFC (quota di classificazioni errate) per variabili categoriche.

In entrambi i casi, buone prestazioni → valore vicino a 0; valori ~1 indicano un risultato scarso.

imp_res <- missForest(nhanes, variablewise = TRUE)
imp_res$OOBerror
    MSE       PFC       MSE       MSE       PFC       MSE       MSE       MSE 
0.00000   0.00000 285.79563  40.42142   0.00735   0.53444 129.03609   0.17576
Gestione dei dati mancanti con imputazioni in R

Compromesso velocità–accuratezza

Addestrare molte random forest può richiedere tempo.

Idea: sacrificare un po’ di accuratezza e ridurre la dimensione della foresta per diminuire i tempi.

  • Riduci il numero di alberi per foresta (argomento ntree).
  • Riduci il numero di variabili per lo split (mtry).

L’effetto sul tempo varia:

  • Ridurre ntree ha effetto lineare.
  • Ridurre mtry accelera di più quando le variabili sono molte.
Gestione dei dati mancanti con imputazioni in R

Compromesso in pratica: velocità vs accuratezza

Impostazioni predefinite:

start_time <- Sys.time()
imp_res <- missForest(nhanes)
end_time <- Sys.time()
print(imp_res$OOBerror)
print(end_time - start_time)
      NRMSE         PFC 
0.147687025 0.003676471
Time difference of 5.496582 secs

Foreste ridotte:

start_time <- Sys.time()
imp_res <- missForest(nhanes,
                      ntree = 10,
                      mtry = 2)
end_time <- Sys.time()
print(imp_res$OOBerror)
print(end_time - start_time)
      NRMSE         PFC 
0.162420139 0.007425743
Time difference of 0.516367 secs
Gestione dei dati mancanti con imputazioni in R

Passiamo alla pratica!

Gestione dei dati mancanti con imputazioni in R

Preparing Video For Download...