情報量の少ない予測変数の扱い

Rで学ぶ caret を使った Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

分散なし(低分散)変数

  • 情報がほとんどない変数がある
    • 定数(分散なし)
    • ほぼ定数(分散が小さい)
  • CV のある分割で列が定数になることがある
    • モデルに問題を起こしうる
  • 極端に分散の小さい変数は通常は除去する
Rで学ぶ caret を使った Machine Learning

例: mtcars の定数列

# 前の動画のデータを再現
data(mtcars)
set.seed(42)
mtcars[sample(1:nrow(mtcars), 10), "hp"] <- NA
Y <- mtcars$mpg
X <- mtcars[, 2:4]
# 定数列を追加
X$bad <- 1
Rで学ぶ caret を使った Machine Learning

例: mtcars の定数列

# 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" はほぼ定数の列を除去
# caret に列除去を任せて学習
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...