Découvrez tout sur la régression logistique : comment elle diffère de la régression linéaire, comment ajuster et évaluer ces modèles en R avec la fonction glm() et plus encore !
La régression logistique est un modèle simple mais puissant pour prédire des résultats binaires. Il s'agit de savoir si quelque chose va se produire ou non. Il s'agit d'un type de modèle de classification pour l'apprentissage automatique supervisé.
La régression logistique est utilisée dans presque tous les secteurs - marketing, santé, sciences sociales, etc. - et constitue un élément essentiel de la boîte à outils de tout scientifique des données.
Pour tirer le meilleur parti de ce tutoriel, vous devez avoir une connaissance de base de R. Il est également utile de connaître un type de modèle apparenté, la régression linéaire. Lisez le tutoriel sur la régression linéaire dans R pour en savoir plus à ce sujet.
Aperçu de la régression logistique
Supposons que vous souhaitiez prédire si la journée sera ensoleillée ou non. Il y a deux résultats possibles : "ensoleillé" ou "pas ensoleillé". La variable de résultat est également appelée "variable cible" ou "variable dépendante".
De nombreuses variables peuvent influencer le résultat, comme la température de la veille, la pression atmosphérique, etc. Les variables influentes sont appelées caractéristiques, variables indépendantes ou prédicteurs - tous ces termes signifient la même chose.
D'autres exemples permettent de savoir si un client achètera votre produit ou non, si un courriel est un spam ou non, si une transaction est frauduleuse ou non, et si un médicament guérira un patient ou non.
Comment fonctionne la régression logistique ?
La régression logistique trouve la meilleure adéquation possible entre les variables prédictives et les variables cibles afin de prédire la probabilité que la variable cible appartienne à une classe/catégorie étiquetée.
La régression linéaire tente de trouver la meilleure ligne droite qui prédit le résultat à partir des caractéristiques. Il forme une équation du type
y_predictions = intercept + slope * featuresPropulsé par
et utilise l'optimisation pour essayer de trouver les meilleures valeurs possibles de l'ordonnée à l'origine et de la pente.
La régression logistique fonctionne de manière similaire, sauf qu'elle effectue une régression sur les probabilités que le résultat soit une catégorie. Il utilise une fonction sigmoïde (la fonction de distribution cumulative de la distribution logistique) pour transformer le côté droit de cette équation.
y_predictions = logistic_cdf(intercept + slope * features)Propulsé par
Là encore, le modèle utilise l'optimisation pour essayer de trouver les meilleures valeurs possibles de l'ordonnée à l'origine et de la pente.
L'algorithme de régression logistique étant très similaire à l'équation de régression linéaire, il fait partie d'une famille de modèles appelés "modèles linéaires généralisés". C'est pourquoi la régression logistique porte le nom de "régression", même s'il s'agit d'un modèle de classification.
La fonction sigmoïde ressemble à une courbe en forme de S dans l'image ci-dessous. Il prend les valeurs d'entrée numérotées réelles et les convertit entre 0 et 1 (en les réduisant des deux côtés, c'est-à-dire en ramenant les valeurs négatives à 0 et les valeurs positives très élevées à 1). En outre, le seuil de coupure est le facteur de décision superposé qui répartit les résultats en catégories ou classes lorsqu'il est appliqué en plus de ces probabilités.
Les concepts complexes sont mieux compris lorsqu'ils sont expliqués à l'aide d'exemples. Prenons donc une analogie pour expliquer le fonctionnement de l'algorithme LR. Supposons que le modèle LR soit chargé d'identifier une transaction frauduleuse en examinant plusieurs indicateurs de fraude, tels que la localisation de l'utilisateur, le montant de l'achat, l'adresse IP, etc. L'objectif est de déterminer la probabilité qu'une transaction donnée soit légitime ou frauduleuse, ce qui constitue la variable cible.
Le modèle attribue des poids aux variables prédictives en fonction de leur impact sur la variable cible et les combine pour calculer le score normalisé ou la probabilité de fraude.
L'ensemble de données
Nous utiliserons un ensemble de données relatives à une campagne de marketing direct menée par une institution bancaire portugaise au moyen d'appels téléphoniques. La campagne vise à vendre des souscriptions d'un dépôt bancaire à terme représenté par la variable y (souscription ou non). L'objectif du modèle de régression logistique est de prédire si un client achètera ou non un abonnement en fonction des variables prédictives, c'est-à-dire des attributs du client, tels que les informations démographiques.
Le dictionnaire de données pour cet ensemble de données et de nombreux autres ensembles de données utiles peut être consulté sur le site web du DataCamp.
nombre de fois où le client a été contacté au cours de cette campagne
numérique, inclut le dernier contact
jours
le nombre de jours écoulés depuis que le client a été contacté pour la dernière fois dans le cadre d'une campagne précédente
numérique ; 999 signifie que le client n'a pas été contacté auparavant
précédent
nombre de contacts effectués avant cette campagne et pour ce client
numérique
poutcome
le résultat de la campagne de marketing précédente
catégorique : "échec", "inexistant", "succès"
emp.var.rate
taux de variation de l'emploi - indicateur trimestriel
numérique
cons.price.idx
indice des prix à la consommation - indicateur mensuel
numérique
cons.conf.idx
indice de confiance des consommateurs - indicateur mensuel
numérique
euribor3m
taux euribor 3 mois - indicateur journalier
numérique
nr.employés
nombre de salariés - indicateur trimestriel
numérique
y
le client a-t-il souscrit un dépôt à terme ?
binaire : "oui", "non"
Processus de régression logistique
Le flux de travail complet de l'apprentissage automatique est présenté dans l'infographie Guide du débutant sur le flux de travail de l'apprentissage automatique. Nous nous concentrerons ici sur les étapes de préparation des données et de modélisation. En particulier, nous couvrirons les points suivants
Diviser les données en ensembles de formation et de test
Ajustement (entraînement) du modèle
Faire des prévisions
Évaluation de la performance du modèle
Réglage des hyperparamètres
Paquets de régression logistique
En R, il existe deux flux de travail populaires pour modéliser la régression logistique : base-R et tidymodels.
Le modèle de flux de travail base-R est plus simple et comprend des fonctions telles que glm() et summary() pour ajuster le modèle et générer un résumé du modèle.
Le flux de travail tidymodels facilite la gestion de plusieurs modèles et offre une interface cohérente pour travailler avec différents types de modèles.
Ce tutoriel utilise le flux de travail tidymodels.
Visualiser les données
Importez le paquet tidymodels en appelant la fonction library().
L'ensemble des données se trouve dans un fichier CSV avec un formatage européen (virgules pour les décimales et points-virgules pour les séparateurs). Nous le lirons avec read_csv2() du paquet readr.
Convertissez la variable cible, y, en une variable factorielle pour la modélisation.
À l'aide de la fonction ggplot(), tracez le nombre de chaque profession en fonction de y.
library(readr)
library(tidymodels)# Read the dataset and convert the target variable to a factor
bank_df <- read_csv2("bank-full.csv")
bank_df$y = as.factor(bank_df$y)# Plot job occupation against the target variable
ggplot(bank_df, aes(job, fill = y))+
geom_bar()+
coord_flip()Propulsé par
Diviser les données
Divisons l'ensemble de données en un ensemble de formation pour l'ajustement du modèle et un ensemble de test pour l'évaluation du modèle afin de s'assurer que le modèle ainsi formé fonctionne sur un ensemble de données inédit.
La division des données en ensembles de formation et de test peut être effectuée à l'aide de la fonction initial_split() et de l'attribut prop définissant la proportion de données de formation.
# Split data into train and test
set.seed(421)
split <- initial_split(bank_df, prop =0.8, strata = y)
train <- split %>%
training()
test <- split %>%
testing()Propulsé par
Ajustement et évaluation du modèle
Pour créer le modèle, déclarez un modèle logistic_reg(). Cela nécessite des arguments de mélange et de pénalité qui contrôlent le degré de régularisation. Une valeur de mélange de 1 indique un modèle lasso et 0 indique une régression ridge. Les valeurs intermédiaires sont également autorisées. L'argument de la pénalité indique la force de la régularisation.
Notez que vous devez transmettre des nombres à virgule flottante "double" au mélange et à la pénalité
Définissez le "moteur" (le logiciel dorsal utilisé pour effectuer les calculs) à l'aide de la fonction set_engine(). Plusieurs choix s'offrent à vous : Le moteur par défaut est "glm", qui effectue une régression logistique classique. Cette méthode est souvent privilégiée par les statisticiens car elle permet d'obtenir des valeurs p pour chaque coefficient, ce qui facilite la compréhension de l'importance de chaque coefficient.
Nous utiliserons ici le moteur "glmnet". Cette méthode est privilégiée par les spécialistes de l'apprentissage automatique car elle permet une régularisation qui peut améliorer les prédictions, en particulier si vous disposez d'un grand nombre de caractéristiques. (Dans Python, le paquet scikit-learn inclut par défaut une certaine régularisation dans la régression logistique).
Appelez la méthode fit() pour entraîner le modèle sur les données d'entraînement créées à l'étape précédente. Cette fonction prend une formule comme premier argument. Dans la partie gauche de la formule, vous utilisez la variable cible (dans ce cas, y). Dans la partie droite, vous pouvez inclure toutes les caractéristiques que vous souhaitez. Un point signifie "utiliser toutes les variables qui n'ont pas été écrites dans la partie gauche de la formule". Pour plus d'informations sur l'écriture de formules, lisez le didacticiel sur les formules R.
# Train a logistic regression model
model <- logistic_reg(mixture = double(1), penalty = double(1))%>%
set_engine("glmnet")%>%
set_mode("classification")%>%
fit(y ~ ., data = train)# Model summary
tidy(model)Propulsé par
La sortie est présentée ci-dessous, la colonne "estimation" représentant les coefficients du prédicteur.
# A tibble: 43 × 3
term estimate penalty
<chr><dbl><dbl>1(Intercept)-2.5902 age -0.00047703 jobblue-collar -0.18304 jobentrepreneur -0.20605 jobhousemaid -0.27006 jobmanagement -0.019007 jobretired 0.36008 jobself-employed -0.10109 jobservices -0.105010 jobstudent 0.4150# ... with 33 more rows# ℹ Use `print(n = ...)` to see more rowsPropulsé par
Faire des prévisions
Faites des prédictions sur les données de test à l'aide de la fonction predict(). Vous avez le choix du type de prévisions.
type = "class" renvoie la valeur cible la plus probable pour chaque observation. Dans ce cas, le modèle renvoie un "oui" ou un "non" selon qu'il estime que le client est susceptible de souscrire à un dépôt à terme ou non.
type = "prob" renvoie la probabilité de chaque valeur cible pour chaque observation. Ici, il renverra la probabilité d'un "oui" et la probabilité d'un "non" (qui s'additionnent à un pour chaque observation).
# Class Predictions
pred_class <- predict(model,
new_data = test,
type ="class")# Class Probabilities
pred_proba <- predict(model,
new_data = test,
type ="prob")Propulsé par
Évaluez le modèle à l'aide de la fonction accuracy() avec l'argument de vérité y et estimez que la valeur de l'argument correspond aux prédictions de l'étape précédente.
results <- test %>%
select(y)%>%
bind_cols(pred_class, pred_proba)
accuracy(results, truth = y, estimate = .pred_class)Propulsé par
Réglage des hyperparamètres
Plutôt que de transmettre des valeurs spécifiques aux arguments de mélange et de pénalité (les "hyperparamètres"), vous pouvez optimiser le pouvoir prédictif du modèle en le réglant.
L'idée est d'exécuter le modèle un grand nombre de fois avec différentes valeurs des hyperparamètres et de voir lequel donne les meilleures prédictions.
Dans la fonction logistic_reg(), définissez les arguments de mélange et de pénalité pour un appel à tune().
Utilisez la fonction grid_regular() pour définir une grille de valeurs possibles pour le mélange et la pénalité.
La fonction workflow() crée un objet pour stocker les détails du modèle, ce qui est nécessaire lorsque vous l'exécutez plusieurs fois.
Choisissez le meilleur modèle à l'aide de la fonction select_best(). Vous pouvez choisir parmi une série de mesures qui définissent la "meilleure". Nous utiliserons ici la métrique "receiver operating characteristic area under the curve" (ROC AUC).
# Define the logistic regression model with penalty and mixture hyperparameters
log_reg <- logistic_reg(mixture = tune(), penalty = tune(), engine ="glmnet")# Define the grid search for the hyperparameters
grid <- grid_regular(mixture(), penalty(), levels = c(mixture =4, penalty =3))# Define the workflow for the model
log_reg_wf <- workflow()%>%
add_model(log_reg)%>%
add_formula(y ~ .)# Define the resampling method for the grid search
folds <- vfold_cv(train, v =5)# Tune the hyperparameters using the grid search
log_reg_tuned <- tune_grid(
log_reg_wf,
resamples = folds,
grid = grid,
control = control_grid(save_pred =TRUE))
select_best(log_reg_tuned, metric ="roc_auc")Propulsé par
# A tibble: 1 × 3
penalty mixture .config
<dbl><dbl><chr>10.00000000010 Preprocessor1_Model01Propulsé par
Plus de mesures d'évaluation
Utiliser les meilleurs hyperparamètres :
Entraînons un modèle de régression logistique
Utilisez-le pour générer des prédictions sur l'ensemble de test
Créez une matrice de confusion en utilisant les valeurs réelles et les estimations.
# Fit the model using the optimal hyperparameters
log_reg_final <- logistic_reg(penalty =0.0000000001, mixture =0)%>%
set_engine("glmnet")%>%
set_mode("classification")%>%
fit(y~., data = train)# Evaluate the model performance on the testing set
pred_class <- predict(log_reg_final,
new_data = test,
type ="class")
results <- test %>%
select(y)%>%
bind_cols(pred_class, pred_proba)# Create confusion matrix
conf_mat(results, truth = y,
estimate = .pred_class)Propulsé par
Truth
Prediction no yes
no 7838738
yes 147320Propulsé par
Vous pouvez calculer la précision (valeur prédictive positive, nombre de vrais positifs divisé par le nombre de positifs prédits) à l'aide de la fonction precision().
precision(results, truth = y,
estimate = .pred_class)Propulsé par
# A tibble: 1 × 3
.metric .estimator .estimate
<chr><chr><dbl>1 precision binary 0.914Propulsé par
De même, vous pouvez calculer le rappel (sensibilité, nombre de vrais positifs divisé par le nombre de vrais positifs) à l'aide de la fonction recall().
recall(results, truth = y,
estimate = .pred_class)Propulsé par
# A tibble: 1 × 3
.metric .estimator .estimate
<chr><chr><dbl>1 recall binary 0.982Propulsé par
Comprenons les variables qui influencent la décision d'achat d'un abonnement. Dans un scénario de régression logistique, les coefficients déterminent le degré de sensibilité de la variable cible aux prédicteurs individuels. Plus la valeur des coefficients est élevée, plus leur importance est grande. Trier les variables par ordre décroissant de la valeur absolue de leurs coefficients et n'afficher que les coefficients dont la valeur absolue est supérieure à 0,5.
coeff <- tidy(log_reg_final)%>%
arrange(desc(abs(estimate)))%>%
filter(abs(estimate)>0.5)Propulsé par
# A tibble: 10 × 3
term estimate penalty
<chr><dbl><dbl>1(Intercept)-2.590.00000000012 poutcomesuccess 2.080.00000000013 monthmar 1.620.00000000014 monthoct 1.080.00000000015 monthsep 1.030.00000000016 contactunknown -1.010.00000000017 monthdec 0.8610.00000000018 monthjan -0.8200.00000000019 housingyes -0.5500.000000000110 monthnov -0.5170.0000000001Propulsé par
Tracez l'importance des caractéristiques à l'aide de la fonction ggplot().
ggplot(coeff, aes(x = term, y = estimate, fill = term))+ geom_col()+ coord_flip()Propulsé par
Passez au niveau supérieur
Ainsi, nous sommes arrivés à la fin de ce tutoriel qui a démontré comment entraîner et évaluer un modèle de régression logistique à l'aide du paquetage tidymodels. Il a également abordé la manière d'interpréter les résultats du modèle et de les représenter graphiquement, comme l'importance des caractéristiques.
Gagnez en confiance dans la régression par les MCO en maîtrisant ses fondements théoriques. Découvrez comment réaliser des mises en œuvre simples dans Excel, R et Python.
Découvrez les principales différences, les applications et la mise en œuvre de la normalisation et de la standardisation dans le prétraitement des données pour l’apprentissage automatique.
Découvrez les fonctions lambda Python, leur utilité et quand les utiliser. Comprend des exemples pratiques et des bonnes pratiques pour une mise en œuvre efficace.
Découvrez les fonctions et méthodes des listes Python. Veuillez suivre les exemples de code pour list() et d'autres fonctions et méthodes Python dès maintenant.
Poursuivez votre parcours pour devenir un ninja de R en vous familiarisant avec les instructions conditionnelles, les boucles et les fonctions vectorielles.
La régression logistique est un modèle simple mais puissant pour prédire des résultats binaires. Il s'agit de savoir si quelque chose va se produire ou non. Il s'agit d'un type de modèle de classification pour l'apprentissage automatique supervisé.
La régression logistique est utilisée dans presque tous les secteurs - marketing, santé, sciences sociales, etc. - et constitue un élément essentiel de la boîte à outils de tout scientifique des données.
Pour tirer le meilleur parti de ce tutoriel, vous devez avoir une connaissance de base de R. Il est également utile de connaître un type de modèle apparenté, la régression linéaire. Lisez le tutoriel sur la régression linéaire dans R pour en savoir plus à ce sujet.
Aperçu de la régression logistique
Supposons que vous souhaitiez prédire si la journée sera ensoleillée ou non. Il y a deux résultats possibles : "ensoleillé" ou "pas ensoleillé". La variable de résultat est également appelée "variable cible" ou "variable dépendante".
De nombreuses variables peuvent influencer le résultat, comme la température de la veille, la pression atmosphérique, etc. Les variables influentes sont appelées caractéristiques, variables indépendantes ou prédicteurs - tous ces termes signifient la même chose.
D'autres exemples permettent de savoir si un client achètera votre produit ou non, si un courriel est un spam ou non, si une transaction est frauduleuse ou non, et si un médicament guérira un patient ou non.
Comment fonctionne la régression logistique ?
La régression logistique trouve la meilleure adéquation possible entre les variables prédictives et les variables cibles afin de prédire la probabilité que la variable cible appartienne à une classe/catégorie étiquetée.
La régression linéaire tente de trouver la meilleure ligne droite qui prédit le résultat à partir des caractéristiques. Il forme une équation du type
et utilise l'optimisation pour essayer de trouver les meilleures valeurs possibles de l'ordonnée à l'origine et de la pente.
La régression logistique fonctionne de manière similaire, sauf qu'elle effectue une régression sur les probabilités que le résultat soit une catégorie. Il utilise une fonction sigmoïde (la fonction de distribution cumulative de la distribution logistique) pour transformer le côté droit de cette équation.
Là encore, le modèle utilise l'optimisation pour essayer de trouver les meilleures valeurs possibles de l'ordonnée à l'origine et de la pente.
L'algorithme de régression logistique étant très similaire à l'équation de régression linéaire, il fait partie d'une famille de modèles appelés "modèles linéaires généralisés". C'est pourquoi la régression logistique porte le nom de "régression", même s'il s'agit d'un modèle de classification.
La fonction sigmoïde ressemble à une courbe en forme de S dans l'image ci-dessous. Il prend les valeurs d'entrée numérotées réelles et les convertit entre 0 et 1 (en les réduisant des deux côtés, c'est-à-dire en ramenant les valeurs négatives à 0 et les valeurs positives très élevées à 1). En outre, le seuil de coupure est le facteur de décision superposé qui répartit les résultats en catégories ou classes lorsqu'il est appliqué en plus de ces probabilités.
Les concepts complexes sont mieux compris lorsqu'ils sont expliqués à l'aide d'exemples. Prenons donc une analogie pour expliquer le fonctionnement de l'algorithme LR. Supposons que le modèle LR soit chargé d'identifier une transaction frauduleuse en examinant plusieurs indicateurs de fraude, tels que la localisation de l'utilisateur, le montant de l'achat, l'adresse IP, etc. L'objectif est de déterminer la probabilité qu'une transaction donnée soit légitime ou frauduleuse, ce qui constitue la variable cible.
Le modèle attribue des poids aux variables prédictives en fonction de leur impact sur la variable cible et les combine pour calculer le score normalisé ou la probabilité de fraude.
L'ensemble de données
Nous utiliserons un ensemble de données relatives à une campagne de marketing direct menée par une institution bancaire portugaise au moyen d'appels téléphoniques. La campagne vise à vendre des souscriptions d'un dépôt bancaire à terme représenté par la variable y (souscription ou non). L'objectif du modèle de régression logistique est de prédire si un client achètera ou non un abonnement en fonction des variables prédictives, c'est-à-dire des attributs du client, tels que les informations démographiques.
Le dictionnaire de données pour cet ensemble de données et de nombreux autres ensembles de données utiles peut être consulté sur le site web du DataCamp.
Variable
Description
Détails
age
âge du client
job
le type d'emploi
catégorique : "admin.", " ouvrier ", " entrepreneur ", " femme de ménage ", " gestion ", " retraité ", " indépendant ", " services ", " étudiant ", " technicien ", " chômeur ", " inconnu "
marital
l'état civil
catégorique : "divorcé", "marié", "célibataire", "inconnu" ; note : "divorcé" signifie divorcé ou veuf
l'éducation
le plus haut degré de satisfaction du client
catégorique : "basic.4y", "basic.6y", "basic.9y", "high.school", "illiterate", "professional.course", "university.degree", "unknown"
par défaut
a un crédit en défaut ?
catégorique : "non", "oui", "inconnu"
logement
dispose d'un prêt au logement ?
catégorique : "non", "oui", "inconnu"
loan
a un prêt personnel ?
catégorique : "non", "oui", "inconnu"
contact
contact type de communication
catégorique : "cellulaire", "téléphone"
mois
dernier contact mois de l'année
catégorique : "jan", "feb", "mar", ..., "nov", "dec"
day_of_week
dernier jour de contact de la semaine
catégorique : "mon", "tue", "wed", "thu", "fri"
campagne
nombre de fois où le client a été contacté au cours de cette campagne
numérique, inclut le dernier contact
jours
le nombre de jours écoulés depuis que le client a été contacté pour la dernière fois dans le cadre d'une campagne précédente
numérique ; 999 signifie que le client n'a pas été contacté auparavant
précédent
nombre de contacts effectués avant cette campagne et pour ce client
numérique
poutcome
le résultat de la campagne de marketing précédente
catégorique : "échec", "inexistant", "succès"
emp.var.rate
taux de variation de l'emploi - indicateur trimestriel
numérique
cons.price.idx
indice des prix à la consommation - indicateur mensuel
numérique
cons.conf.idx
indice de confiance des consommateurs - indicateur mensuel
numérique
euribor3m
taux euribor 3 mois - indicateur journalier
numérique
nr.employés
nombre de salariés - indicateur trimestriel
numérique
y
le client a-t-il souscrit un dépôt à terme ?
binaire : "oui", "non"
Processus de régression logistique
Le flux de travail complet de l'apprentissage automatique est présenté dans l'infographie Guide du débutant sur le flux de travail de l'apprentissage automatique. Nous nous concentrerons ici sur les étapes de préparation des données et de modélisation. En particulier, nous couvrirons les points suivants
Paquets de régression logistique
En R, il existe deux flux de travail populaires pour modéliser la régression logistique : base-R et tidymodels.
Le modèle de flux de travail base-R est plus simple et comprend des fonctions telles que glm() et summary() pour ajuster le modèle et générer un résumé du modèle.
Le flux de travail tidymodels facilite la gestion de plusieurs modèles et offre une interface cohérente pour travailler avec différents types de modèles.
Ce tutoriel utilise le flux de travail tidymodels.
Visualiser les données
Importez le paquet tidymodels en appelant la fonction library().
L'ensemble des données se trouve dans un fichier CSV avec un formatage européen (virgules pour les décimales et points-virgules pour les séparateurs). Nous le lirons avec read_csv2() du paquet readr.
Convertissez la variable cible, y, en une variable factorielle pour la modélisation.
À l'aide de la fonction ggplot(), tracez le nombre de chaque profession en fonction de y.
Diviser les données
Divisons l'ensemble de données en un ensemble de formation pour l'ajustement du modèle et un ensemble de test pour l'évaluation du modèle afin de s'assurer que le modèle ainsi formé fonctionne sur un ensemble de données inédit.
La division des données en ensembles de formation et de test peut être effectuée à l'aide de la fonction initial_split() et de l'attribut prop définissant la proportion de données de formation.
Ajustement et évaluation du modèle
Pour créer le modèle, déclarez un modèle logistic_reg(). Cela nécessite des arguments de mélange et de pénalité qui contrôlent le degré de régularisation. Une valeur de mélange de 1 indique un modèle lasso et 0 indique une régression ridge. Les valeurs intermédiaires sont également autorisées. L'argument de la pénalité indique la force de la régularisation.
Notez que vous devez transmettre des nombres à virgule flottante "double" au mélange et à la pénalité
Définissez le "moteur" (le logiciel dorsal utilisé pour effectuer les calculs) à l'aide de la fonction set_engine(). Plusieurs choix s'offrent à vous : Le moteur par défaut est "glm", qui effectue une régression logistique classique. Cette méthode est souvent privilégiée par les statisticiens car elle permet d'obtenir des valeurs p pour chaque coefficient, ce qui facilite la compréhension de l'importance de chaque coefficient.
Nous utiliserons ici le moteur "glmnet". Cette méthode est privilégiée par les spécialistes de l'apprentissage automatique car elle permet une régularisation qui peut améliorer les prédictions, en particulier si vous disposez d'un grand nombre de caractéristiques. (Dans Python, le paquet scikit-learn inclut par défaut une certaine régularisation dans la régression logistique).
Appelez la méthode fit() pour entraîner le modèle sur les données d'entraînement créées à l'étape précédente. Cette fonction prend une formule comme premier argument. Dans la partie gauche de la formule, vous utilisez la variable cible (dans ce cas, y). Dans la partie droite, vous pouvez inclure toutes les caractéristiques que vous souhaitez. Un point signifie "utiliser toutes les variables qui n'ont pas été écrites dans la partie gauche de la formule". Pour plus d'informations sur l'écriture de formules, lisez le didacticiel sur les formules R.
La sortie est présentée ci-dessous, la colonne "estimation" représentant les coefficients du prédicteur.
Faire des prévisions
Faites des prédictions sur les données de test à l'aide de la fonction predict(). Vous avez le choix du type de prévisions.
Évaluez le modèle à l'aide de la fonction accuracy() avec l'argument de vérité y et estimez que la valeur de l'argument correspond aux prédictions de l'étape précédente.
Réglage des hyperparamètres
Plutôt que de transmettre des valeurs spécifiques aux arguments de mélange et de pénalité (les "hyperparamètres"), vous pouvez optimiser le pouvoir prédictif du modèle en le réglant.
L'idée est d'exécuter le modèle un grand nombre de fois avec différentes valeurs des hyperparamètres et de voir lequel donne les meilleures prédictions.
Plus de mesures d'évaluation
Utiliser les meilleurs hyperparamètres :
Vous pouvez calculer la précision (valeur prédictive positive, nombre de vrais positifs divisé par le nombre de positifs prédits) à l'aide de la fonction precision().
De même, vous pouvez calculer le rappel (sensibilité, nombre de vrais positifs divisé par le nombre de vrais positifs) à l'aide de la fonction recall().
Comprenons les variables qui influencent la décision d'achat d'un abonnement. Dans un scénario de régression logistique, les coefficients déterminent le degré de sensibilité de la variable cible aux prédicteurs individuels. Plus la valeur des coefficients est élevée, plus leur importance est grande. Trier les variables par ordre décroissant de la valeur absolue de leurs coefficients et n'afficher que les coefficients dont la valeur absolue est supérieure à 0,5.
Tracez l'importance des caractéristiques à l'aide de la fonction ggplot().
Passez au niveau supérieur
Ainsi, nous sommes arrivés à la fin de ce tutoriel qui a démontré comment entraîner et évaluer un modèle de régression logistique à l'aide du paquetage tidymodels. Il a également abordé la manière d'interpréter les résultats du modèle et de les représenter graphiquement, comme l'importance des caractéristiques.
Si vous souhaitez en savoir plus sur la modélisation de modèles d'IA à l'aide de tidymodels, consultez le cours Modeling with tidymodels in R (Modélisation avec tidymodels en R). Pour la modélisation à l'aide de l'approche de base R, consultez les cours Introduction à la régression en R, Régression intermédiaire en R et Modèles linéaires généralisés en R.