主成分分析 (PCA)

Rで学ぶ caret を使った Machine Learning

Zach Mayer

Data Scientist at DataRobot and co-author of caret

主成分分析

  • 低分散や相関のある変数を統合
  • 高分散で直交する予測子の集合に変換
  • 予測子間の多重共線性を防ぐ
Rで学ぶ caret を使った Machine Learning

PCA: 可視化

  • 第1主成分が最大分散
  • 第2主成分が次に大きい分散
  • 以降も同様

貼り付け画像-919.png

Rで学ぶ caret を使った Machine Learning

例: 血液脳関門データ

  • 予測子が多数
  • 低分散が多い
# 血液脳関門データの読み込み
data(BloodBrain)
names(bbbDescr)[nearZeroVar(bbbDescr)]
[1] "negative"     "peoe_vsa.2.1" "peoe_vsa.3.1"
[4] "a_acid"       "vsa_acid"     "frac.anion7."
[7] "alert"  
Rで学ぶ caret を使った Machine Learning

例: 血液脳関門データ

# 基本モデル
set.seed(42)
data(BloodBrain)
model <- train(
  bbbDescr, 
  logBBB, 
  method = "glm",
  trControl = trainControl(
    method = "cv", number = 10, verbose = TRUE
  ),
  preProcess = c("zv", "center", "scale")
)
min(model$results$RMSE)
1.107702     
Rで学ぶ caret を使った Machine Learning

例: 血液脳関門データ

# 低分散の予測子を除去
set.seed(42)
data(BloodBrain)
model <- train(
  bbbDescr, 
  logBBB, 
  method = "glm",
  trControl = trainControl(
    method = "cv", number = 10, verbose = TRUE
  ),
  preProcess = c("nzv", "center", "scale")
)
min(model$results$RMSE)
0.9796199
Rで学ぶ caret を使った Machine Learning

例: 血液脳関門データ

# PCA を追加
set.seed(42)
data(BloodBrain)
model <- train(
  bbbDescr, 
  logBBB, 
  method = "glm",
  trControl = trainControl(
    method = "cv", number = 10, verbose = TRUE
  ),
  preProcess = c("zv", "center", "scale", "pca")
)
min(model$results$RMSE)
0.9796199
Rで学ぶ caret を使った Machine Learning

Passons à la pratique !

Rで学ぶ caret を使った Machine Learning

Preparing Video For Download...