Analyse en composantes principales (PCA)

Réduction de dimension en R

Matt Pickard

Owner, Pickard Predictives, LLC

Réaliser une PCA

pca_res <- prcomp(attrition_df %>% select(-Attrition), scale. = TRUE)

summary(pca_res)
Importance des composantes :
                          PC1    PC2    PC3     PC4     PC5
Écart-type             1.4259 1.3295 0.8618 0.48401 0.47138
Proportion de variance 0.4067 0.3535 0.1485 0.04685 0.04444
Proportion cumulée     0.4067 0.7602 0.9087 0.95556 1.00000
Réduction de dimension en R

Charges des CP

pca_res
Écarts-types (1, .., p=5) :
[1] 1.43 1.33 0.86 0.48 0.47

Rotation (n x k) = (5 x 5) :
                            PC1    PC2     PC3    PC4    PC5
MonthlyIncome            0.6244 -0.024  0.3665 -0.280 -0.630
TotalWorkingYears        0.6390 -0.011  0.2674  0.293  0.659
YearsSinceLastPromotion  0.4488  0.018 -0.8902 -0.061 -0.047
PercentSalaryHike       -0.0018  0.707  0.0426 -0.647  0.284
PerformanceRating        0.0210  0.707 -0.0033  0.643 -0.294
Réduction de dimension en R

Charges des CP

zoom sur les charges des deux premières composantes principales

Réduction de dimension en R

Charges des CP

charges des variables pour CP1

Réduction de dimension en R

Charges des CP

charges des variables pour CP2

Réduction de dimension en R

PCA avec tidymodels

pca_recipe <- recipe(Attrition ~ . , data = train) %>% 
  step_normalize(all_numeric_predictors()) %>% 
  step_pca(all_numeric_predictors(), num_comp = 2)

attrition_fit <- workflow(preprocessor = pca_recipe, spec = logistic_reg()) %>% fit(train)
attrition_pred_df <- predict(attrition_fit, test) %>% bind_cols(test %>% select(Attrition))
f_meas(attrition_pred_df, Attrition, .pred_class)
Réduction de dimension en R

Voir les CP dans les détails du modèle

attrition_fit
Appel :  stats::glm(formula = ..y ~ ., family = stats::binomial, data = data)

Coefficients :
(Intercept)          PC1          PC2  
   -2.42067      0.80493     -0.03429  

Degrés de liberté : 1339 total (i.e. nul) ; 1337 résiduel
Déviance nulle :        951.8 
Déviance résiduelle : 870.6     AIC : 876.6
Réduction de dimension en R

Passons à la pratique !

Réduction de dimension en R

Preparing Video For Download...