Régression polynomiale, Régression polynomiale, Régression polynomiale, Régression polynomiale, Régression polynomiale
Introduction
La régression polynomiale est une extension de la régression linéaire qui permet de modéliser des relations non linéaires entre une variable cible continue et une ou plusieurs variables explicatives.
Contrairement à la régression linéaire qui suppose une relation linéaire, la régression polynomiale intègre des puissances des variables pour ajuster une courbe plus flexible aux données.
Concept et formule
La régression polynomiale repose sur la transformation des variables explicatives en termes polynomiaux.
Par exemple, pour une variable xxx, on considère : y=β0+β1x+β2×2+β3×3+⋯+βdxd+εy = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \cdots + \beta_d x^d + \varepsilony=β0+β1x+β2x2+β3x3+⋯+βdxd+ε
où ddd est le degré du polynôme choisi.
Comment ça marche ?
- On crée de nouvelles variables à partir des puissances de la variable originale.
- On applique ensuite une régression linéaire classique sur ces variables transformées.
- Le modèle ajuste une courbe polynomiale au lieu d’une droite.
Avantages
- Permet de modéliser des relations complexes non linéaires.
- Facile à implémenter avec les bibliothèques de machine learning.
- Interprétable via les coefficients des termes polynomiaux.
Inconvénients
- Risque élevé de surapprentissage (overfitting) avec des degrés trop élevés.
- Sensible au bruit dans les données.
- Difficulté à interpréter les coefficients pour des degrés élevés.
- Nécessite souvent une normalisation des variables.
Exemple en Python avec scikit-learn
pythonCopierModifierfrom sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# Données
X = df[['feature']] # variable explicative
y = df['target'] # variable cible
# Séparation train/test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Modèle polynômial de degré 3
degree = 3
model = make_pipeline(PolynomialFeatures(degree), LinearRegression())
model.fit(X_train, y_train)
# Prédictions
y_pred = model.predict(X_test)
# Évaluation
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"MSE : {mse:.2f}")
print(f"R2 : {r2:.2f}")
Choix du degré du polynôme
Le degré ddd détermine la complexité du modèle :
- Degré 1 : régression linéaire classique.
- Degré trop faible : sous-apprentissage (underfitting).
- Degré trop élevé : sur-apprentissage, mauvaise généralisation.
Utiliser des techniques comme la validation croisée aide à choisir un degré optimal.
Applications
- Modélisation de phénomènes physiques ou biologiques avec relations non linéaires.
- Analyse des tendances temporelles non linéaires.
- Prédiction des ventes, prix, ou variables économiques complexes.
Conclusion
La régression polynomiale est une technique simple et puissante pour capturer des relations non linéaires dans les données. En comprenant bien son fonctionnement et ses limites, elle constitue une étape importante dans la boîte à outils du data scientist.
Introduction
La régression polynomiale est une extension de la régression linéaire qui permet de modéliser des relations non linéaires entre une variable cible continue et une ou plusieurs variables explicatives.
Contrairement à la régression linéaire qui suppose une relation linéaire, la régression polynomiale intègre des puissances des variables pour ajuster une courbe plus flexible aux données.
Concept et formule
La régression polynomiale repose sur la transformation des variables explicatives en termes polynomiaux.
Par exemple, pour une variable xxx, on considère : y=β0+β1x+β2×2+β3×3+⋯+βdxd+εy = \beta_0 + \beta_1 x + \beta_2 x^2 + \beta_3 x^3 + \cdots + \beta_d x^d + \varepsilony=β0+β1x+β2x2+β3x3+⋯+βdxd+ε
où ddd est le degré du polynôme choisi.
Comment ça marche ?
- On crée de nouvelles variables à partir des puissances de la variable originale.
- On applique ensuite une régression linéaire classique sur ces variables transformées.
- Le modèle ajuste une courbe polynomiale au lieu d’une droite.
Avantages
- Permet de modéliser des relations complexes non linéaires.
- Facile à implémenter avec les bibliothèques de machine learning.
- Interprétable via les coefficients des termes polynomiaux.
Inconvénients
- Risque élevé de surapprentissage (overfitting) avec des degrés trop élevés.
- Sensible au bruit dans les données.
- Difficulté à interpréter les coefficients pour des degrés élevés.
- Nécessite souvent une normalisation des variables.
Exemple en Python avec scikit-learn
pythonCopierModifierfrom sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# Données
X = df[['feature']] # variable explicative
y = df['target'] # variable cible
# Séparation train/test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Modèle polynômial de degré 3
degree = 3
model = make_pipeline(PolynomialFeatures(degree), LinearRegression())
model.fit(X_train, y_train)
# Prédictions
y_pred = model.predict(X_test)
# Évaluation
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"MSE : {mse:.2f}")
print(f"R2 : {r2:.2f}")
Choix du degré du polynôme
Le degré ddd détermine la complexité du modèle :
- Degré 1 : régression linéaire classique.
- Degré trop faible : sous-apprentissage (underfitting).
- Degré trop élevé : sur-apprentissage, mauvaise généralisation.
Utiliser des techniques comme la validation croisée aide à choisir un degré optimal.
Applications
- Modélisation de phénomènes physiques ou biologiques avec relations non linéaires.
- Analyse des tendances temporelles non linéaires.
- Prédiction des ventes, prix, ou variables économiques complexes.
Conclusion
La régression polynomiale est une technique simple et puissante pour capturer des relations non linéaires dans les données. En comprenant bien son fonctionnement et ses limites, elle constitue une étape importante dans la boîte à outils du data scientist.