Analisi delle componenti principali (PCA)

Machine Learning con caret in R

Zach Mayer

Data Scientist at DataRobot and co-author of caret

Analisi delle componenti principali

  • Combina variabili a bassa varianza e correlate
  • Un unico set di predittori ortogonali ad alta varianza
  • Evita la collinearità (cioè correlazioni tra predittori)
Machine Learning con caret in R

PCA: una rappresentazione visiva

  • La prima componente ha la varianza più alta
  • La seconda ha la seconda varianza più alta
  • E così via...

pasted-image-919.png

Machine Learning con caret in R

Esempio: dati blood-brain

  • Molti predittori
  • Molti a bassa varianza
# Carica il dataset blood-brain
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 con caret in R

Esempio: dati blood-brain

# Modello base
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 con caret in R

Esempio: dati blood-brain

# Rimuovi predittori a bassa varianza
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 con caret in R

Esempio: dati blood-brain

# Aggiungi 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
Machine Learning con caret in R

Vamos praticar!

Machine Learning con caret in R

Preparing Video For Download...