Imputation KNN

Machine Learning avec caret en R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

Gérer les valeurs manquantes

  • L'imputation par la médiane est rapide, mais…
  • Peut fausser les résultats si les données manquent de façon non aléatoire
  • Imputation par k plus proches voisins (KNN)
  • Impute selon des lignes « similaires » non manquantes
Machine Learning avec caret en R

Exemple : données manquantes non aléatoires

  • Supposons que les petites voitures ne déclarent pas la puissance (horsepower)
  • L'imputation par la médiane est erronée ici : elle suppose que les petites voitures ont une puissance moyenne à élevée
# Generate data with missing values
mtcars[mtcars$disp < 140, "hp"] <- NA
Y <- mtcars$mpg
X <- mtcars[, 2:4]

# Use median imputation
model <- train(X, Y, method = "glm", preProcess = "medianImpute")
print(min(model$results$RMSE))
3.612713
Machine Learning avec caret en R

Exemple : données manquantes non aléatoires

  • L'imputation KNN est préférable
  • Utilise des voitures au disp / cyl similaires pour imputer
  • Donne un modèle plus précis (mais plus lent)
# Use KNN imputation
set.seed(42)
model <- train(
  X, Y, method = "glm", preProcess = "knnImpute"
)
print(min(model$results$RMSE))
3.558881

À comparer à 3,61 pour l'imputation par la médiane

Machine Learning avec caret en R

Passons à la pratique !

Machine Learning avec caret en R

Preparing Video For Download...