Principalecomponentenanalyse (PCA)

Machine Learning met caret in R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

Principalecomponentenanalyse

  • Combineert laag-variantie en gecorreleerde variabelen
  • Eén set predictoren met hoge variantie, loodrecht op elkaar
  • Voorkomt multicollineariteit (correlatie tussen predictoren)
Machine Learning met caret in R

PCA: visuele weergave

  • Eerste component heeft de hoogste variantie
  • Tweede component heeft de op één na hoogste variantie
  • En zo verder...

geplakt-beeld-919.png

Machine Learning met caret in R

Voorbeeld: blood-brain-data

  • Veel predictoren
  • Veel met lage variantie
# Laad de blood-brain-dataset
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"  
Machine Learning met caret in R

Voorbeeld: blood-brain-data

# Basismodel
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     
Machine Learning met caret in R

Voorbeeld: blood-brain-data

# Verwijder predictoren met lage variantie
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
Machine Learning met caret in R

Voorbeeld: blood-brain-data

# Voeg PCA toe
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
Machine Learning met caret in R

Laten we oefenen!

Machine Learning met caret in R

Preparing Video For Download...