Sélection des fonctionnalités avec le package Caret R
La sélection des bonnes fonctionnalités dans vos données peut faire la différence entre des performances médiocres avec des temps d'entraînement longs et d'excellentes performances avec des temps d'entraînement courts.
Le package caret R fournit des outils pour rendre automatiquement compte de la pertinence et de l'importance des attributs de vos données et même sélectionner les fonctionnalités les plus importantes pour vous.
Dans cet article, vous découvrirez les outils de sélection de fonctionnalités du package Caret R avec des recettes autonomes dans R.
Après avoir lu cet article, vous saurez :
- Comment supprimer les fonctionnalités redondantes de votre ensemble de données.
- Comment classer les fonctionnalités de votre ensemble de données en fonction de leur importance.
- Comment sélectionner des fonctionnalités de votre ensemble de données à l'aide de la méthode d'élimination récursive des fonctionnalités.
Démarrez votre projet avec mon nouveau livre Machine Learning Mastery With R, comprenant des tutoriels pas à pas et les fichiers code source R pour tous les exemples.
Commençons.
Supprimer les fonctionnalités redondantes
Les données peuvent contenir des attributs fortement corrélés les uns aux autres. De nombreuses méthodes fonctionnent mieux si les attributs hautement corrélés sont supprimés.
Le package Caret R fournit le findCorrelation qui analysera une matrice de corrélation des attributs de vos données et rapportera les attributs qui peuvent être supprimés.
L'exemple suivant charge l'ensemble de données Pima Indians Diabetes qui contient un certain nombre d'attributs biologiques provenant de rapports médicaux. Une matrice de corrélation est créée à partir de ces attributs et les attributs hautement corrélés sont identifiés. Dans ce cas, l'attribut d'âge est supprimé car il est fortement corrélé avec l'attribut de grossesse.
En règle générale, vous souhaitez supprimer les attributs dont la corrélation absolue est égale ou supérieure à 0,75.
Identifiez les fonctionnalités hautement corrélées dans le package caret r :
# ensure the results are repeatable
set.seed(7)
# load the library
library(mlbench)
library(caret)
# load the data
data(PimaIndiansDiabetes)
# calculate correlation matrix
correlationMatrix <- cor(PimaIndiansDiabetes[,1:8])
# summarize the correlation matrix
print(correlationMatrix)
# find attributes that are highly corrected (ideally >0.75)
highlyCorrelated <- findCorrelation(correlationMatrix, cutoff=0.5)
# print indexes of highly correlated attributes
print(highlyCorrelated)
Classer les fonctionnalités par importance
L'importance des caractéristiques peut être estimée à partir des données en créant un modèle. Certaines méthodes comme les arbres de décision disposent d'un mécanisme intégré pour signaler l'importance des variables. Pour d’autres algorithmes, l’importance peut être estimée à l’aide d’une analyse de courbe ROC réalisée pour chaque attribut.
L'exemple ci-dessous charge l'ensemble de données Pima Indians Diabetes et construit un modèle de quantification vectorielle d'apprentissage (LVQ). Le varImp est ensuite utilisé pour estimer l'importance de la variable, qui est imprimée et tracée. Il montre que les attributs glucose, masse et âge sont les 3 attributs les plus importants de l’ensemble de données et que l’attribut insuline est le moins important.
Classez les fonctionnalités par importance à l’aide du package caret r :
# ensure results are repeatable
set.seed(7)
# load the library
library(mlbench)
library(caret)
# load the dataset
data(PimaIndiansDiabetes)
# prepare training scheme
control <- trainControl(method="repeatedcv", number=10, repeats=3)
# train the model
model <- train(diabetes~., data=PimaIndiansDiabetes, method="lvq", preProcess="scale", trControl=control)
# estimate variable importance
importance <- varImp(model, scale=FALSE)
# summarize importance
print(importance)
# plot importance
plot(importance)
Sélection des fonctionnalités
Les méthodes de sélection automatique de fonctionnalités peuvent être utilisées pour créer de nombreux modèles avec différents sous-ensembles d'un ensemble de données et identifier les attributs qui sont ou non requis pour créer un modèle précis.
Une méthode automatique populaire de sélection de fonctionnalités fournie par le package caret R est appelée Recursive Feature Elimination ou RFE.
L'exemple ci-dessous fournit un exemple de la méthode RFE sur l'ensemble de données Pima Indians Diabetes. Un algorithme Random Forest est utilisé à chaque itération pour évaluer le modèle. L'algorithme est configuré pour explorer tous les sous-ensembles possibles des attributs. Les 8 attributs sont sélectionnés dans cet exemple, bien que dans le graphique montrant la précision des différentes tailles de sous-ensembles d'attributs, nous pouvons voir que seulement 4 attributs donnent des résultats presque comparables.
Sélectionnez automatiquement les fonctionnalités à l'aide du package Caret R :
# ensure the results are repeatable
set.seed(7)
# load the library
library(mlbench)
library(caret)
# load the data
data(PimaIndiansDiabetes)
# define the control using a random forest selection function
control <- rfeControl(functions=rfFuncs, method="cv", number=10)
# run the RFE algorithm
results <- rfe(PimaIndiansDiabetes[,1:8], PimaIndiansDiabetes[,9], sizes=c(1:8), rfeControl=control)
# summarize the results
print(results)
# list the chosen features
predictors(results)
# plot the results
plot(results, type=c("g", "o"))
Résumé
Dans cet article, vous avez découvert 3 méthodes de sélection de fonctionnalités fournies par le package caret R. Plus précisément, rechercher et supprimer les fonctionnalités redondantes, classer les fonctionnalités par importance et sélectionner automatiquement un sous-ensemble des fonctionnalités les plus prédictives.
Trois recettes autonomes dans R ont été fournies que vous pouvez copier-coller dans votre propre projet et adapter à vos problèmes spécifiques.