Імпутація KNN

Machine Learning з пакетом caret в R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

Робота з пропущеними значеннями

  • Медіанна імпутація швидка, але…
  • Може давати хибні результати, якщо пропуски не випадкові
  • Імпутація k-nearest neighbors (KNN)
  • Заповнює на основі «схожих» рядків без пропусків
Machine Learning з пакетом caret в R

Приклад: пропущені не випадково

  • Уявімо, що менші авто не повідомляють про horsepower
  • У цьому разі медіанна імпутація помилкова: вона припускає, що малі авто мають середньо-велику потужність
# 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 з пакетом caret в R

Приклад: пропущені не випадково

  • Імпутація KNN краща
  • Використовує авто з подібними disp / cyl для заповнення
  • Дає точнішу (але повільнішу) модель
# Use KNN imputation
set.seed(42)
model <- train(
  X, Y, method = "glm", preProcess = "knnImpute"
)
print(min(model$results$RMSE))
3.558881

Порівняйте з 3.61 для медіанної імпутації

Machine Learning з пакетом caret в R

Давайте потренуємось!

Machine Learning з пакетом caret в R

Preparing Video For Download...