Imputarea KNN

Machine Learning cu caret în R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

Gestionarea valorilor lipsă

  • Imputarea cu mediană este rapidă, dar…
  • Poate produce rezultate incorecte dacă datele lipsesc non-aleatoriu
  • Imputarea k-nearest neighbors (KNN)
  • Imputează pe baza rândurilor „similare" fără valori lipsă
Machine Learning cu caret în R

Exemplu: date lipsă non-aleatoriu

  • Presupunem că mașinile mici nu raportează puterea motorului
  • Imputarea cu mediană este incorectă în acest caz: presupune că mașinile mici au putere medie-mare
# 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 cu caret în R

Exemplu: date lipsă non-aleatoriu

  • Imputarea KNN este mai bună
  • Folosește mașini cu disp / cyl similare pentru imputare
  • Produce un model mai precis (dar mai lent)
# Use KNN imputation
set.seed(42)
model <- train(
  X, Y, method = "glm", preProcess = "knnImpute"
)
print(min(model$results$RMSE))
3.558881

Comparativ cu 3.61 pentru imputarea cu mediană

Machine Learning cu caret în R

Să exersăm!

Machine Learning cu caret în R

Preparing Video For Download...