Technologie

Zillow Zestimate Competition – Summer S. Sun

Zillow Zestimate Competition - Summer S. Sun


0*j1170yfRYkudxXju - Zillow Zestimate Competition - Summer S. Sun

Pour la plupart des gens, l'achat d'une maison est l'investissement le plus important de leur vie. L’impact considérable d’un investissement aussi important sur chaque aspect de la vie rend indispensable la connaissance approfondie par les futurs propriétaires de leur maison potentielle. Heureusement pour tous les futurs propriétaires, des entreprises telles que Zillow ont tenté de résoudre le problème d'asymétrie de l'information dans le secteur immobilier (par exemple, le décalage des connaissances d'un produit entre le vendeur et l'acheteur) en établissant des prix de l'immobilier estimés («Zestimates») sur plus. que 100 millions de propriétés américaines facilement disponibles sur Internet. Cependant, tout n’est pas rose dans le jardin: aujourd’hui, Zillimate a un taux d’erreur moyen de 4,3%. Cela signifie que la moitié des maisons sont vendues à 4,3% du prix estimé de Zillow, mais que l’autre moitié des maisons sont vendues à des prix très différents de ces estimations. Des estimations inexactes peuvent entraîner des coûts élevés pour les acheteurs et les vendeurs (car elles entraînent soit un trop-perçu ou une sous-évaluation) et ont même abouti à un recours collectif contre Zillow de la part de propriétaires qui ont accusé le Zestimate de sous-évaluer nettement leurs propriétés. Bien que le procès ait été rejeté par un tribunal, il souligne néanmoins l'urgence d'améliorer continuellement la précision du Zestimate.

Heureusement, Zillow a hâte de répondre à cette question: lors de son récent concours Kaggle, la société a mis un million de dollars en réserve pour ceux qui peuvent améliorer la précision de leur fonctionnalité Zestimate, mesurée par l'erreur logarithmique entre le Zestimate et le prix de vente réel. .

Ce billet de blog décrit le parcours de l’équipe Alpha sur la prédiction de la précision du Zestimate et sur la manière dont nous avons pu battre 70% des équipes de la compétition de Zillow Kaggle en une semaine.
Pour que le processus d’attaque de la compétition Killgle de Zillow se déroule sans encombre, nous avons appliqué le processus intersectoriel standard pour l’exploration de données (CRISP-DM). En résumé, le cadre CRISP divise un projet en six phases distinctes (compréhension de l’entreprise, compréhension des données, préparation des données, modélisation, évaluation des modèles et déploiement). Notre blog est structuré autour de ce cadre.

Zillow nous a fourni deux jeux de données différents, l’un (les «propriétés») contient les informations de toutes les propriétés répertoriées sur Zillow en 2016 provenant de trois comtés de Californie (Orange, Los Angeles et Ventura). Il y a environ 3 millions d'observations dans ces données. L’autre est un ensemble de données («transactions») contient toutes les transactions dans ces trois comtés avant le 15 octobre 2016, ainsi que certaines des transactions après le 15 octobre 2016.

Dans le cadre de la compréhension des données, nous avons effectué une EDA approfondie sur les jeux de données. La première étape de l’EDA a été utilisée pour obtenir une compréhension de la lacune (incluse dans le graphique ci-dessous). Au lieu de simplement ignorer les valeurs manquantes, nous avons évalué à l'aide de graphiques de densité pour chaque variable incluse dans le jeu de données si le caractère manquant de la variable contenait des informations sur l'erreur de log (en supposant que celle-ci soit causée par le manque). Nous avons utilisé ces informations dans notre processus de nettoyage des données, comme indiqué ci-dessous.

L’AED a également souligné qu’il n’y avait que peu ou pas de corrélation (linéaire) entre les différentes variables indépendantes et la variable dépendante (logerror). Cela indique que l'erreur de journal n'est pas causée par une variable spécifique, mais que nous devrions plutôt examiner des parties de variables (par exemple, au cours d'une période donnée) ou rechercher des caractéristiques qui n'ont pas encore été incluses dans les jeux de données susceptibles de causer l'erreur de log. Le sentiment du marché en est un exemple. En 2016, les prix de l'immobilier en Californie ont dépassé les niveaux enregistrés avant la crise financière. Les prix élevés et la faiblesse de l'offre immobilière pourraient créer un marché «en ébullition», où les futurs propriétaires feraient une surenchère (risquant de créer un écart entre la valeur estimée d'une maison et le prix de vente). Lorsqu'on examine les séries chronologiques de l'erreur de log, il semble y avoir certaines indications sur les sentiments du marché, car celle-ci augmente au cours de certaines périodes. Étant donné le peu de temps dont disposent les données, il n'est pas possible de généraliser une telle revendication, mais nous en avons tenu compte dans nos processus d'ingénierie des fonctionnalités et de nettoyage des données.

Comme ce qui a été mentionné précédemment, dans ce projet, Zillow a fourni deux ensembles de données (propriétés, transactions) pour nous permettre de prédire l'erreur de log entre leur Zestimate et le prix de vente réel. Avant de construire les modèles de prédiction, nous devons d’abord obtenir des données propres et utilisables pouvant être intégrées à notre modèle pour la formation. Cependant, comme ce qui a été mentionné dans EDA, il existe de nombreuses colonnes qui contiennent une quantité considérable de données manquantes. Le premier travail de nettoyage des données à effectuer serait donc lié au traitement de ces colonnes incomplètes dans les données de propriétés.
Eh bien, l'imputation serait le meilleur moyen de traiter ces valeurs manquantes. Cependant, il y a un point délicat ici. Nous ne savons pas comment Zillow a obtenu le résultat de Zestimate de ses modèles. Je veux dire, il est fort probable que l’inexactitude de Zestimate soit en quelque sorte liée à l’absence. Autrement dit, la valeur que nous devons prédire ici, l’erreur de log, n’est introduite que par ces valeurs manquantes. Il serait donc très intéressant de pouvoir former le modèle tout en préservant dans une certaine mesure les informations de NA. Cependant, nous devons également fournir une version d'imputation des données, ce qui serait plus raisonnable pour former le modèle dans des situations courantes, comme ce que nous faisions toujours dans la plupart des concours d'apprentissage automatique de Kaggle.
Nous avons donc deux approches pour obtenir des données non corrigées, la première consiste à préserver les informations manquantes, tandis que l’autre consiste à supprimer les NA en procédant par imputation.

  • Première approche:
    Conservez toutes les colonnes, faites des imputations raisonnables, par ex. area / num_garage, area / num_pool, etc .;
    mettre les NA à zéro;
    Réduisez le nombre de niveaux en séparant les colonnes catégoriques pour les adapter à différents modèles, par exemple Rpart, RandomForest.
  • Deuxième approche:
    Supprimer les colonnes avec plus de 75% de données manquantes;
    Supprimez les colonnes dupliquées et hautement corrélées, ce qui peut entraîner une colinéarité.
    Mettre à l'échelle les informations géographiques;
    Supprimer toutes les observations de propriété NA (11437 sur 2985217 observations de propriété)

Une fois que l'objectif commercial et les données sont compris, le cadre rapide d'ingénierie des fonctionnalités est mis en place. Le processus suit le processus agile pour permettre une rotation rapide de la validation du succès de l’ingénierie des caractéristiques basée sur le développement itératif.

La première étape consiste à examiner les valeurs aberrantes sur la base des méthodes MAD, méthodes Centile, méthodes Valeur absolue. La suppression des valeurs aberrantes permet aux données de suivre une corrélation correcte. La suppression des valeurs aberrantes logerror a été améliorée avec succès dans le classement du classement. Bien que ce ne soit pas si réussi pour toutes les autres fonctionnalités.

Les ensembles de données fournis par Zillow sont relativement intuitifs. La deuxième étape consiste à réduire le nombre de fonctionnalités en fournissant des entrées humaines. Par exemple, il y a 7 colonnes qui concernent différents types de pièce. Et dans le même temps, les données souffrent d'un manque grave. La combinaison pondérée de caractéristiques résoudra le problème de la lacune mieux que l'imputation. Le résultat de la combinaison de colonnes similaires est une réduction des données manquantes et une information plus efficace pour les modèles.

La troisième étape importante serait la combinaison de niveaux similaires pour les colonnes catégorielles. Par exemple, pour mettre en évidence les différences entre les 3 principaux marchés du marché immobilier de Los Angeles, les 3 niveaux sont étendus sous la forme de 3 fonctionnalités différentes. Si la catégorie importante comporte de nombreux niveaux, il sera utile de combiner certains des niveaux similaires.

Comme les 3 étapes de base mentionnées, un moyen important d’évaluer l’ingénierie des fonctionnalités consiste à configurer la validation croisée pour plusieurs modèles. Tels que les modèles linéaires, aléatoires de forêt et xgboost. Cela vous permet de vérifier comment les différents modèles réagissent au changement de données et de déterminer le moyen le plus efficace d’augmenter votre classement au classement. Ceci est similaire au concept d'apprentissage automatique appelé méthodes gloutonnes. Les méthodes gourmandes doivent faire le pas qui permet le plus d'amélioration. L'inconvénient de ce concept est que vous pourriez être pris au piège de l'optimisation locale.

Nous avons testé les modèles suivants:

  • Régression Ridge
    Régression de lasso
    Arbre de décision
    Forêt aléatoire
    Machine d'amplification de gradient (gbm)
    Xgboost

Comme référence pour l’évaluation des différents modèles, nous avons utilisé le MAE lorsque la moyenne de l’erreur de log (observations globales) est prédite pour toutes les observations, c’est-à-dire la même valeur, quelles que soient les caractéristiques.

Les résultats de la régression de Ridge et de Lasso n'étaient pas prometteurs. Cela n’était pas surprenant, car l’EDA indique qu’il n’existe aucune dépendance linéaire de l’erreur de journalisation par rapport à une entité. Il aurait peut-être été possible d'obtenir un meilleur résultat avec davantage d'ingénierie des fonctionnalités, mais nous avons décidé de passer à d'autres modèles.

Pour les arbres de décision, nous avons appliqué le package R rpart et n'avons trouvé aucun résultat. C'est à dire. rpart n'a même pas été en mesure de trouver dans les données une structure permettant de prédire l'erreur de log. Le meilleur ajustement donne un arbre avec un nœud qui renvoie l'erreur de log moyenne. Cela nous a montré à quel point cette tâche est difficile.

La forêt aléatoire a été le premier pas en avant en nous fournissant un modèle avec un certain pouvoir prédictif, bien que le résultat n'ait pas été écrasant. Il nous a donné un rang kaggle de 1581 (au moment de la soumission).

Nous avons obtenu nos meilleurs résultats avec la Gradient Boosting Machine et Xgboost. Ces approches sont décrites plus en détail ci-dessous.

A. ElasticNet
Le modèle ElasticNet a été un modèle de réussite pour la compétition Kaggle. ElasticNet est un modèle de régression linéaire qui combine la régularisation de L1 et de L2. Cette combinaison permet l'apprentissage d'un modèle clairsemé où peu de poids sont non nuls comme Lasso, tout en maintenant les propriétés de régularisation de Ridge. ElasticNet est utile lorsque plusieurs fonctionnalités sont corrélées les unes aux autres.

B. GBM
L'amélioration du gradient est une technique d'apprentissage automatique des problèmes de régression et de classification, qui produit un modèle de prédiction sous la forme d'un ensemble de modèles de prédiction faibles, généralement des arbres de décision. Il construit le modèle étape par étape, comme le font d’autres méthodes de renforcement, et les généralise en permettant l’optimisation d’une fonction de perte arbitraire différentiable.

C. Xgboost
Si nous souhaitons essayer xgboost dans ce projet, c’est parce qu’il est rapide, ce qui permet beaucoup plus facilement que d’autres méthodes basées sur des arbres de procéder à la validation croisée en quelques heures plutôt que quelques jours. Cependant, avant d’entraîner le modèle, une chose pourrait être faite pour améliorer potentiellement les performances de prévision.

Comme le montre la figure ci-dessous, l'erreur de log à partir des données de transaction d'origine est très centralisée autour de 0, ce qui est très raisonnable. Cependant, ces données extrêmement centralisées empêchent l'algorithme d'apprentissage de détecter la différence d'erreur logerror entre les propriétés dans une plage extrêmement limitée.

Bon nombre de lecteurs sont peut-être familiarisés avec l'astuce du noyau dans la machine à vecteurs de support (SVM). En utilisant l’astuce du noyau, on pourrait éventuellement trouver un hyperplan dans un espace dimensionnel supérieur pour résoudre le problème de la régression ou de la classification en élargissant les distances entre les données par projection à un espace dimensionnel supérieur (voir la figure ci-après). Par exemple, dans le noyau gaussien:

σ, la largeur du noyau, ici, est un paramètre qui indique la clarté entre les points cartographiés dans l’espace de dimension supérieure. En général, plus petit σ indique plus lointain, tandis que plus grand σ indique une distance plus petite entre les données projetées.

Cependant, dans ce cas, nous n'essayons pas de tricher avec les fonctions du noyau, nous essayons d'étirer les logerrors (les étiquettes) avec la fonction sigmoïde, pour l'éloigner les uns des autres, ce qui pourrait permettre une meilleure prédiction. .

Ici, nous avons passé les logerrors à une fonction sigmoïde, ce qui pourrait nous aider à étirer les données autour de 0, tout en saturant l’influence de la logerror qui est loin de 0. La figure précédente montre les comparaisons entre les différents transformations sigmoïdes des erreurs logerrorales. Un p plus grand indique une plage étendue plus large des logerrors, ce qui facilite l'apprentissage de l'algorithme.

Dans le processus de formation xgboost, nous avons défini une validation croisée de 10 fois, avec 100 itérations de recherche pour trouver les meilleurs paramètres de xgboost dans chaque test. Avec le modèle formé, nous avons effectué la prévision sur l'ensemble des 9 millions de propriétés.

En essayant de nombreux modes avec des paramètres différents, nous avons commencé à examiner la répartition de l'erreur de prédiction. Il s'est avéré qu'il existe des similitudes pour tous les essais:

En plaçant l’erreur de log sur l’axe des x et l’erreur de prédiction absolue sur l’axe des y, le diagramme en forme de V apparaît. Cela indique que les modèles ont tendance à prédire des valeurs autour de la moyenne logerror, ce qui est le mieux possible pour minimiser l'EAM. La figure ci-dessus montre le résultat d'une forêt aléatoire, mais les autres modèles semblent similaires, la plupart du temps avec une forme en V encore plus claire.

Tracer les mêmes informations d'une autre manière donne la figure suivante:

Sur l’axe des y figurent l’erreur de prédiction absolue et sur l’axe des x, le rang de l’erreur log, trié en fonction de sa valeur absolue. Sur le côté gauche, il y a les erreurs de log avec les erreurs absolues les plus élevées. Ce diagramme montre que les observations avec le logerror le plus élevé produisent les erreurs de prédiction les plus élevées. Cela pourrait être interprété comme normal, car les valeurs logerrors élevées peuvent être considérées comme des valeurs aberrantes, mais d'un autre côté, ces observations auraient un impact important sur la finale MAE. La ligne verticale rouge sépare les 300 logerrors absolus les plus élevés du reste.

Le MAE global, dans ce cas, était de 0,06694 (sur un ensemble de tests avec 18055 observations). Sans les 300 logerrors les plus élevés, le MAE aurait été de 0,05428, ce qui représente une différence énorme dans l'affaire Zillow.

On peut donc en conclure que les observations avec une logerror élevée, en particulier, méritent plus d’attention. Si vous parvenez à les prévoir correctement, votre MAE global diminuera de manière significative.

Après la date limite du projet, nous avons un peu plus étudié les données et avons trouvé une caractéristique intéressante en comptant le nombre de valeurs manquantes avant la ligne (NA):

Le logerror absolu moyen augmente le nombre de valeurs manquantes dans une observation au-delà de 28. Ceci peut servir de délimiteur pour un traitement séparé des cas de logerror élevé.

Lors de l’évaluation de la compétition de Zillow’s Kaggle, notre principale conclusion est que prédire un prédicteur déjà précis est un travail assez difficile. Afin de faire une réelle différence dans l'exactitude des prévisions, nous avons établi que pour tous nos modèles, l'ingénierie des caractéristiques était la clé. Et bien que GBM nous ait donné les meilleurs résultats, nous avons constaté que XGBoost était généralement le modèle le plus rapide et le plus pratique à utiliser en termes de gestion des valeurs éloignées et de validation croisée. Comme nos analyses ont constamment montré que seule une très petite partie des données est responsable des plus grandes erreurs de logique, notre principal atout pour toute référence future est de nous concentrer davantage sur ces observations pour améliorer encore nos résultats.

Show More

SupportIvy

SupportIvy.com : Un lieu pour partager le savoir et mieux comprendre le monde. Meilleure plate-forme de support gratuit pour vous, Documentation &Tutoriels par les experts.

Related Articles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
Close