Comparez les modèles et sélectionnez le meilleur à l’aide du package Caret R
Le package Caret R vous permet de construire facilement de nombreux types de modèles différents et d'ajuster leurs paramètres.
Après avoir créé et réglé de nombreux types de modèles, vous souhaiterez peut-être connaître et sélectionner le meilleur modèle afin de pouvoir l'utiliser pour faire des prédictions, peut-être dans un environnement opérationnel.
Dans cet article, vous découvrez comment comparer les résultats de plusieurs modèles à l'aide du package caret R.
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.
Comparez les modèles d'apprentissage automatique
Tout en travaillant sur un problème, vous choisirez un ou plusieurs modèles performants. Après avoir réglé les paramètres de chacun, vous souhaiterez comparer les modèles et découvrir lesquels sont les meilleurs et les moins performants.
Il est utile d'avoir une idée de la répartition des modèles, peut-être que l'un peut être amélioré, ou que vous pouvez arrêter de travailler sur un modèle qui est clairement moins performant que les autres.
Dans l'exemple ci-dessous, nous comparons trois modèles d'apprentissage automatique sophistiqués dans l'ensemble de données sur le diabète des Indiens Pima. Cet ensemble de données est un résumé d'une collection de rapports médicaux et indique l'apparition du diabète chez le patient dans un délai de cinq ans.
Vous pouvez en savoir plus sur l'ensemble de données ici :
- Fichier d'ensemble de données.
- Détails de l'ensemble de données
Les trois modèles construits et réglés sont Learning Vector Quantization (LVQ), Stochastic Gradient Boosting (également connu sous le nom de Gradient Boosted Machine ou GBM) et Support Vector Machine (SVM). Chaque modèle est automatiquement ajusté et évalué à l'aide de 3 répétitions de validation croisée 10 fois.
La graine de nombres aléatoires est définie avant que chaque algorithme ne soit entraîné pour garantir que chaque algorithme obtient les mêmes partitions et répétitions de données. Cela nous permet de comparer des pommes avec des pommes dans les résultats finaux. Alternativement, nous pourrions ignorer cette préoccupation et augmenter le nombre de répétitions à 30 ou 100, en utilisant le caractère aléatoire pour contrôler les variations dans le partitionnement des données.
Une fois les modèles entraînés et une configuration de paramètres optimale trouvée pour chacun, les résultats de précision de chacun des meilleurs modèles sont collectés. Chaque modèle « gagnant » comporte 30 résultats (3 répétitions de validation croisée 10 fois). L'objectif de la comparaison des résultats est de comparer les distributions de précision (30 valeurs) entre les modèles.
Cela se fait de trois manières. Les distributions sont résumées en termes de centiles. Les distributions sont résumées sous forme de diagrammes en boîte et enfin les distributions sont résumées sous forme de diagrammes à points.
Exemple de comparaison des résultats du modèle à l'aide du package Caret R :
# 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 LVQ model
set.seed(7)
modelLvq <- train(diabetes~., data=PimaIndiansDiabetes, method="lvq", trControl=control)
# train the GBM model
set.seed(7)
modelGbm <- train(diabetes~., data=PimaIndiansDiabetes, method="gbm", trControl=control, verbose=FALSE)
# train the SVM model
set.seed(7)
modelSvm <- train(diabetes~., data=PimaIndiansDiabetes, method="svmRadial", trControl=control)
# collect resamples
results <- resamples(list(LVQ=modelLvq, GBM=modelGbm, SVM=modelSvm))
# summarize the distributions
summary(results)
# boxplots of results
bwplot(results)
# dot plots of results
dotplot(results)
Vous trouverez ci-dessous le tableau des résultats de la synthèse des distributions pour chaque modèle.
Models: LVQ, GBM, SVM
Number of resamples: 30
Accuracy
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LVQ 0.5921 0.6623 0.6928 0.6935 0.7273 0.7922 0
GBM 0.7013 0.7403 0.7662 0.7665 0.7890 0.8442 0
SVM 0.6711 0.7403 0.7582 0.7651 0.7890 0.8961 0
Kappa
Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
LVQ 0.03125 0.1607 0.2819 0.2650 0.3845 0.5103 0
GBM 0.32690 0.3981 0.4638 0.4663 0.5213 0.6426 0
SVM 0.21870 0.3889 0.4167 0.4520 0.5003 0.7638 0
Si vous aviez besoin d’affirmer avec force quel algorithme était le meilleur, vous pouvez également utiliser des tests d’hypothèses statistiques pour montrer statistiquement que les différences dans les résultats étaient significatives.
Quelque chose comme un test t de Student si les résultats sont normalement distribués ou un test de somme de rangs si la distribution est inconnue.
Résumé
Dans cet article, vous avez découvert comment utiliser le package caret R pour comparer les résultats de plusieurs modèles différents, même après que leurs paramètres ont été optimisés. Vous avez vu trois façons de comparer les résultats : sous forme de tableau, de boîte à moustaches et de point-plot.
Les exemples de cet article sont autonomes et vous pouvez facilement les copier et coller dans votre propre projet et les adapter à votre problème.