Imputação por KNN

Machine Learning com caret em R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

Lidando com valores ausentes

  • Imputação pela mediana é rápida, mas…
  • Pode gerar resultados incorretos se faltar dados não aleatoriamente
  • Imputação por k-vizinhos mais próximos (KNN)
  • Imputa com base em linhas "semelhantes" sem faltas
Machine Learning com caret em R

Exemplo: ausentes não ao acaso

  • Suponha que carros menores não reportem horsepower
  • Imputação pela mediana é incorreta aqui: assume que carros pequenos têm horsepower médio-alto
# 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 com caret em R

Exemplo: ausentes não ao acaso

  • Imputação por KNN é melhor
  • Usa carros com disp/cyl similares para imputar
  • Gera um modelo mais preciso (porém mais lento)
# Use KNN imputation
set.seed(42)
model <- train(
  X, Y, method = "glm", preProcess = "knnImpute"
)
print(min(model$results$RMSE))
3.558881

Compare com 3.61 na imputação pela mediana

Machine Learning com caret em R

Vamos praticar!

Machine Learning com caret em R

Preparing Video For Download...