정보가 적은 예측 변수 다루기

R의 caret로 배우는 Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

분산이 없거나 낮은 변수

  • 일부 변수는 정보가 거의 없습니다
    • 상수(분산 없음)
    • 거의 상수(분산 낮음)
  • CV의 한 폴드에서 열이 상수가 되기 쉬움
    • 모델에 문제를 일으킬 수 있음
  • 보통 분산이 매우 낮은 변수는 제거
R의 caret로 배우는 Machine Learning

예시: mtcars의 상수 열

# Reproduce dataset from last video
data(mtcars)
set.seed(42)
mtcars[sample(1:nrow(mtcars), 10), "hp"] <- NA
Y <- mtcars$mpg
X <- mtcars[, 2:4]
# Add constant-valued column to mtcars
X$bad <- 1
R의 caret로 배우는 Machine Learning

예시: mtcars의 상수 열

# Try to fit a model with PCA + glm
model <- train(
  X, Y, method = "glm", 
  preProcess = c("center", "scale", "medianImpute", "pca"))
Warning in preProcess.default(thresh = 0.95, k = 5, method = c("medianImpute",  :
  These variables have zero variances: bad
Something is wrong; all the RMSE metric values are missing:
      RMSE        Rsquared  
 Min.   : NA   Min.   : NA  
 1st Qu.: NA   1st Qu.: NA  
 Median : NA   Median : NA  
 Mean   :NaN   Mean   :NaN  
 3rd Qu.: NA   3rd Qu.: NA  
 Max.   : NA   Max.   : NA  
 NA's   :1     NA's   :1   
R의 caret로 배우는 Machine Learning

caret가 또 구해줍니다

  • "zv"는 상수 열을 제거
  • "nzv"는 거의 상수인 열을 제거
# Have caret remove those columns during modeling
set.seed(42)
model <- train(
  X, Y, method = "glm", 
  preProcess = c("zv", "center", "scale", "medianImpute", "pca")
)
min(model$results$RMSE)
3.402557
R의 caret로 배우는 Machine Learning

연습해 봅시다!

R의 caret로 배우는 Machine Learning

Preparing Video For Download...