KNN imputation

Machine Learning ด้วย caret ใน R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

การจัดการค่าที่หายไป

  • Median imputation ทำงานเร็ว แต่…
  • อาจให้ผลผิดพลาดหากข้อมูลหายไปแบบไม่สุ่ม
  • k-nearest neighbors (KNN) imputation
  • เติมค่าโดยอ้างอิงจากแถวที่ "คล้ายกัน" ที่ไม่มีค่าหาย
Machine Learning ด้วย caret ใน R

ตัวอย่าง: ข้อมูลหายไปแบบไม่สุ่ม

  • สมมติว่ารถขนาดเล็กไม่รายงานแรงม้า
  • Median imputation ให้ผลผิดในกรณีนี้: สมมติว่ารถเล็กมีแรงม้าระดับกลาง-สูง
# 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 imputation ให้ผลดีกว่า
  • ใช้รถที่มี 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 สำหรับ median imputation

Machine Learning ด้วย caret ใน R

มาฝึกกันเถอะ!

Machine Learning ด้วย caret ใน R

Preparing Video For Download...