Accéder au contenu principal

Multicollinéarité dans la régression : Un guide pour les scientifiques des données

Découvrez l'impact de la multicolinéarité sur les modèles de régression. Découvrez les techniques permettant de détecter la multicolinéarité et de maintenir la fiabilité du modèle. Apprenez à traiter la multicolinéarité avec des solutions pratiques.
Actualisé 14 févr. 2025  · 9 min de lecture

L'un des principaux défis dans l'élaboration d'un modèle de régression efficace est ce que nous appelons la multicolinéarité. Lamulticolinéarité survient lorsque deux ou plusieurs variables indépendantes d'un modèle sont fortement corrélées, ce qui conduit à des déductions statistiques peu fiables. Cela peut être un gros problème si vous devez interpréter avec précision vos coefficients de régression ou si vous devez tester la confiance que vous leur accordez.

Ici, je vous guiderai à travers les concepts clés de la multicollinéarité, comment la détecter et comment la traiter. Si vous êtes novice en matière de régression linéaire, lisez notre tutoriel, Régression linéaire simple : Everything You Need to Know comme point de départ, mais assurez-vous de poursuivre avec Multiple Linear Regression in R : Tutorial With Examples, qui enseigne la régression avec plus d'une variable indépendante, ce qui est l'endroit où la multicolinéarité peut apparaître. 

Qu'est-ce que la multicolinéarité ?

L'élaboration de modèles d'apprentissage automatique précis est une tâche difficile car de nombreux facteurs entrent en jeu. Les données doivent être d'une qualité, d'un volume, etc. décents. Vous devez ensuite élaborer le bon type d'algorithmes d'apprentissage automatique. Cependant, entre les deux, il y a une étape de préparation des données, qui n'est pas aussi glamour que la construction de modèles prédictifs, mais il est certain que cette étape est souvent le facteur décisif dans le processus du cycle de vie de l'apprentissage automatique. 

Lors de la préparation des données, nous veillons à la multicollinéarité, qui se produit lorsque les variables indépendantes d'un modèle de régression sont corrélées, c'est-à-dire qu'elles ne sont pas indépendantes les unes des autres. Ce n'est pas un bon signe pour le modèle, car la multicollinéarité fausse souvent l'estimation des coefficients de régression, gonfle les erreurs types et réduit ainsi la puissance statistique du modèle. Cela rend également difficile la détermination de l'importance des variables individuelles dans le modèle.

Types de multicolinéarité

La multicolinéarité peut prendre deux formes principales, chacune affectant la manière dont les variables indépendantes d'un modèle de régression interagissent et la fiabilité des estimations qui en résultent.

Multicollinéarité parfaite

La multicollinéarité parfaite se produit lorsque l'une des variables indépendantes d'un modèle de régression peut être exactement prédite à l'aide d'une ou de plusieurs autres variables indépendantes. Cela signifie qu'il existe une relation parfaite entre eux. 

Imaginez que vous ayez deux variables, X1 et X2, et qu'elles soient liées par l'équation : X1 = 2*X2 + 3 Cela signifie que le modèle de régression ne sera pas en mesure de séparer les effets de X1 et de X2, car ils racontent essentiellement la même histoire. En d'autres termes, une variable est une fonction linéaire parfaite de l'autre. 

Multicollinéarité imparfaite

Dans le cas de la multicollinéarité imparfaite, les variables sont fortement corrélées, mais pas de manière parfaite et univoque comme dans le cas de la multicollinéarité parfaite. Les variables peuvent présenter une forte corrélation, ce qui signifie que lorsqu'une variable change, l'autre a tendance à changer également, mais il ne s'agit pas d'une prédiction exacte. 

Dans cette situation, ce n'est pas que le modèle ne vous donnera pas de résultats. Le seul problème est que ces résultats peuvent être instables, ce qui signifie que même de petits changements dans les données peuvent entraîner des changements importants dans les coefficients estimés. Il est donc plus difficile d'interpréter de manière fiable l'importance de chaque variable.

Multicollinéarité structurelle

La multicollinéarité structurelle résulte de la manière dont le modèle a été construit, et non pas tant de leurs relations naturelles. Cela se produit souvent lorsque vous incluez des termes d'interaction ou des termes polynomiaux dans votre modèle.

Par exemple, si vous pensez que l'ampleur de l'effet d'une variable augmente avec l'augmentation d'une autre variable, vous pouvez envisager d'ajouter un terme d'interaction. Cependant, le problème est que si ces variables sont déjà quelque peu corrélées, l'ajout d'un terme d'interaction pourrait vraiment être exagéré et entraîner des problèmes de multicolinéarité.

Multicollinéarité dans la régression

La multicolinéarité affecte l'analyse de régression en créant des problèmes lorsque vous essayez d'estimer la relation entre les variables indépendantes (les prédicteurs) et la variable dépendante (le résultat). Plus précisément, la multicollinéarité augmente la variance des estimations des coefficients, ce qui les rend sensibles à des changements mineurs dans le modèle ou les données. 

Lorsque les coefficients deviennent instables, les erreurs standard deviennent plus importantes, ce qui, à son tour, peut entraîner des valeurs p non significatives, même lorsque les variables sont réellement importantes. Il est important de savoir que la multicollinéarité n'affecte pas le pouvoir prédictif global du modèle. Cela affecte cependant l'interprétation du modèle car notre modèle aura des erreurs gonflées et des estimations instables.

Comment détecter la multicolinéarité

La détection de la multicollinéarité nécessite plusieurs outils de diagnostic. Nous les explorerons à l'aide d'un sous-ensemble de données provenant du concours sur les prix des logements organisé par Kaggle. Le sous-ensemble de données que nous utiliserons est disponible sur ce dépôt GitHub. Chargeons et explorons l'ensemble de données à l'aide du code ci-dessous : 

import pandas as pd
import numpy as np
import seaborn as sns
from statsmodels.stats.outliers_influence import variance_inflation_factor

df = pd.read_csv('mc_df.csv')
df.head()

Matrice de corrélation

Une technique largement utilisée pour détecter la multicolinéarité est la matrice de corrélation, qui permet de visualiser la force des relations entre les variables. La matrice montre les coefficients de corrélation par paire entre les variables, ce qui indique la force de leur relation linéaire (les valeurs varient de -1 à 1). Une règle empirique que j'utilise est que les valeurs de corrélation absolues supérieures à 0,6 indiquent une forte multicolinéarité.

Étant donné que la multicollinéarité est détectée pour les variables indépendantes, nous devons supprimer la variable cible, SalePrice, de notre ensemble de données. Pour ce faire, utilisez le code ci-dessous.

multi_c_df = multi_c_df.drop('SalePrice', axis=1)

Nous sommes maintenant prêts pour l'analyse de corrélation. Le code ci-dessous calcule la matrice de corrélation pour le DataFrame multi_c_df. Après avoir calculé les corrélations, le code utilise la fonction Seaborn heatmap() pour représenter visuellement la matrice de corrélation sous la forme d'une carte thermique. L' argument annot=True ajoute les valeurs numériques de corrélation directement sur la carte thermique .

# Correlation matrix
correlation_matrix = multi_c_df.corr()

# Set up the matplotlib figure
plt.figure(figsize=(10, 6))

# Create a heatmap for the correlation matrix
sns.heatmap(correlation_matrix, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5)

# Title for the heatmap
plt.title("Correlation Heatmap", fontsize=16)

# Show the heatmap
plt.show()

Matrice de corrélation représentée par une carte thermique. Image par l'auteur

Le résultat ci-dessus montre qu'il existe une corrélation entre certaines des variables indépendantes. Par exemple, BedroomAbvGr et TotRmsAbvGrd ont une corrélation relativement élevée (0,68). De même, GarageCars et OverallQual ont une corrélation de 0,60, ce qui indique qu'ils sont également liés. Il y a donc des variables indépendantes qui ont une corrélation décente, ce qui suggère la présence d'une multicolinéarité pour certaines, voire toutes ces variables. 

À ce stade, il est très important de noter que la multicolinéarité peut survenir même s'il n'y a pas de corrélation évidente entre les variables, car une variable peut être corrélée avec une combinaison linéaire de plus d'une autre variable. C'est pourquoi il est important de prendre également en compte le facteur d'inflation de la variance, que nous aborderons plus loin.  

Facteur d'inflation de la variance (VIF)

Le facteur d'inflation de la variance (VIF) est l'une des techniques les plus courantes pour détecter la multicollinéarité. En termes simples, il s'agit d'une valeur numérique qui indique dans quelle mesure la variance d'un coefficient de régression est gonflée en raison de la multicolinéarité. Une valeur VIF supérieure à 5 indique une multicolinéarité modérée, tandis que des valeurs supérieures à 10 suggèrent une multicolinéarité sévère.

Explorons cela dans notre ensemble de données. Nous allons maintenant calculer la valeur VIF pour chacune de ces variables indépendantes. Cette tâche est réalisée dans le code ci-dessous avec lafonction variance_inflation_factor() .

# Calculate VIF for each numerical feature 
vif_data = pd.DataFrame()
vif_data["feature"] = multi_c_df.columns

# Calculate VIF and round to 4 decimal places
vif_data["VIF"] = [round(variance_inflation_factor(multi_c_df.values, i), 4) for i in range(df.shape[1])]

# Sort VIF values in descending order
vif_data = vif_data.sort_values(by="VIF", ascending=False)

# Display the VIF DataFrame
print(vif_data)

Valeur VIF pour les variables numériques. Image par l'auteur

Vous pouvez constater que plusieurs variables ont une valeur VIF supérieure à 10, ce qui indique la présence de multicolinéarité.

Indice d'état

L'indice de condition est un autre outil de diagnostic pour détecter la multicollinéarité, les valeurs supérieures à 10 indiquant une multicollinéarité modérée et les valeurs supérieures à 30 une multicollinéarité sévère. L'indice de condition fonctionne à l'adresse en vérifiant le degré de corrélation entre les variables indépendantes par l'examen des relations entre leurs valeurs propres.

Le code ci-dessous calcule l'indice de condition pour vérifier la multicollinéarité d'un modèle de régression. Il calcule d'abord les valeurs propres de la matrice de corrélation (qui montre les relations entre les variables). L'indice de condition est alors calculé en divisant la plus grande valeur propre par la plus petite. 

from numpy.linalg import eigvals

# Calculate the condition index
eigenvalues = eigvals(correlation_matrix)
condition_index = max(eigenvalues) / min(eigenvalues)

print(f'Condition Index: {condition_index}')

Dans notre cas, la valeur de l'indice de condition est de 13, ce qui indique une multicollinéarité modérée dans le modèle. Bien que ce niveau de multicolinéarité, selon l'indice de condition, ne soit pas grave, il peut néanmoins affecter la précision des estimations des coefficients de régression et rendre plus difficile la distinction des contributions individuelles des variables corrélées. Si vous souhaitez en savoir plus sur les valeurs propres, lisez notre article, Eigenvectors and Eigenvalues : Les points clés de la science des données.

Comment traiter la multicolinéarité

Pour gérer efficacement la multicolinéarité dans les modèles de régression, plusieurs techniques peuvent être appliquées. Ces méthodes permettent de s'assurer que le modèle reste précis et interprétable, même lorsque les variables indépendantes sont étroitement liées.

Suppression des prédicteurs redondants

L'une des façons les plus simples de traiter la multicolinéarité est de supprimer simplement l'une des variables fortement corrélées, souvent celle dont la valeur VIF est la plus élevée. Cette méthode est efficace, mais l'inconvénient est qu'elle peut entraîner la perte d'informations utiles si elle n'est pas effectuée avec soin.

Combinaison de variables

L'autre technique consiste, lorsque deux variables ou plus sont fortement corrélées, à les combiner en un seul prédicteur à l'aide de techniques telles que l'analyse en composantes principales (ACP). Cela permet de réduire la dimensionnalité du modèle tout en conservant les informations les plus importantes. L'inconvénient majeur est la perte d'interprétabilité, car il est difficile d'expliquer la science et les mathématiques qui sous-tendent l'ACP à un public non technique. 

Régression ridge et lasso

Pour les scientifiques des données, l'application de techniques de régularisation avec la régression ridge et lasso est une autre technique populaire pour traiter le problème de la multicolinéarité. Ces techniques de régularisation appliquent des pénalités au modèle de régression, réduisant les coefficients des variables corrélées et atténuant ainsi les effets de la multicolinéarité.

Erreurs courantes et bonnes pratiques

Lorsque l'on traite de la multicolinéarité, quelques erreurs courantes peuvent conduire à une mauvaise performance du modèle. Il est important d'être conscient de ces erreurs et de suivre les meilleures pratiques pour créer des modèles de régression plus fiables.

Mauvaise interprétation des valeurs VIF élevées

Lorsque vous constatez un facteur d'inflation de la variance (VIF) élevé pour une variable, il est tentant de supprimer immédiatement cette variable de votre modèle, en supposant qu'elle est à l'origine d'une multicolinéarité. Cependant, cela peut être une erreur car même si une variable a un VIF élevé, elle peut être très importante pour prédire le résultat. Par conséquent, si vous le supprimez sans vérifier son score d'importance, votre modèle risque d'être moins performant. La clé est d'évaluer soigneusement si la variable est essentielle avant de décider de la supprimer.

Une confiance excessive dans les matrices de corrélation

Une matrice de corrélation est une technique utile pour identifier l'ampleur et la direction de la relation entre les variables, mais le problème est qu'elle ne montre que les relations linéaires. Qu'en est-il des relations complexes et non linéaires ? Malheureusement, cela ne sera pas pris en compte dans la matrice. Le fait de dépendre uniquement d'une matrice de corrélation ne vous donnera donc pas une image complète. C'est pourquoi il est important d'utiliser d'autres mesures telles que le VIF et l'indice de condition pour obtenir une image plus complète.

Solutions pour remédier à la multicolinéarité

Outre les approches traditionnelles, plusieurs méthodes avancées sont également disponibles pour traiter le problème de la multicollinéarité. Certaines de ces techniques sont présentées ci-dessous.

Méthodes de sélection des caractéristiques

Les méthodes automatisées de sélection des caractéristiques, telles que l'élimination récursive des caractéristiques (RFE), peuvent constituer une bonne alternative. Ces méthodes analysent l'importance de chaque prédicteur et éliminent automatiquement ceux qui n'apportent pas une grande valeur ajoutée. Cela simplifie le processus et permet de réduire plus facilement la multicolinéarité sans avoir à décider manuellement des variables à supprimer.

Collecter davantage de données

L'augmentation de la taille de l'échantillon peut réduire la multicolinéarité en ajoutant plus de variation à l'ensemble de données, ce qui permet de distinguer plus facilement les contributions des différents prédicteurs. Une autre solution consiste donc simplement à collecter davantage de données. Lorsque la taille de l'ensemble de données augmente, les variables varient davantage, ce qui permet de distinguer plus facilement les effets des différents prédicteurs. Cela permet de réduire l'impact de la multicolinéarité.

Conclusion

Comprendre et traiter la multicolinéarité est essentiel pour construire des modèles de régression robustes et interprétables. En détectant la multicollinéarité à l'aide de techniques telles que le VIF, les matrices de corrélation et l'indice de condition, et en la résolvant à l'aide de méthodes telles que la régression lasso et ridge ou en supprimant les prédicteurs redondants, vous pouvez garantir des résultats de modèle fiables et significatifs. Vérifiez toujours la présence de multicolinéarité dans vos modèles de régression et appliquez les solutions appropriées pour maintenir l'intégrité de vos analyses.

Pour approfondir vos connaissances et vous rafraîchir la mémoire sur la manière d'effectuer une régression linéaire dans votre espace de travail préféré, vous pouvez consulter les sources suivantes :

Devenez un scientifique ML

Améliorez vos connaissances en Python pour devenir un scientifique spécialisé dans l'apprentissage automatique.
Commencez à apprendre gratuitement

Vikash Singh's photo
Author
Vikash Singh
LinkedIn

Professionnel chevronné de la science des données, de l'intelligence artificielle, de l'analyse et de la stratégie des données.

Questions sur la multicolinéarité

Qu'est-ce que la multicollinéarité ?

On parle de multicolinéarité lorsque deux ou plusieurs variables indépendantes d'un modèle de régression sont fortement corrélées.

Qu'est-ce que le facteur d'inflation de la variance (VIF) ?

Le VIF mesure l'augmentation de la variance d'un coefficient de régression en raison de la multicolinéarité. Un VIF élevé signifie qu'une variable est fortement liée à d'autres, ce qui peut rendre le modèle instable et moins fiable.

Comment la multicolinéarité affecte-t-elle mon modèle de régression ?

La multicolinéarité gonfle les erreurs standard des coefficients de régression, ce qui rend plus difficile l'identification des variables significatives.

Quelle est la différence entre une multicolinéarité parfaite et une multicolinéarité imparfaite ?

On parle de multicolinéarité parfaite lorsqu'une variable est une combinaison linéaire exacte d'une autre, ce qui rend impossible le calcul des coefficients du modèle. En revanche, la multicollinéarité imparfaite se produit lorsque les variables sont fortement corrélées, mais pas exactement. Cependant, elle peut également conduire à des estimations de modèles instables.

Comment l'indice de condition permet-il de détecter la multicolinéarité ?

Si l'indice de condition est supérieur à 10, cela indique une multicolinéarité modérée, mais s'il est supérieur à 30, cela indique une multicolinéarité sérieuse.

Sujets

Apprenez avec DataCamp

Certification disponible

cours

Introduction à la régression avec statsmodels en Python

4 hr
42.6K
Prédisez les prix de l'immobilier et le taux de clics publicitaires en mettant en œuvre, en analysant et en interprétant l'analyse de régression avec statsmodels en Python.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow