KNN 대치

R의 caret로 배우는 Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

결측값 처리

  • 중앙값 대치는 빠르지만…
  • 결측이 비무작위일 때 오답을 낼 수 있음
  • k-최근접 이웃(KNN) 대치
  • 결측이 없는 "유사" 행을 기반으로 대치
R의 caret로 배우는 Machine Learning

예시: 비무작위 결측

  • 소형차가 마력(hp)을 보고하지 않는다고 가정
  • 중앙값 대치는 부적절: 소형차의 마력이 중간~큰 값이라 가정함
# 결측이 있는 데이터 생성
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...