Prédiction des Prix Immobiliers en Californie

A. Guilmain, C. Maffre, K. Akchi
Y. Liu, N. Boimond, R. Al Afia

2026-01-17

Arbitrage entre Explicabilité et Précision

A. Guilmain • C. Maffre • K. Akchi
Y. Liu • N. Boimond • R. Al Afia

Janvier 2026

🎯 La problématique centrale

Question de recherche

Dans quelle mesure les modèles ML peuvent-ils prédire les prix — ET expliquer pourquoi ?

Ce projet ne cherche pas juste le meilleur MAE

→ Il cherche le meilleur compromis entre :

  • 📊 Performance (justesse technique)
  • 🔍 Compréhension (valeur métier)

Contexte : California 1990

  • 📦 20 640 districts
  • 📍 8 variables (revenus, âge, localisation…)
  • 💰 Cible : prix médian logements
  • ⚠️ Censure à 500k$ (5.1% du dataset)

⚖️ Les deux boussoles du projet

Boussole 1 : Justesse technique (Compromis biais-variance)

Question : « Ce modèle mesure-t-il correctement la réalité — et le fera-t-il demain ? »

\text{Erreur Totale} = \underbrace{\text{Biais}^2}_{\text{Sous-apprentissage}} + \underbrace{\text{Variance}}_{\text{Sur-apprentissage}} + \underbrace{\text{Bruit}}_{\text{Irréductible}}

Boussole 2 : Valeur métier (Compromis performance-interprétabilité)

Question : « Ce modèle produit-il de la connaissance exploitable ? »

Besoin Question Outil
Comprendre Pourquoi ce prix ? Ridge (coefficients \beta)
Prédire Quel prix exact ? LightGBM (boosting)
Concilier Les deux ! LightGBM + SHAP

🧪 Protocole expérimental rigoureux

1. Données : scikit-learn version

  • ✅ 20 640 observations, 0 valeur manquante
  • ✅ 8 features numériques (ratios pré-calculés)
  • ⚠️ Variable ocean_proximity absente (vs version Kaggle)

2. Partitionnement stratifié

  • 80% train / 20% test
  • Stratification sur quintiles de prix (KBinsDiscretizer)
  • Garantit équilibre Q1-Q5 dans train ET test

3. Validation croisée

  • 10-Fold CV pour criblage PyCaret (18 modèles)
  • 5-Fold CV pour optimisation (GridSearch/Optuna)

4. Métriques

  • RMSE (métrique principale) : pénalise gros écarts
  • MAE, R^2, MAPE (métriques complémentaires)

📊 Pourquoi la version scikit-learn ?

✅ Avantages

  • Reproductibilité : fetch_california_housing() standard
  • Robustesse : 0 valeur manquante (vs 207 dans Kaggle)
  • Focus méthodologique : AutoML + interprétabilité, pas nettoyage
  • Benchmark : référence LightGBM/XGBoost

⚠️ Limites assumées

  • Variable omise : ocean_proximity (impact estimé +2-3% R^2)
  • Perte granularité : ratios pré-calculés (AveRooms = total_rooms / households)
  • Censure 500k$ : biais sur biens de luxe (quantifié en Ch.8)

Décision méthodologique

Ces limites sont documentées et quantifiées — pas ignorées.

L’objectif est de montrer comment extraire de la valeur malgré les contraintes structurelles.

🗺️ Structure de la présentation

Partie I : Comprendre les données

  • 📊 EDA : Que cherche-t-on à prédire ?
  • 🔧 Feature Engineering : Valeur ajoutée validée (+1.5% MAE)

Partie II : Construire et évaluer

  • 🥇 Sélection modèles (PyCaret 18 algos)
  • ⚙️ Optimisation (GridSearch vs Optuna)
  • 📈 Évaluation (performance par quintile)

Partie III : Interpréter et valoriser

  • 🔍 SHAP : Ouvrir la boîte noire
  • 🎯 Synthèse : Quel modèle pour quel usage ?
  • 💡 Recommandations actionnables

Annexes

  • Protocole détaillé, formules, diagnostics

→ Commençons par comprendre les données

Comprendre les données

Partie I : Analyse exploratoire et Feature Engineering

📊 Que cherche-t-on à prédire ?

Figure 1: Distribution de la cible : censure à 500k$

Statistiques clés

Métrique Valeur
Moyenne 207k$
Médiane 180k$
Écart-type 116k$
Skewness +1.0

Censure administrative

1 044 districts (5.1%) plafonnés à exactement 500 001$

→ Sous-estimation systématique des biens de luxe

🎯 Qu’est-ce qui fait varier les prix ?

Figure 2: Hiérarchie des corrélations avec MedHouseVal

Leader incontesté : MedInc

r = 0.69 \quad \Rightarrow \quad R^2 \approx 48\%

Interprétation

Le revenu médian explique à lui seul 48% de la variance

→ Baseline Ridge sur MedInc seul = déjà solide

Top 5 corrélations

Feature r Signe
MedInc 0.69 +
AveRooms 0.15 +
Latitude -0.14 -
HouseAge 0.11 +
Longitude -0.05 -

🌍 La géographie : clusters invisibles aux corrélations

Figure 3: Distribution spatiale : Bay Area et LA concentrent la valeur

Patterns spatiaux

  • 🔴 Bay Area / Los Angeles : prix max (>400k$)
  • 🟡 Central Valley : moyen (150-250k$)
  • 🟢 Zones rurales : bas (<150k$)

Latitude (-0.14) et Longitude (-0.05) ?

Corrélations individuelles faibles, mais leur combinaison révèle des clusters puissants

→ Justifie modèles non-linéaires (LightGBM)

🗺️ ACP vs UMAP : Linéaire vs Non-linéaire

Voici comment deux méthodes de réduction de dimension révèlent des structures différentes dans les données.

(a) ACP : Gradient continu
(b) UMAP : Clusters distincts
Figure 4: Projection 2D des 8 variables : ACP vs UMAP

🔍 Interprétation

Tip

ACP (gauche)
→ Projection linéaire — capture 62.8% de la variance
→ Montre un gradient continu — masque les ruptures géographiques

UMAP (droite)
→ Projection non-linéaire — préserve les structures locales
→ Révèle 4 clusters nets — Bay Area, LA, Central Valley, Nord isolé

Implication modélisation :
Un modèle linéaire (Ridge) verra seulement le gradient.
Un modèle non-linéaire (LightGBM) exploitera les clusters — comme UMAP.

Implication pour la modélisation

Un modèle linéaire (Ridge) aura les mêmes limitations que l’ACP — gradient moyen mais ruptures manquées.

Un modèle non-linéaire (LightGBM) exploite ces clusters comme UMAP les révèle.

❓ Pourquoi ne pas utiliser UMAP comme feature ?

Trois raisons techniques rédhibitoires

1. Instabilité stochastique

  • Résultats variant entre exécutions (même avec random_state)
  • Projection nouvelles données = approximative (vs ACP exacte)
  • Risque de dérive train → production

2. Coût computationnel

  • Complexité O(n \log n) pour 20k points
  • Temps inférence augmenté (projection avant chaque prédiction)
  • Incompatible API temps réel (latence >100ms)

3. Perte d’interprétabilité métier

  • “Votre bien vaut 450k$ car UMAP1 = 2.3” → aucun sens pour un agent immobilier
  • SHAP ne peut donner de recommandations actionnables

Verdict méthodologique

UMAP = diagnostic visuel justifiant besoin d’algorithmes non-linéaires

≠ Feature engineering de production

🔧 Feature Engineering : Transformer pour mieux prédire

1. Enrichissement contextuel (combiner)

  • BedrmsToRooms = \frac{\text{AveBedrms}}{\text{AveRooms}} → standing
  • DistanceToSF = \sqrt{(\text{lat} - 37.77)^2 + (\text{lon} + 122.42)^2} → attractivité
  • IsBayArea = 1 si distance < 1° → cluster premium
  • MedInc_x_BayArea → interaction revenu × localisation
  • MedInc_x_HouseAge → charme ancien si revenu élevé

2. Rectification distributions (déballer)

  • log_MedInc, log_Population → stabiliser variance
  • sqrt_HouseAge → dépréciation non-linéaire

3. Compatibilité algorithmique (standardiser)

  • StandardScaler pour Ridge (distance sensible échelle)
  • Pas de scaling pour LightGBM (coupures invariantes)

✅ Validation empirique : Test d’ablation

Ablation study

Protocole

  • Baseline : 8 features originales
  • Intervention : +9 features transformées
  • Modèle test : LightGBM (hyperparams défaut)
  • Validation : 5-Fold CV
  • Test statistique : t-test apparié (\alpha = 0.05)

Résultats

Config MAE RMSE
Baseline 0.3145 0.4712
Engineered 0.3098 0.4625
Gain -1.5% -1.8%

Verdict

p = 0.011 < 0.05 → Gain significatif

→ Feature Engineering VALIDÉ

📝 Bilan de la partie I

✅ Cible identifiée : Prix médian, asymétrie +1.0, censure 5.1% à 500k$

✅ Prédicteur dominant : MedInc (r = 0.69) explique 48% variance seul

✅ Structure non-linéaire : UMAP révèle clusters géo → besoin LightGBM

✅ Feature Engineering validé : +9 features → -1.5% MAE (p = 0.011)

✅ Pipeline optimisé : Scaling conditionnel (Ridge oui, LightGBM non)

→ Passons à la modélisation : quel algorithme capte cette complexité ?

Construire et évaluer les modèles

Partie II : Sélection, Optimisation, Évaluation

🥇 Criblage PyCaret : 18 algorithmes testés

Protocole de sélection

  • 18 modèles comparés dans conditions identiques
  • 10-Fold CV pour estimation robuste
  • Métriques : RMSE (métrique clé), MAE, R^2, MAPE
  • Normalisation : Yeo-Johnson (atténuation asymétries)

Top 5 résultats

Rang Algorithme Famille RMSE MAE R^2 Temps
1 LightGBM Boosting 0.467 0.311 0.836 32.2s
2 XGBoost Boosting 0.468 0.310 0.836 0.5s
3 Extra Trees Bagging 0.502 0.329 0.811 3.0s
4 Random Forest Bagging 0.506 0.331 0.808 6.3s
… … … … … … …
9 Ridge Linéaire 0.721 0.529 0.611 0.03s

📊 L’écart structurel : Ensemblistes vs Linéaires

Importance des features

Rupture de performance

-35.2% RMSE entre LightGBM (0.467) et Ridge (0.721)

\frac{0.721 - 0.467}{0.721} = 35.2\%

Interprétation

Cette rupture suggère fortement :

  • Relations non-linéaires latentes
  • Interactions complexes (revenu × localisation)
  • Effets de seuil (proximité océan, quartiers riches)

→ Modèles à base d’arbres indispensables

🎯 Trio investigatif retenu

📘 Baseline

Ridge

  • Rôle : Étalon d’intelligibilité
  • Force : Coefficients \beta explicites
  • Faiblesse : -35% RMSE vs LightGBM
  • Public : Auditeurs, régulateurs

📙 Challenger

Random Forest

  • Rôle : Juge de robustesse
  • Force : Bagging stable (outliers)
  • Faiblesse : +5% RMSE vs LightGBM
  • Public : Décideurs prudents

📕 Champion

LightGBM

  • Rôle : Référence de précision
  • Force : Meilleur RMSE (0.467)
  • Faiblesse : Boîte noire (SANS SHAP)
  • Public : Systèmes automatisés

⚙️ Optimisation : GridSearchCV vs Optuna

GridSearchCV : Le cartographe

  • Explore exhaustivement grille prédéfinie
  • 12 combinaisons (3×2×2)
  • Déterministe (reproductible)
  • Temps : 60 entraînements (12 × 5 folds)

Analogie : Tester tous les restaurants d’un quartier, dans l’ordre

Optuna : L’explorateur

  • Explore intelligemment espace continu
  • 50 trials (algorithme TPE bayésien)
  • Stochastique (random_state)
  • Temps : Adaptatif (early stopping)

Analogie : Après chaque repas, orienter choix suivants selon résultats

GridSearchCV (LightGBM)

Hyperparamètre Valeurs Combinaisons
n_estimators {100, 200, 300} 3
learning_rate {0.05, 0.1} 2
num_leaves {31, 50} 2
Total 12

Optuna (LightGBM)

Hyperparamètre Espace Type
n_estimators [100, 1000] step=50 Discret
learning_rate [0.01, 0.3] Log-uniforme
num_leaves [20, 300] Discret
reg_alpha [1e-8, 10] Log-uniforme
reg_lambda [1e-8, 10] Log-uniforme

Prédit vs Réel — GridSearchCV

Prédit vs Réel — Optuna
Méthode RMSE MAE R^2
GridSearchCV 0.4415 0.2864 0.8493
Optuna 0.4493 0.2893 0.8439

Gagnant : GridSearchCV (+1.7% RMSE)

Exploration exhaustive bien calibrée

Mais Optuna reste supérieur pour espaces larges (>5 hyperparams)

📈 Évaluation : Performance par quintile

Figure 5: Dégradation progressive sur les biens chers

Dégradation Q5 (biens >290k$)

Quintile Prix MAE RMSE
Q1 <107k$ 17.2k$ 27.2k$
Q3 157-209k$ 24.4k$ 35.1k$
Q5 >290k$ 49.7k$ 71.5k$

La “falaise” du luxe

+188% MAE entre Q1 et Q5

Cause probable : Censure 500k$ (5% dataset) crée plafond artificiel

🗺️ Biais géographiques

Figure 6: Distribution spatiale des erreurs — LightGBM

Résidus moyens par zone

Zone Résidu \sigma
Bay Area +4.2k$ 47.3k$
Los Angeles +1.1k$ 46.6k$
Central Valley +0.8k$ 23.0k$
Reste -1.0k$ 44.2k$

Variables omises

Sous-estimation Bay Area suggère facteurs non capturés :

  • Tech hubs (distance Palo Alto)
  • Qualité écoles (API GreatSchools)
  • Transports (stations BART)

📝 Bilan de la partie II

✅ Champion identifié : LightGBM (RMSE 0.467, R^2 0.836)

✅ Écart structurel : -35% vs Ridge → non-linéarité confirmée

✅ Optimisation : GridSearchCV gagne (+1.7% vs Optuna sur cet espace)

⚠️ Limites détectées :

  • Dégradation Q5 : +188% MAE sur biens >290k$
  • Biais Bay Area : +4.2k$ résidu moyen

❓ Question restante : Comment expliquer ces prédictions ?

→ SHAP transforme la boîte noire en outil de décision

Interpréter et valoriser

Partie III : SHAP — Ouvrir la boîte noire

🔓 Le défi : Expliquer une boîte noire

Le problème

LightGBM performe bien (RMSE 0.467) — mais cette performance ne suffit pas.

Un modèle qui prédit sans expliquer = Oracle inutilisable pour convaincre un client.

Trois questions métier

  1. 🎯 Quels facteurs pèsent sur le prix ?
  2. 📈 Selon quelle logique ? (seuils, non-linéarités)
  3. 💬 Comment l’expliquer à un client ?

La réponse : SHAP (SHapley Additive exPlanations)

🧮 Qu’est-ce que SHAP ?

L’intuition : Partage équitable

3 commerciaux signent contrat 100k€. Comment répartir ?

  • ❌ Naïf : 33k€ chacun
  • ✅ SHAP : Contribution marginale

Transposition ML

Jeux coopératifs Machine Learning
Joueurs Features
Gain v(S) Prédiction f(S)
Valeur Shapley Contribution SHAP \phi_i

Formule de décomposition

f(x) = \phi_0 + \sum_{i=1}^n \phi_i

  • \phi_0 = Baseline (prix moyen 207k$)
  • \phi_i = Contribution feature i
  • Somme exacte (pas d’approximation)

Propriétés garanties

  • Efficience : \sum \phi_i = f(x) - E[f]
  • Symétrie : Features équivalentes → même SHAP
  • Nullité : Feature inutile → SHAP = 0

📊 Vue globale : Quelles features comptent ?

SHAP Summary Plot

🔍 Lecture du Summary Plot

Comment lire

  • Axe Y : Features triées par importance
  • Axe X : Impact SHAP (×100k$)
  • Couleur : 🔴 Valeur élevée, 🔵 Faible

Top 3 features

Feature Importance
MedInc 🌟🌟🌟🌟🌟
DistanceToSF 🌟🌟🌟
IsBayArea 🌟🌟

Insights clés

1. MedInc domine

  • Points 🔴 (revenus élevés) → droite (impact +)
  • Points 🔵 (revenus faibles) → gauche (impact -)
  • Confirme corrélation EDA (0.68)

2. DistanceToSF

  • Dispersion verticale → interactions avec autres variables
  • Effet non purement linéaire

3. IsBayArea

  • Cluster premium confirmé
  • Prime géographique mesurable

📈 Relations non-linéaires : Dependence Plots

SHAP Dependence Plots

🔬 Analyse MedInc : Saturation progressive

3 zones identifiées

  1. Zone 0-6 (revenus bas-moyens)
    • Relation quasi-linéaire
    • +15-20k$ par unité MedInc
  2. Zone 6-10 (revenus élevés)
    • Saturation progressive
    • Rendements décroissants
  3. Au-delà de 8
    • Dispersion verticale forte
    • Suggère interactions (géographie)

Implication stratégique

Investir dans quartier passant de 30k$ → 60k$/an de revenu médian rapporte PLUS (+45k$ valeur)

que même quartier 60k$ → 90k$/an (+30k$ seulement)

→ ROI décroissant avec le revenu

Limite méthodologique

Affirmation d’interactions nécessiterait SHAP Interaction Values (coût O(n^2))

Dispersion = indice fort, pas preuve formelle

💬 Vue locale : Pourquoi CE prix ?

Waterfall — Cas médian

Lecture intuitive

  • 📊 Barre grise : Baseline (207k$)
  • 🔴 Barres rouges : Augmentent prix
  • 🔵 Barres bleues : Diminuent prix
  • 🎯 Sommet : Prédiction finale

Pitch commercial

“Ce bien vaut 450k$ grâce à :

  • Revenu quartier (+125k$)
  • Localisation Bay Area (+68k$)
  • Proximité côte (+32k$)

Âge bâtiment pénalise (-18k$) — une rénovation comblerait cet écart.”

✅ Validation : Ces résultats sont-ils fiables ?

Comparaison 3 méthodes

🔬 Convergence multi-méthodes

3 approches indépendantes

Méthode Type Principe
SHAP Non-linéaire Contributions marginales
Permutation Agnostique Dégradation si mélange
Ridge Linéaire Coefficients \beta

Critère de solidité

Si les 3 méthodes s’accordent sur classement top features :

→ Insights structurels (réalité des données)

≠ Artefacts algorithmiques

Corrélation Spearman - SHAP ↔︎ Permutation : 0.89 - SHAP ↔︎ Ridge : 0.76

✅ Convergence forte confirmée

📝 Synthèse : Les leviers de valeur

Ce que SHAP révèle

Question Analyse Réponse
Quels leviers ? Summary Plot Top features ordonnées
Quelle forme ? Dependence Non-linéarités, seuils
Pourquoi ce prix ? Waterfall Décomposition explicite
C’est fiable ? Multi-méthodes Validation croisée ✅

Transformation accomplie

LightGBM — initialement boîte noire

↓ SHAP

Outil de décision transparent

→ Performance (RMSE 0.467)
ET
→ Compréhension (contributions \phi_i)

⚠️ Limites et perspectives SHAP

Limites actuelles

  1. Interactions non quantifiées
    • Soupçonnées (revenu × géo)
    • Pas mesurées formellement
  2. Échantillonnage
    • 2000 observations (10% test)
    • Sous-représentation cas extrêmes ?
  3. Pas d’intervalles confiance
    • Contributions ponctuelles
    • Incertitude non mesurée

Perspectives d’amélioration

  1. Dashboard interactif
    • Streamlit : saisie features → waterfall temps réel
  2. SHAP Interaction Values
    • Sur échantillon réduit + GPU
    • Quantification interactions MedInc × IsBayArea
  3. Segmentation
    • Les leviers diffèrent-ils par gamme prix ?
    • SHAP Q1 vs Q5

→ Conclusion : Quel modèle pour quel usage ?

Synthèse et recommandations

⚖️ Retour aux deux boussoles

Boussole 1 : Justesse technique ✅

Question : Le modèle mesure-t-il correctement la réalité ?

Étape Décision Impact erreur
Feature Engineering Log-transform, interactions ↓ Biais (linéarisation)
Criblage PyCaret LightGBM > Ridge -35% RMSE (non-linéarité)
Optimisation GridSearchCV (5 hyperparams) ↓ Variance (régularisation)
Évaluation Q5 Dégradation +188% >295k$ Limite identifiée (censure)

Verdict : MAE 31.2k$, R^2 0.844 — Objectif atteint

Boussole 2 : Valeur métier ✅

Question : Le modèle produit-il de la connaissance exploitable ?

Modèle Performance Interprétabilité native Avec SHAP Verdict
LightGBM 📊 31.2k$ ❌ Boîte noire ✅ Explicable Champion complet
Random Forest 📊 32.8k$ ❌ Boîte noire ✅ Explicable Équilibre
Ridge 📊 51.2k$ ✅ Coefficients \beta — Audit natif

Verdict : SHAP a transformé LightGBM — compromis résolu

🎯 Recommandations : Quel modèle pour quel usage ?

Profil Modèle Justification Positionnement
Décideur Stratégique (Promoteur, Urbaniste) Random Forest + SHAP Équilibre parfait. Arbres capturent non-linéarités, SHAP fournit waterfalls pour justifier investissements 📊 85% / 🔍 75%
Système Automatisé (Zestimate, API temps réel) LightGBM + SHAP Champion incontesté (MAE 31k$). Rapidité inférence (1.2s) + précision tabulaire = moteur idéal plateforme web 📊 100% / 🔍 95%
Auditeur/Régulateur (Conformité, Éthique) Ridge Structure mathématique simple (y = ax + b). Moins précis (-20k$ MAE) mais seul à garantir auditabilité totale sans post-processing 📊 70% / 🔍 95%

Positionnement = Performance / Interprétabilité

Ces recommandations s’appuient sur performances mesurées dans notre cadre expérimental.

⚠️ Ce que le modèle NE sait PAS faire

# Limite Cause Impact Solution proposée
1 Obsolescence temporelle (1990 → 2026) 36 ans d’écart Biais temporel (dynamiques pré-Tech) Réentraînement Zillow/Redfin (données 2024+)
2 Censure 500k$ Plafond administratif appris Sous-estimation +24% (Q5) Modèle Tobit OU exclusion pour “modèle luxe”
3 Cécité locale Agrégation districts Invisible rénovations individuelles Dataset granulaire (Ames Housing)
4 Pas d’incertitude Prédiction ponctuelle \hat{y} Confiance non mesurée (450k$ ± ?) Conformal Prediction (IC à 95%)

Impact sur les boussoles

  • Limites 1-2 affectent 📊 justesse technique → Nouvelles données
  • Limites 3-4 affectent 🔍 valeur métier → Nouveaux modèles complémentaires

→ Ces limites ne sont pas des échecs — pistes d’amélioration documentées

💡 Ce projet aura démontré 3 choses

1. Performance brute ≠ Valeur

Un MAE de 31.2k$ n’a de sens que si on peut expliquer pourquoi ce prix.

2. Interprétabilité ≠ Luxe

SHAP transforme prédiction opaque en argument commercial tangible.

3. Choix modèle = Contextuel

  • LightGBM pour précision
  • Ridge pour audit
  • Random Forest pour équilibre

→ Chaque usage appelle son outil

Entre précision et clarté, ce projet n’a pas choisi.

SHAP permet de concilier les deux.

Merci

Questions ?

Contacts

Ressources

  • 💻 Code source (Python + PyCaret + SHAP)
  • 📊 Données (scikit-learn harmonisées)
  • 📓 Notebooks reproductibles (5 phases)
  • 🔬 Artefacts complets (modèles + métriques)

Questions anticipées

Q1. Pourquoi pas SVM ou réseaux neurones ? → SVM : temps prohibitif pour performance médiocre. NN : overkill pour données tabulaires

Q2. Pourquoi garder censure 500k$ ? → Fidélité dataset standard scikit-learn. Extension : modèle Tobit ou exclusion

Q3. SHAP est-il causal ? → Non ! Il explique le modèle, pas la réalité. Attention biais données

Q4. Généraliser à autres marchés ? → Pipeline reproductible — changer données + adapter feature engineering géo

Annexes

📊 A1. Métriques complètes — LightGBM GridSearchCV

Métrique Valeur Interprétation
MAE 28.6k$ Erreur absolue moyenne
RMSE 44.2k$ Pénalise grosses erreurs (quadratique)
R^2 0.849 84.9% variance expliquée
MAPE 16.8% Erreur relative moyenne
Temps train 1.2s Inférence rapide (production)

🧮 A2. Formules clés

MAE (Mean Absolute Error)

\text{MAE} = \frac{1}{n}\sum_{i=1}^n |y_i - \hat{y}_i|

RMSE (Root Mean Squared Error)

\text{RMSE} = \sqrt{\frac{1}{n}\sum_{i=1}^n (y_i - \hat{y}_i)^2}

R^2 (Coefficient de Détermination)

R^2 = 1 - \frac{\sum(y_i - \hat{y}_i)^2}{\sum(y_i - \bar{y})^2}

Décomposition additive

f(x) = \phi_0 + \sum_{i=1}^p \phi_i

Valeur de Shapley

\phi_i = \sum_{S \subseteq N \setminus \{i\}} \frac{|S|!(|N|-|S|-1)!}{|N|!} [v(S \cup \{i\}) - v(S)]

TreeExplainer (LightGBM)

Complexité : O(T \times L \times D^2) au lieu de O(2^p)

  • T = nombre d’arbres
  • L = feuilles moyennes
  • D = profondeur moyenne

Biais-Variance

\text{Erreur} = \text{Biais}^2 + \text{Variance} + \text{Bruit}

Performance-Interprétabilité

Pas de formule — arbitrage contextuel

📈 A3. Résultats complets PyCaret (18 modèles)

Rang Modèle Famille MAE RMSE R^2 MAPE Temps
1 LightGBM Boosting 0.311 0.467 0.836 17.5% 32.2s
2 XGBoost Boosting 0.310 0.468 0.836 17.2% 0.5s
3 CatBoost Boosting 0.315 0.472 0.832 17.8% 45.1s
4 Extra Trees Bagging 0.329 0.502 0.811 18.1% 3.0s
5 Random Forest Bagging 0.331 0.506 0.808 18.2% 6.3s
6 Gradient Boosting Boosting 0.368 0.531 0.789 19.8% 3.1s
7 Decision Tree Arbre 0.452 0.682 0.651 25.8% 0.1s
8 KNN Instance 0.443 0.652 0.681 24.5% 0.8s
9 Ridge Linéaire 0.529 0.721 0.611 29.0% 0.03s
10 Linear Regression Linéaire 0.529 0.721 0.611 29.0% 0.02s
… … … … … … … …
18 Dummy Baseline 0.912 1.152 0.000 52.3% 0.01s

🔬 A4. Configuration Optuna (TPE)

Algorithme TPE (Tree-structured Parzen Estimator)

Modélise deux distributions : - \ell(x) = P(x | \text{score dans top 15\%}) → zones prometteuses - g(x) = P(x | \text{score hors top 15\%}) → zones à éviter

Prochain point : x^* = \arg\max \frac{\ell(x)}{g(x)}

Hyperparamètres explorés

Paramètre Espace Type Justification
n_estimators [100, 1000] step=50 Discret Nombre d’arbres
learning_rate [0.01, 0.3] Log-uniforme Ordres grandeur non-linéaires
num_leaves [20, 300] Discret Complexité arbres
reg_alpha [1e-8, 10] Log-uniforme Régularisation L1
reg_lambda [1e-8, 10] Log-uniforme Régularisation L2

🗺️ A5. Détails partitionnement stratifié

Schéma partitionnement

Vérification équilibre

Quintile Plage prix Train Test Écart
Q1 <119k$ 20.0% 20.0% 0.0%
Q2 119-160k$ 20.0% 20.0% 0.0%
Q3 160-212k$ 20.0% 20.0% 0.0%
Q4 212-295k$ 20.0% 20.0% 0.0%
Q5 >295k$ 20.0% 20.0% 0.0%

📚 A6. Références clés

Fondations théoriques - Shapley, L. S. (1953). A value for n-person games. Contributions to the Theory of Games. - Lundberg, S. M., & Lee, S.-I. (2017). A Unified Approach to Interpreting Model Predictions. NeurIPS.

Implémentations - Pedregosa, F. et al. (2011). Scikit-learn: Machine Learning in Python. JMLR. - Ke, G. et al. (2017). LightGBM: A Highly Efficient Gradient Boosting Decision Tree. NeurIPS.

Datasets - Pace, R. K., & Barry, R. (1997). Sparse Spatial Autoregressions. Statistics & Probability Letters. - Géron, A. (2022). Hands-On Machine Learning (3rd ed.). O’Reilly.

Méthodologie - Breiman, L. (2001). Statistical Modeling: The Two Cultures. Statistical Science. - Kohavi, R. (1995). A Study of Cross-Validation and Bootstrap. IJCAI.

❓ A7. FAQ étendue

Questions techniques

Q1. Pourquoi log-scale pour learning_rate ? → Effet non-linéaire : [0.01, 0.1] aussi important que [0.1, 1.0]. Échelle log échantillonne uniformément ordres grandeur.

Q2. GridSearch vs Optuna : lequel choisir ? → GridSearch si espace bien connu (<5 params). Optuna si exploration large ou budget temps limité.

Q3. Validation croisée : 5-Fold ou 10-Fold ? → 10-Fold pour criblage (estimation très stable). 5-Fold pour optimisation (compromis stabilité/coût).

Questions métier

Q1. Ce modèle est-il déployable en production ? → OUI pour API batch (prédictions quotidiennes). Nécessite Conformal Prediction pour IC en temps réel.

Q2. Comment gérer les biens >500k$ ? → Deux options : (1) Modèle Tobit (censure explicite), (2) Modèle “luxe” séparé sur données non censurées.

Q3. Généralisation à Paris/Londres ? → Pipeline reproductible — réentraîner sur données locales + adapter feature engineering (distance Champs-Élysées, stations métro, etc.).