Retirer les prédicteurs à variance quasi nulle
Comme vous l'avez vu dans la vidéo, pour la prochaine série d'exercices, vous allez utiliser l'ensemble de données blood-brain. Il s'agit d'un jeu de données biochimiques où la tâche consiste à prédire la valeur suivante pour un ensemble de composés biochimiques :
log((concentration du composé dans le cerveau) /
(concentration du composé dans le sang))
Cela donne une mesure quantitative de la capacité du composé à traverser la barrière hémato-encéphalique, utile pour comprendre les propriétés biologiques de cette barrière.
Un aspect intéressant de cet ensemble de données est qu'il contient de nombreuses variables, et plusieurs ont une variance extrêmement faible. Cela signifie qu'elles apportent très peu d'information, car elles se composent surtout d'une seule valeur (p. ex., zéro).
Heureusement, caret comprend une fonction utilitaire appelée nearZeroVar() pour retirer ces variables et ainsi gagner du temps lors de la modélisation.
nearZeroVar() reçoit des données x, puis examine le rapport entre la valeur la plus fréquente et la deuxième plus fréquente, freqCut, ainsi que le pourcentage de valeurs distinctes par rapport au nombre total d'échantillons, uniqueCut. Par défaut, caret utilise freqCut = 19 et uniqueCut = 10, ce qui est plutôt conservateur. Je préfère être un peu plus agressif et utiliser freqCut = 2 et uniqueCut = 20 lorsque j'appelle nearZeroVar().
Cette activité fait partie du cours
Machine Learning avec caret en R
Instructions de l’exercice
bloodbrain_x et bloodbrain_y sont déjà chargés dans votre espace de travail.
- Repérez les prédicteurs à variance quasi nulle en exécutant
nearZeroVar()sur l'ensemble de données blood-brain. Enregistrez le résultat dans un objet nomméremove_cols. UtilisezfreqCut = 2etuniqueCut = 20dans l'appel ànearZeroVar(). - Utilisez
names()pour créer un vecteur contenant tous les noms de colonnes debloodbrain_x. Nommez-leall_cols. - Créez un nouveau cadre de données appelé
bloodbrain_x_smallen retirant les variables à variance quasi nulle. Servez-vous desetdiff()pour isoler les noms de colonnes à garder (c.-à-d. celles que vous ne souhaitez pas retirer).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Identify near zero variance predictors: remove_cols
remove_cols <- nearZeroVar(___, names = TRUE,
freqCut = ___, uniqueCut = ___)
# Get all column names from bloodbrain_x: all_cols
# Remove from data: bloodbrain_x_small
bloodbrain_x_small <- bloodbrain_x[ , setdiff(___, ___)]