Domaine : Machine Learning · Période : 2025 Tags :
Python·TimesFM·pandas
- Forecasting des prix immobiliers par commune française à partir des données DVF libre d'accès (8,5 M transactions, 2014-2024)
- Pipeline de prétraitement complet sur 8,5 M de transactions : détection des outliers, lissage par moyenne mobile
- Prévision zero-shot avec TimesFM 2.5 (Google, 200 M paramètres)
- Scan des communes françaises avec la meilleure variation de prix prévue sur les 5 prochaines années
Construire un pipeline de forecasting immobilier à partir des données DVF en utilisant des modèles de séries temporelles basés sur Transformers (TimesFM, Google) afin d'estimer l'évolution du prix au m² et détecter les communes offrant les meilleures perspectives de rendement sur les cinq prochaines années.
Pour ce projet, je suis parti des données DVF (Demande de Valeurs Foncières) disponibles sur data.gouv.fr, qui couvrent 8,5 millions de transactions immobilières en France entre 2014 et 2025. Dans ces données libres d'accès, grâce aux colonnes prix et surface_habitable nous pouvons calculer le prix au m² pour chaque transaction.
Statistiques descriptives des données DVF
Ainsi, en regroupant les données par communes et par mois, il est possible de tracer le prix au m² d'une commune de manière mensuelle sur les dernières années. Certaines communes n'ayant pas beaucoup de transactions sont fortement impactées par la dispersion. Ainsi, en explorant les données, on se retrouve souvent avec des séries contenant des outliers.
Prix au m² mensuel de la commune de Riom, avant prétraitement
Afin de rendre les données plus stables et utilisables, j'ai effectué un prétraitement en deux étapes. La première étape consiste à détecter les points écartés de la série grâce à un algorithme basé sur le filtre de Hampel. Le filtre de Hampel compare chaque point à ses ±5 voisins temporels plutôt qu'à l'ensemble de la série. Pour chaque mois, on calcule la médiane et le MAD local sur cette fenêtre de 11 points : si le prix s'en écarte de plus de 3 écarts-types robustes (MAD × 1.4826), il est remplacé par cette médiane locale. La correction est appliquée immédiatement, ce qui évite de détecter comme outlier un point qui était en réalité voisin d'un point déjà corrigé. Voilà par exemple le résultat sur la même série que ci-dessus.
Prix au m² mensuel de la commune de Riom, après détection et correction des outliers
Les données étant encore trop volatiles, la deuxième étape a été d'appliquer un lissage par moyenne mobile sur 6 mois afin de rendre les séries plus stables et exploitables pour le forecasting. Voici par exemple le résultat du lissage sur la même série que précédemment.
Prix au m² mensuel de la commune de Riom, après lissage par moyenne mobile
Le pipeline étant fini, nous avons enregistré en catégorisant selon le type de bien car entre un studio et une maison les dynamiques de prix seront différentes (Angers par exemple étant une ville étudiante a connu une forte augmentation du prix de ses studios). Nous divisons donc en studio, T2, T3 et plus, et maison.
TimesFM 2.5 (200 M paramètres, pré-entraîné par Google sur >100 Md de points) est évalué en zero-shot, c'est-à-dire sans entraînement. Ici de la même manière que pour un modèle decoder-only comme GPT, qui prédit la suite de la phrase à partir du début, TimesFM prédit la suite de la série temporelle uniquement à partir du contexte qui lui est fourni. Le modèle prédit les 12 mois suivants de prix au m² d'une commune. Les prédictions incluent les intervalles de confiance Q10-Q90. Voilà un exemple de prédiction pour la commune de Riom :
Prévision TimesFM zero-shot sur 12 mois sur la commune de Riom
En faisant la prédiction du prix d'ici 2027 sur l'ensemble des communes disponibles dans le dataset et en calculant la variation, on est ainsi capable d'afficher la map suivante permettant de visualiser directement les opportunités où investir. Cette map est disponible dans le dossier output/.
Variation prévue du prix au m² d'ici 2027 par commune
En plus de la map, on dispose également d'un ranking par commune permettant d'afficher directement le classement des meilleures communes où investir. Ce classement est également disponible dans le dossier output/.
Classement des meilleures communes où investir