KNN による補完

Rで学ぶ caret を使った Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

欠損値への対処

  • 中央値補完は高速だが…
  • 欠損が無作為でない場合は誤った結果になりうる
  • k 近傍法 (KNN) 補完
  • 「類似」する非欠損行に基づいて補完する
Rで学ぶ caret を使った Machine Learning

例:無作為でない欠損

  • 小型車は horsepower を報告していないと仮定
  • この場合の中央値補完は不適切:小型車の出力が中〜大と仮定してしまう
# 欠損を含むデータを生成
mtcars[mtcars$disp < 140, "hp"] <- NA
Y <- mtcars$mpg
X <- mtcars[, 2:4]

# 中央値補完を使用
model <- train(X, Y, method = "glm", preProcess = "medianImpute")
print(min(model$results$RMSE))
3.612713
Rで学ぶ caret を使った Machine Learning

例:無作為でない欠損

  • KNN 補完の方が良い
  • 類似する disp / cyl の車で補完する
  • より高精度(ただし遅い)なモデルになる
# KNN 補完を使用
set.seed(42)
model <- train(
  X, Y, method = "glm", preProcess = "knnImpute"
)
print(min(model$results$RMSE))
3.558881

中央値補完の 3.61 と比較

Rで学ぶ caret を使った Machine Learning

演習に進みましょう!

Rで学ぶ caret を使った Machine Learning

Preparing Video For Download...