1073 lines
25 KiB
Markdown
1073 lines
25 KiB
Markdown
# Guide Complet de la Régression
|
||
|
||
📈 **Maîtriser l'analyse de régression** pour modéliser, prédire et comprendre les relations entre variables.
|
||
|
||
---
|
||
|
||
## Table des Matières
|
||
|
||
1. [Concepts Fondamentaux](#concepts-fondamentaux)
|
||
2. [Types de Modèles](#types-de-modèles)
|
||
3. [Configuration du Modèle](#configuration-du-modèle)
|
||
4. [Interprétation des Résultats](#interprétation-des-résultats)
|
||
5. [Équations du Modèle](#équations-du-modèle)
|
||
6. [Diagnostics Graphiques](#diagnostics-graphiques)
|
||
7. [Bonnes Pratiques](#bonnes-pratiques)
|
||
8. [Exemples Détaillés](#exemples-détaillés)
|
||
|
||
---
|
||
|
||
## Concepts Fondamentaux
|
||
|
||
### Qu'est-ce que la Régression ?
|
||
|
||
La **régression** est une méthode statistique qui permet de :
|
||
|
||
✅ **Modéliser** la relation entre une variable cible (Y) et des prédicteurs (X)
|
||
✅ **Prédire** les valeurs de Y pour de nouvelles données
|
||
✅ **Comprendre** l'impact de chaque variable sur Y
|
||
✅ **Quantifier** l'incertitude des prédictions
|
||
|
||
### Notation Mathématique
|
||
|
||
```
|
||
Y = f(X) + ε
|
||
|
||
Où :
|
||
- Y = Variable cible (à expliquer/prédire)
|
||
- X = Variables explicatives (prédicteurs)
|
||
- f = Fonction du modèle
|
||
- ε = Erreur résiduelle (bruit)
|
||
```
|
||
|
||
### Terminologie
|
||
|
||
| Terme | Définition | Exemple |
|
||
|-------|------------|---------|
|
||
| **Variable cible (Y)** | Variable à expliquer/prédire | Prix, Ventes, Score |
|
||
| **Prédicteurs (X)** | Variables qui expliquent Y | Surface, Budget, Âge |
|
||
| **Coefficients** | Impact de chaque X sur Y | +2500 pour Surface |
|
||
| **Intercept** | Valeur de Y quand tous les X = 0 | Prix de base |
|
||
| **Résidus** | Différence entre réel et prédit | Erreur de prédiction |
|
||
| **R²** | Proportion de variance expliquée | 0.85 = 85% expliqué |
|
||
|
||
---
|
||
|
||
## Types de Modèles
|
||
|
||
L'application propose **4 types** de modèles de régression :
|
||
|
||
### 1. Régression Linéaire 📐
|
||
|
||
**Objectif** : Modéliser une relation **linéaire** entre X et Y.
|
||
|
||
**Équation** :
|
||
```
|
||
Y = β₀ + β₁X₁ + β₂X₂ + ... + βₙXₙ + ε
|
||
```
|
||
|
||
**Quand l'utiliser ?**
|
||
- ✅ Relation **linéaire** évidente (scatter plot en ligne droite)
|
||
- ✅ Cible **numérique continue**
|
||
- ✅ Résidus **normalement distribués**
|
||
|
||
**Hypothèses** :
|
||
- Linéarité de la relation
|
||
- Indépendance des erreurs
|
||
- Homoscédasticité (variance constante)
|
||
- Normalité des résidus
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Prédire le prix immobilier
|
||
Prix = 50000 + 2500*Surface + 15000*Chambres
|
||
|
||
# Intercept : 50000€ (prix de base)
|
||
# Surface : +2500€ par m²
|
||
# Chambres : +15000€ par chambre
|
||
```
|
||
|
||
**Graphique typique** :
|
||
```
|
||
Prix
|
||
│ •
|
||
│ • •
|
||
│ • •
|
||
│ • •
|
||
│• •
|
||
└─────────→ Surface
|
||
(Ligne droite)
|
||
```
|
||
|
||
---
|
||
|
||
### 2. Régression Logistique 🎲
|
||
|
||
**Objectif** : Prédire la **probabilité** d'un événement binaire.
|
||
|
||
**Équation** :
|
||
```
|
||
P(Y=1) = 1 / (1 + e^-(β₀ + β₁X₁ + ... + βₙXₙ))
|
||
```
|
||
|
||
**Quand l'utiliser ?**
|
||
- ✅ Cible **binaire** (0/1, oui/non, vrai/faux)
|
||
- ✅ Cible **catégorique** (convertie en binaire)
|
||
- ✅ Intéressé par la **probabilité**, pas juste la classe
|
||
|
||
**Hypothèses** :
|
||
- Indépendance des observations
|
||
- Pas de multicolinéarité sévère
|
||
- Taille d'échantillon suffisante
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Prédire si un client va acheter (1) ou non (0)
|
||
P(Achat) = f(Âge, Revenu, Historique)
|
||
|
||
# Résultat : Probabilité de 0 à 1
|
||
# Si P > 0.5 : Prédit "Achat"
|
||
# Si P ≤ 0.5 : Prédit "Pas d'achat"
|
||
```
|
||
|
||
**Graphique typique** :
|
||
```
|
||
P(Achat)
|
||
1.0 ┤ ┌────────
|
||
│ ┌
|
||
│ ┌
|
||
│ ┌
|
||
│ ┌
|
||
0.0 ┼─────┬─────→ Âge
|
||
30
|
||
(Courbe en S)
|
||
```
|
||
|
||
**Interprétation des coefficients** :
|
||
- **Odds Ratio** : e^coefficient
|
||
- Si coefficient = 0.5 → OR = 1.65 (65% plus de chances)
|
||
- Si coefficient = -0.5 → OR = 0.61 (39% moins de chances)
|
||
|
||
---
|
||
|
||
### 3. Régression Polynomial 📊
|
||
|
||
**Objectif** : Capturer des relations **non linéaires** (courbes).
|
||
|
||
**Équation** :
|
||
```
|
||
Y = β₀ + β₁X + β₂X² + β₃X³ + ... + ε
|
||
```
|
||
|
||
**Quand l'utiliser ?**
|
||
- ✅ Relation **courbe** évidente sur le scatter plot
|
||
- ✅ Résidus du modèle linéaire montrent un motif
|
||
- ✅ Relation quadratique (en U ou en cloche)
|
||
|
||
**Degré du polynôme** :
|
||
- **Degré 2** : Parabole (U ou ∩)
|
||
- **Degré 3** : Courbe en S
|
||
- **Degré 4-5** : Formes complexes (⚠️ sur-apprentissage)
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Relation entre Budget_Publicité et Ventes
|
||
# (avec rendements décroissants)
|
||
Ventes = 1000 + 50*Budget - 0.1*Budget²
|
||
|
||
# Budget optimal : Budget* = 50 / (2*0.1) = 250€
|
||
# Ventes maximales : 1000 + 50*250 - 0.1*250² = 7250
|
||
```
|
||
|
||
**Graphique typique** :
|
||
```
|
||
Ventes
|
||
│ •
|
||
│ • •
|
||
│ • •
|
||
│ • •
|
||
│ • •
|
||
└───────────→ Budget_Publicité
|
||
(Courbe en ∩)
|
||
```
|
||
|
||
**⚠️ Risques** :
|
||
- **Sur-apprentissage** : Degré trop élevé s'adapte au bruit
|
||
- **Extrapolation** : Prédictions dangereuses hors des données
|
||
- **Interprétation** : Coefficients difficiles à expliquer
|
||
|
||
**Recommandation** : Commencer avec le degré 2, augmenter progressivement.
|
||
|
||
---
|
||
|
||
### 4. Régression Exponentielle 📈
|
||
|
||
**Objectif** : Modéliser une **croissance/décroissance exponentielle**.
|
||
|
||
**Équation** :
|
||
```
|
||
Y = e^(β₀ + β₁X + ε)
|
||
= e^β₀ × e^β₁X × e^ε
|
||
```
|
||
|
||
**Quand l'utiliser ?**
|
||
- ✅ Croissance **exponentielle** (population, virus, intérêts composés)
|
||
- ✅ Décroissance exponentielle (demi-vie, dépréciation)
|
||
- ✅ Y **toujours positif**
|
||
|
||
**Hypothèses** :
|
||
- Y > 0 (valeurs strictement positives)
|
||
- Relation logarithmique entre log(Y) et X
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Croissance d'une population bactérienne
|
||
Population = e^(4.5 + 0.1*Temps)
|
||
|
||
# T0 : Population = e^4.5 = 90
|
||
# T10 : Population = e^5.5 = 245
|
||
# T20 : Population = e^6.5 = 665
|
||
|
||
# Temps de doublement : ln(2)/0.1 = 6.93 unités
|
||
```
|
||
|
||
**Graphique typique** :
|
||
```
|
||
Population
|
||
│ •
|
||
│ •
|
||
│ •
|
||
│ •
|
||
│ •
|
||
└───────────→ Temps
|
||
(Courbe en J)
|
||
```
|
||
|
||
**⚠️ Limites** :
|
||
- Ne peut pas modéliser Y ≤ 0
|
||
- Très sensible aux outliers
|
||
- Difficile à interpréter directement
|
||
|
||
---
|
||
|
||
## Configuration du Modèle
|
||
|
||
### Étape 1 : Sélection de la Variable Cible (Y)
|
||
|
||
**Règles** :
|
||
- Pour **Linéaire/Polynomial/Exponentielle** : Y doit être **numérique continue**
|
||
- ✅ Prix, Taille, Poids, Ventes, Temps
|
||
- ❌ Catégorie, Couleur, Oui/Non
|
||
|
||
- Pour **Logistique** : Y doit être **catégorique ou binaire**
|
||
- ✅ Achat (0/1), Spam (vrai/faux), Classe (A/B/C)
|
||
- ❌ Prix continu, ID unique
|
||
|
||
**Dans l'application** :
|
||
1. Ouvrez le panneau "Configuration Avancée"
|
||
2. Sélectionnez votre cible dans le menu déroulant "Variable Cible (Y)"
|
||
3. Vérifiez les alertes de validation
|
||
|
||
**Exemple de validation** :
|
||
```
|
||
✅ Linéaire + Prix (numérique) → OK
|
||
❌ Linéaire + Catégorie (texte) → Erreur : "Ce modèle nécessite une cible numérique continue"
|
||
✅ Logistique + Catégorie (texte) → OK
|
||
✅ Logistique + Achat (0/1) → OK
|
||
```
|
||
|
||
---
|
||
|
||
### Étape 2 : Sélection des Prédicteurs (X)
|
||
|
||
**Automatique** : L'application recommande automatiquement les **5 meilleures variables** basées sur leur importance (Random Forest).
|
||
|
||
**Manuel** : Vous pouvez ajuster la sélection :
|
||
- ✅ Cochez : Inclure la variable
|
||
- ❌ Décochez : Exclure la variable
|
||
|
||
**Critères de sélection** :
|
||
|
||
1. **Corrélation avec Y** (via matrice de corrélation)
|
||
- Privilégiez |r| > 0.5
|
||
- Évitez |r| < 0.3 (trop faible)
|
||
|
||
2. **Multicolinéarité** entre X
|
||
- ⚠️ Évitez |r| ≥ 0.7 entre prédicteurs
|
||
- Choisissez la variable la plus corrélée avec Y
|
||
|
||
3. **Nombre de prédicteurs**
|
||
- Règle : n/10 (n = taille échantillon)
|
||
- Exemple : 100 observations → max 10 prédicteurs
|
||
- Préférez **qualité > quantité**
|
||
|
||
**Exemple de workflow** :
|
||
```
|
||
1. Matrice de corrélation
|
||
├─ Prix vs Surface : r = 0.85 ✅
|
||
├─ Prix vs Chambres : r = 0.65 ✅
|
||
├─ Prix vs Jardin : r = 0.70 ✅
|
||
└─ Prix vs Garage : r = 0.45 ⚠️ (faible)
|
||
|
||
2. Multicolinéarité
|
||
├─ Surface vs Chambres : r = 0.72 ⚠️ (problématique)
|
||
└─ Surface vs Jardin : r = 0.50 ✅
|
||
|
||
3. Sélection finale
|
||
├─ Surface (meilleure corrélation avec Prix)
|
||
├─ Jardin (pas de multicolinéarité)
|
||
└─ Exclure Chambres (multicolinéarité avec Surface)
|
||
```
|
||
|
||
---
|
||
|
||
### Étape 3 : Options Avancées
|
||
|
||
#### Pour Polynomial
|
||
|
||
**Degré du polynôme** (2 à 5) :
|
||
- **Degré 2** : Courbe simple (U ou ∩)
|
||
- **Degré 3** : Courbe en S
|
||
- **Degré 4-5** : Formes complexes (⚠️ risque de sur-apprentissage)
|
||
|
||
**Recommandation** :
|
||
```
|
||
1. Commencez avec le degré 2
|
||
2. Vérifiez le R² ajusté (doit augmenter)
|
||
3. Inspectez les résidus (pas de motif)
|
||
4. Si amélioration → essayez degré 3
|
||
5. Si dégradation → revenez au degré précédent
|
||
```
|
||
|
||
#### Pour Linéaire/Polynomial
|
||
|
||
**Inclure interactions** (x₁ × x₂) :
|
||
- Crée des termes croisés entre variables
|
||
- Exemple : Surface × Chambres, Âge × Revenu
|
||
- Utile pour capturer les **effets combinés**
|
||
|
||
**Quand l'utiliser ?**
|
||
- ✅ Effet d'une variable dépend d'une autre
|
||
- ✅ Interaction théorique justifiée
|
||
- ❌ Échantillon trop petit (< 50 observations)
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Sans interaction
|
||
Salaire = 2000 + 50*Expérience + 100*Formation
|
||
|
||
# Avec interaction
|
||
Salaire = 2000 + 50*Expérience + 100*Formation + 5*(Expérience×Formation)
|
||
|
||
# Interprétation : L'effet de l'expérience est plus fort
|
||
# avec un niveau de formation élevé
|
||
```
|
||
|
||
---
|
||
|
||
## Interprétation des Résultats
|
||
|
||
### 1. Métriques de Qualité du Modèle
|
||
|
||
#### R-Squared (R² ou Coefficient de Détermination)
|
||
|
||
**Définition** : Proportion de la variance de Y expliquée par le modèle.
|
||
|
||
```
|
||
R² = 1 - (Variance résiduelle / Variance totale)
|
||
```
|
||
|
||
**Interprétation** :
|
||
| R² | Qualité | Signification |
|
||
|----|---------|--------------|
|
||
| **0.90 - 1.00** | Excellent | Le modèle explique 90-100% de la variance |
|
||
| **0.70 - 0.90** | Bon | Le modèle explique 70-90% de la variance |
|
||
| **0.50 - 0.70** | Modéré | Le modèle explique 50-70% de la variance |
|
||
| **0.30 - 0.50** | Faible | Le modèle explique 30-50% de la variance |
|
||
| **< 0.30** | Très faible | Le modèle est peu utile |
|
||
|
||
**Exemple** :
|
||
```python
|
||
# R² = 0.85
|
||
# Signification : 85% de la variation du Prix est expliquée par
|
||
# les variables Surface, Chambres, Jardin
|
||
# Les 15% restants sont dus à des facteurs non observés
|
||
```
|
||
|
||
⚠️ **Limites** :
|
||
- R² augmente **toujours** avec plus de variables
|
||
- Ne garantit pas la **causalité**
|
||
- Peut être **artificiellement élevé** avec outliers
|
||
|
||
---
|
||
|
||
#### Adjusted R-Squared (R² Ajusté)
|
||
|
||
**Définition** : R² corrigé pour pénaliser les variables inutiles.
|
||
|
||
```
|
||
R²_adj = 1 - (1 - R²) × (n - 1) / (n - p - 1)
|
||
|
||
Où :
|
||
- n = taille de l'échantillon
|
||
- p = nombre de prédicteurs
|
||
```
|
||
|
||
**Quand l'utiliser ?**
|
||
- Pour comparer des modèles avec **nombres de variables différents**
|
||
- Pour vérifier si une nouvelle variable **améliore vraiment** le modèle
|
||
|
||
**Règle** :
|
||
- Si R²_adj < R² → **Trop de variables inutiles**
|
||
- Si R²_augmente quand on ajoute une variable → **Variable utile**
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Modèle 1 : R² = 0.85, R²_adj = 0.84, p = 5 variables
|
||
# Modèle 2 : R² = 0.86, R²_adj = 0.83, p = 10 variables
|
||
|
||
# Conclusion : Modèle 1 est meilleur (R²_adj plus élevé
|
||
# avec moins de variables)
|
||
```
|
||
|
||
---
|
||
|
||
#### AIC et BIC (Critères d'Information)
|
||
|
||
**Définition** : Mesurent la **qualité** du modèle avec **pénalité pour la complexité**.
|
||
|
||
```
|
||
AIC = 2k - 2ln(L)
|
||
BIC = k×ln(n) - 2ln(L)
|
||
|
||
Où :
|
||
- k = nombre de paramètres
|
||
- L = vraisemblance du modèle
|
||
- n = taille de l'échantillon
|
||
```
|
||
|
||
**Interprétation** :
|
||
- **Plus bas = meilleur**
|
||
- BIC pénalise plus fortement la complexité
|
||
- Utile pour comparer **modèles non emboîtés**
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Modèle linéaire : AIC = 450, BIC = 460
|
||
# Modèle polynomial : AIC = 430, BIC = 455
|
||
|
||
# Conclusion : Polynomial est meilleur (AIC plus bas)
|
||
# Mais linéaire est plus simple (BIC proche)
|
||
```
|
||
|
||
---
|
||
|
||
### 2. Tableau des Coefficients
|
||
|
||
#### Structure
|
||
|
||
| Variable | Coefficient | P-Value | Fiabilité |
|
||
|----------|-------------|---------|-----------|
|
||
| const (Intercept) | 50000.00 | 0.001 | ✅ FIABLE |
|
||
| Surface | 2500.50 | 0.000 | ✅ FIABLE |
|
||
| Chambres | 12000.00 | 0.040 | ✅ FIABLE |
|
||
| Jardin | 8000.00 | 0.150 | ❌ INCERTAIN |
|
||
|
||
#### Coefficient
|
||
|
||
**Définition** : Changement moyen de Y quand X augmente de 1 unité.
|
||
|
||
**Interprétation** :
|
||
```python
|
||
# Y = 50000 + 2500*Surface + 12000*Chambres + 8000*Jardin
|
||
|
||
# Surface : coefficient = +2500
|
||
# → Si Surface augmente de 1 m², Prix augmente de 2500€
|
||
|
||
# Chambres : coefficient = +12000
|
||
# → Si Chambres augmente de 1, Prix augmente de 12000€
|
||
|
||
# Jardin : coefficient = +8000
|
||
# → Si Jardin passe de non à oui, Prix augmente de 8000€
|
||
```
|
||
|
||
**Signe du coefficient** :
|
||
- **Positif (+)** : X↑ ⇒ Y↑ (relation positive)
|
||
- **Négatif (-)** : X↑ ⇒ Y↓ (relation négative)
|
||
- **Proche de 0** : X a peu d'effet sur Y
|
||
|
||
---
|
||
|
||
#### P-Value
|
||
|
||
**Définition** : Probabilité que le coefficient soit dû au hasard.
|
||
|
||
**Règle** :
|
||
- **p < 0.05** : Coefficient **statistiquement significatif** (FIABLE)
|
||
- **p ≥ 0.05** : Coefficient **non significatif** (INCERTAIN)
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Surface : p = 0.000 (< 0.05) → Fiable
|
||
# Jardin : p = 0.150 (≥ 0.05) → Incertain (pourrait être 0)
|
||
|
||
# Action : Retirer Jardin du modèle
|
||
```
|
||
|
||
**⚠️ Attention** :
|
||
- Une p-value > 0.05 ne signifie pas "pas d'effet"
|
||
- Elle signifie "pas assez de preuves" (échantillon trop petit)
|
||
|
||
---
|
||
|
||
#### Écart-Type (Std Error)
|
||
|
||
**Définition** : Incertitude sur l'estimation du coefficient.
|
||
|
||
**Intervalle de confiance à 95%** :
|
||
```
|
||
IC 95% = Coefficient ± 1.96 × Std_Error
|
||
```
|
||
|
||
**Exemple** :
|
||
```python
|
||
# Surface : coefficient = 2500, std_error = 200
|
||
# IC 95% = [2500 - 1.96×200, 2500 + 1.96×200]
|
||
# = [2108, 2892]
|
||
|
||
# Interprétation : On est sûr à 95% que l'effet réel
|
||
# de la surface est entre 2108€ et 2892€ par m²
|
||
```
|
||
|
||
---
|
||
|
||
### 3. Diagnostic des Résidus
|
||
|
||
#### Résidus
|
||
|
||
**Définition** : Différence entre la valeur réelle et la prédite.
|
||
|
||
```
|
||
Résidu = Y_réel - Y_prédit
|
||
```
|
||
|
||
**Propriétés souhaitées** :
|
||
- ✅ **Moyenne = 0** : Pas de biais systématique
|
||
- ✅ **Distribution normale** : Pour les intervalles de confiance
|
||
- ✅ **Homoscédasticité** : Variance constante
|
||
- ✅ **Indépendance** : Pas d'autocorrélation
|
||
|
||
**Graphique Résidus vs Prédits** :
|
||
|
||
```
|
||
│ • •
|
||
│ • • •
|
||
│ • • • • (Bien : dispersion aléatoire)
|
||
│• • •
|
||
└────────────────→ Prédits
|
||
```
|
||
|
||
```
|
||
│ • •
|
||
│ • • •
|
||
│ • • (Mal : motif en U = relation non linéaire)
|
||
│ • •
|
||
└────────────────→ Prédits
|
||
```
|
||
|
||
---
|
||
|
||
## Équations du Modèle
|
||
|
||
L'application génère automatiquement l'équation dans **3 formats** :
|
||
|
||
### 1. LaTeX (Mathématique)
|
||
|
||
**Usage** : Rapports, publications scientifiques, présentations.
|
||
|
||
**Exemple** :
|
||
```latex
|
||
$$y = 1.234567 + 2.345678x_{0} + 3.456789x_{0}^{2}$$
|
||
```
|
||
|
||
**Rendu** (dans un document LaTeX) :
|
||
```
|
||
y = 1.234567 + 2.345678x₀ + 3.456789x₀²
|
||
```
|
||
|
||
---
|
||
|
||
### 2. Python (Code)
|
||
|
||
**Usage** : Implémentation directe dans un script Python.
|
||
|
||
**Exemple** :
|
||
```python
|
||
y = 1.234567 + 2.345678*x0 + 3.456789*x0**2
|
||
```
|
||
|
||
**Utilisation** :
|
||
```python
|
||
# Fonction de prédiction
|
||
def predict(x0):
|
||
return 1.234567 + 2.345678*x0 + 3.456789*x0**2
|
||
|
||
# Prédiction pour x0 = 5
|
||
resultat = predict(5)
|
||
print(resultat) # 107.123457
|
||
```
|
||
|
||
---
|
||
|
||
### 3. Excel (Formule)
|
||
|
||
**Usage** : Utilisation directe dans une cellule Excel/Google Sheets.
|
||
|
||
**Exemple** :
|
||
```
|
||
=1.234567 + 2.345678*A1 + 3.456789*A1^2
|
||
```
|
||
|
||
**Correspondance des colonnes** :
|
||
- `x0` → Cellule `A1`
|
||
- `x1` → Cellule `B1`
|
||
- `x2` → Cellule `C1`
|
||
- etc.
|
||
|
||
**Utilisation** :
|
||
```
|
||
A B C
|
||
1 [Surface] [x0=50] =1.234567 + 2.345678*B1 + 3.456789*B1^2
|
||
```
|
||
|
||
**Conversion automatique** :
|
||
- `x0^2` → `A1^2`
|
||
- `x0 x1` → `A1*B1`
|
||
- `x0^2 x1` → `(A1^2)*B1`
|
||
|
||
---
|
||
|
||
## Diagnostics Graphiques
|
||
|
||
### 1. Fit Plot (Régression Univariée)
|
||
|
||
**Objectif** : Vérifier visuellement l'ajustement du modèle aux données.
|
||
|
||
**Composants** :
|
||
- **Points gris** : Données réelles (X, Y_réel)
|
||
- **Ligne bleue** : Prédictions du modèle (X, Y_prédit)
|
||
|
||
**Interprétation** :
|
||
```
|
||
Bon ajustement :
|
||
Y
|
||
│ •
|
||
│ •● ← Ligne suit les points
|
||
│ • ●
|
||
│ • ●
|
||
│• ●
|
||
└─────────→ X
|
||
|
||
Mauvais ajustement :
|
||
Y
|
||
│ •
|
||
│ ••
|
||
│ • ● ← Ligne ne suit pas
|
||
│ • ●●
|
||
│• ●
|
||
└─────────→ X
|
||
```
|
||
|
||
---
|
||
|
||
### 2. Partial Regression Plot (Régression Multivariée)
|
||
|
||
**Objectif** : Visualiser l'**effet isolé** de chaque variable, contrôlant les autres.
|
||
|
||
**Principe** :
|
||
- Montre la relation entre **X et Y**, après avoir retiré l'effet des autres variables
|
||
- La **pente** de la tendance = **coefficient** du modèle
|
||
- Utile pour comprendre la **contribution unique** de chaque prédicteur
|
||
|
||
**Interprétation** :
|
||
```
|
||
Y_résiduels
|
||
│
|
||
+ │ •
|
||
│ • ● ← Pente positive = coefficient positif
|
||
0 │───●────●───
|
||
│ • •
|
||
- │•
|
||
└────────────→ X_résiduels
|
||
```
|
||
|
||
**Cas d'usage** :
|
||
- Identifier les variables avec **effet non linéaire**
|
||
- Détecter les **influences** (outliers sur une variable spécifique)
|
||
- Confirmer le **signe** des coefficients
|
||
|
||
---
|
||
|
||
### 3. Parity Plot (Validation)
|
||
|
||
**Objectif** : Vérifier la qualité des prédictions.
|
||
|
||
**Composants** :
|
||
- **Diagonale rouge** : Y = X (prédictions parfaites)
|
||
- **Points violets** : (Y_réel, Y_prédit)
|
||
|
||
**Interprétation** :
|
||
```
|
||
Y_prédit
|
||
│
|
||
│ • • (Bien : points près de la diagonale)
|
||
100├ • •
|
||
│ • •
|
||
50├• • •
|
||
│
|
||
└────────────→ Y_réel
|
||
50 100
|
||
|
||
Y_prédit
|
||
│
|
||
│ • (Mal : points loin de la diagonale)
|
||
100├ •
|
||
│ •
|
||
50├
|
||
│•
|
||
└────────────→ Y_réel
|
||
50 100
|
||
```
|
||
|
||
**Métriques dérivées** :
|
||
- **MAE** (Mean Absolute Error) : |Y_réel - Y_prédit|
|
||
- **RMSE** (Root Mean Squared Error) : √(Σ(Y_réel - Y_prédit)²/n)
|
||
- **MAPE** (Mean Absolute Percentage Error) : 100×|Y_réel - Y_prédit|/Y_réel
|
||
|
||
---
|
||
|
||
## Bonnes Pratiques
|
||
|
||
### Workflow Recommencé
|
||
|
||
```
|
||
1. Exploration des données
|
||
├─ Vérifier les types (numérique, catégorique)
|
||
├─ Identifier les outliers
|
||
└─ Statistiques descriptives
|
||
|
||
2. Matrice de corrélation
|
||
├─ Identifier les variables corrélées avec Y
|
||
├─ Repérer la multicolinéarité
|
||
└─ Sélectionner les prédicteurs candidats
|
||
|
||
3. Régression simple
|
||
├─ Commencer avec 1-2 prédicteurs
|
||
├─ Utiliser le modèle linéaire
|
||
└─ Vérifier les hypothèses (résidus)
|
||
|
||
4. Amélioration itérative
|
||
├─ Ajouter des variables (si pertinent)
|
||
├─ Tester polynomial (si relation courbe)
|
||
├─ Inclure interactions (si justifié)
|
||
└─ Comparer les modèles (R²_adj, AIC, BIC)
|
||
|
||
5. Validation finale
|
||
├─ Parity Plot (qualité des prédictions)
|
||
├─ Diagnostic des résidus (pas de motif)
|
||
├─ Vérifier les p-values (< 0.05)
|
||
└─ Interpréter les coefficients
|
||
|
||
6. Documentation
|
||
├─ Exporter l'équation
|
||
├─ Sauvegarder les graphiques
|
||
└─ Noter les décisions (variables exclues, outliers retirés)
|
||
```
|
||
|
||
---
|
||
|
||
### Erreurs Courantes
|
||
|
||
❌ **Sur-apprentissage (Overfitting)**
|
||
```python
|
||
# Trop de variables par rapport à l'échantillon
|
||
n = 50 observations
|
||
p = 15 prédicteurs # Trop !
|
||
|
||
# Signes :
|
||
# - R² très élevé (> 0.95)
|
||
# - R²_adj beaucoup plus bas que R²
|
||
# - Coefficients irréalistes
|
||
|
||
# Solution : Réduire le nombre de variables
|
||
```
|
||
|
||
❌ **Sous-apprentissage (Underfitting)**
|
||
```python
|
||
# Modèle trop simple pour la relation
|
||
# Relation courbe modélisée par linéaire
|
||
|
||
# Signes :
|
||
# - R² très faible (< 0.30)
|
||
# - Motif dans les résidus (forme en U)
|
||
|
||
# Solution : Essayer polynomial
|
||
```
|
||
|
||
❌ **Multicolinéarité ignorée**
|
||
```python
|
||
# Inclure des variables fortement corrélées
|
||
# Surface_m² (r=1.0) vs Surface_pieds²
|
||
|
||
# Signes :
|
||
# - Coefficients contre-intuitifs
|
||
# - p-values élevées malgré un bon R²
|
||
# - Coefficients instables (changent beaucoup si on retire une variable)
|
||
|
||
# Solution : Matrice de corrélation AVANT
|
||
```
|
||
|
||
❌ **Interprétation causale abusive**
|
||
```python
|
||
# Corrélation ≠ Causalité
|
||
# Y = 0.5*X ne signifie pas que X cause Y
|
||
|
||
# Exemple : Glace vs Requins
|
||
# Corrélation forte mais relation non causale
|
||
# (Facteur commun : Été)
|
||
|
||
# Solution : Expérience contrôlée ou avis d'expert
|
||
```
|
||
|
||
---
|
||
|
||
## Exemples Détaillés
|
||
|
||
### Exemple 1 : Prix Immobilier
|
||
|
||
**Données** (100 maisons) :
|
||
- Prix (€) : Cible
|
||
- Surface (m²)
|
||
- Chambres
|
||
- Jardin (0/1)
|
||
- Garage (0/1)
|
||
- Distance_Centre (km)
|
||
|
||
---
|
||
|
||
#### Étape 1 : Corrélation
|
||
|
||
```
|
||
Prix Surface Chambres Jardin Garage Distance
|
||
Prix 1.00 0.85 0.65 0.70 0.55 -0.75
|
||
Surface 0.85 1.00 0.72 0.60 0.50 -0.40
|
||
Chambres 0.65 0.72 1.00 0.45 0.35 -0.25
|
||
Jardin 0.70 0.60 0.45 1.00 0.30 -0.50
|
||
Garage 0.55 0.50 0.35 0.30 1.00 -0.20
|
||
Distance -0.75 -0.40 -0.25 -0.50 -0.20 1.00
|
||
```
|
||
|
||
**Analyse** :
|
||
- **Meilleurs prédicteurs** : Surface (0.85), Distance (-0.75), Jardin (0.70)
|
||
- **Multicolinéarité** : Surface vs Chambres (0.72) ⚠️
|
||
- **Décision** : Garder Surface (meilleure corrélation), exclure Chambres
|
||
|
||
---
|
||
|
||
#### Étape 2 : Régression Linéaire
|
||
|
||
**Modèle** :
|
||
```python
|
||
Prix = β₀ + β₁×Surface + β₂×Distance + β₃×Jardin
|
||
```
|
||
|
||
**Résultats** :
|
||
```
|
||
R² = 0.87
|
||
R²_adj = 0.86
|
||
AIC = 1234
|
||
BIC = 1250
|
||
```
|
||
|
||
**Coefficients** :
|
||
```
|
||
Variable Coefficient P-Value Fiabilité
|
||
const 50000.00 0.001 ✅ FIABLE
|
||
Surface 2500.50 0.000 ✅ FIABLE
|
||
Distance -5000.00 0.002 ✅ FIABLE
|
||
Jardin 15000.00 0.030 ✅ FIABLE
|
||
```
|
||
|
||
---
|
||
|
||
#### Étape 3 : Interprétation
|
||
|
||
**Équation** :
|
||
```
|
||
Prix = 50000 + 2500×Surface - 5000×Distance + 15000×Jardin
|
||
```
|
||
|
||
**Signification** :
|
||
- **Prix de base** : 50000€ (pour Surface=0, Distance=0, Sans jardin)
|
||
- **Surface** : +2500€ par m²
|
||
- **Distance** : -5000€ par km du centre
|
||
- **Jardin** : +15000€ si jardin présent
|
||
|
||
**Exemple de prédiction** :
|
||
```python
|
||
# Maison : 80 m², 5 km du centre, avec jardin
|
||
Prix = 50000 + 2500×80 - 5000×5 + 15000×1
|
||
= 50000 + 200000 - 25000 + 15000
|
||
= 240000€
|
||
```
|
||
|
||
---
|
||
|
||
### Exemple 2 : Probabilité d'Achat
|
||
|
||
**Données** (500 clients) :
|
||
- Achat (0/1) : Cible
|
||
- Âge
|
||
- Revenu (€/mois)
|
||
- Historique (nombre d'achats précédents)
|
||
|
||
---
|
||
|
||
#### Régression Logistique
|
||
|
||
**Résultats** :
|
||
```
|
||
Pseudo R² = 0.35
|
||
AIC = 890
|
||
BIC = 910
|
||
```
|
||
|
||
**Coefficients** :
|
||
```
|
||
Variable Coefficient P-Value Odds_Ratio Fiabilité
|
||
const -5.000 0.001 - ✅ FIABLE
|
||
Âge 0.050 0.003 1.05 ✅ FIABLE
|
||
Revenu 0.0002 0.000 1.10 ✅ FIABLE
|
||
Historique 0.800 0.000 2.23 ✅ FIABLE
|
||
```
|
||
|
||
---
|
||
|
||
#### Interprétation
|
||
|
||
**Équation de probabilité** :
|
||
```python
|
||
P(Achat) = 1 / (1 + e^-(-5 + 0.05×Âge + 0.0002×Revenu + 0.8×Historique))
|
||
```
|
||
|
||
**Odds Ratios** :
|
||
- **Âge** : OR = 1.05 → Chaque année augmente la probabilité de 5%
|
||
- **Revenu** : OR = 1.10 → Chaque 1000€ augmente la probabilité de 10%
|
||
- **Historique** : OR = 2.23 → Chaque achat précédent double la probabilité
|
||
|
||
**Exemple de prédiction** :
|
||
```python
|
||
# Client : 45 ans, 3000€/mois, 3 achats précédents
|
||
z = -5 + 0.05×45 + 0.0002×3000 + 0.8×3
|
||
= -5 + 2.25 + 0.6 + 2.4
|
||
= 0.25
|
||
|
||
P(Achat) = 1 / (1 + e^-0.25)
|
||
= 1 / (1 + 0.78)
|
||
= 0.56
|
||
|
||
# Interprétation : 56% de probabilité d'achat
|
||
```
|
||
|
||
---
|
||
|
||
### Exemple 3 : Budget Publicité Optimal
|
||
|
||
**Données** (24 mois) :
|
||
- Ventes (k€)
|
||
- Budget_TV (k€)
|
||
- Budget_Radio (k€)
|
||
|
||
---
|
||
|
||
#### Régression Polynomial (Degré 2)
|
||
|
||
**Modèle** :
|
||
```python
|
||
Ventes = β₀ + β₁×Budget_TV + β₂×Budget_TV²
|
||
```
|
||
|
||
**Résultats** :
|
||
```
|
||
R² = 0.92
|
||
R²_adj = 0.91
|
||
```
|
||
|
||
**Coefficients** :
|
||
```
|
||
Variable Coefficient P-Value Fiabilité
|
||
const 10.000 0.000 ✅ FIABLE
|
||
Budget_TV 5.000 0.000 ✅ FIABLE
|
||
Budget_TV² -0.050 0.001 ✅ FIABLE
|
||
```
|
||
|
||
---
|
||
|
||
#### Interprétation
|
||
|
||
**Équation** :
|
||
```
|
||
Ventes = 10 + 5×Budget_TV - 0.05×Budget_TV²
|
||
```
|
||
|
||
**Budget optimal** :
|
||
```python
|
||
# Dérivée = 0
|
||
d(Ventes)/d(Budget) = 5 - 0.1×Budget = 0
|
||
Budget* = 5 / 0.1 = 50 k€
|
||
|
||
# Ventes maximales
|
||
Ventes_max = 10 + 5×50 - 0.05×50²
|
||
= 10 + 250 - 125
|
||
= 135 k€
|
||
```
|
||
|
||
**Graphique** :
|
||
```
|
||
Ventes
|
||
│ •
|
||
135┤ • (Maximum)
|
||
│ • •
|
||
100┤ • •
|
||
│ • •
|
||
50┤ • •
|
||
│ • •
|
||
10┼────────────────→ Budget_TV
|
||
0 25 50 75
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 Conclusion
|
||
|
||
La régression est un outil puissant pour :
|
||
|
||
✅ **Comprendre** les relations entre variables
|
||
✅ **Prédire** des valeurs futures
|
||
✅ **Quantifier** l'impact de chaque facteur
|
||
✅ **Optimiser** les décisions (budget, prix, etc.)
|
||
|
||
**Points clés à retenir** :
|
||
- Toujours vérifier la **matrice de corrélation** avant
|
||
- Surveiller le **R² ajusté** (pas juste le R²)
|
||
- Respecter les **p-values** (< 0.05)
|
||
- Valider avec les **graphiques diagnostiques**
|
||
- Documenter vos **décisions**
|
||
|
||
---
|
||
|
||
**Version** : 1.0
|
||
**Projet** : Application d'Analyse de Données
|
||
|
||
🔗 **Voir aussi** : [Guide Corrélation](CORRELATION_GUIDE.md) | [Guide Outliers](OUTLIER_GUIDE.md)
|