Intelligence artificielle

Régression linéaire avec TensorFlow.js – Vers la science des données

Régression linéaire avec TensorFlow.js - Vers la science des données


Construisez un modèle de régression linéaire à l'aide de TensorFlow.js et utilisez-le pour prévoir les prix de l'immobilier

TL; DR Construisez un modèle de régression linéaire dans TensorFlow.js pour prévoir les prix des logements. Apprenez à gérer les données catégorielles et à mettre à l'échelle les fonctionnalités.

Pleut encore. Cela fait 3 semaines depuis la dernière fois que vous avez vu le soleil. Vous en avez assez de tout ce froid et de ce désagréable sentiment de solitude et de mélancolie.

La voix dans votre tête devient de plus en plus forte.

- "BOUGE TOI".

Très bien, vous êtes prêt à le faire. Où aller Vous vous rappelez que vous êtes presque cassé.

Un de vos amis vous a parlé de cet endroit, Ames, Iowa, et cela vous est resté gravé dans la tête. Après une recherche rapide, vous avez constaté que le temps était agréable toute l'année et qu'il pleuvait un peu, mais pas beaucoup. Excitation!

Heureusement, vous connaissez cet ensemble de données sur Kaggle qui pourrait vous aider à savoir combien coûterait la maison de vos rêves. Allons-y!

Exécutez le code source complet de ce didacticiel directement dans votre navigateur:

Nos données proviennent de Kaggle’s House Prices: Advanced Regression Techniqueschallenge.

Avec 79 variables explicatives décrivant (presque) tous les aspects des logements résidentiels à Ames, dans l'Iowa, ce concours vous met au défi de prévoir le prix final de chaque logement.

Voici un sous-ensemble des données que nous allons utiliser pour notre modèle:

  • GlobalQual - Évalue le matériel et la finition de la maison (0 - 10)
  • GrLivArea - Surface habitable au-dessus du niveau du sol (pieds carrés)
  • GarageCars - Taille du garage en capacité de la voiture
  • TotalBsmtSF - Nombre total de pieds carrés de sous-sol
  • Bain complet - Salles de bain complètes au dessus du niveau du sol
  • Année de construction - Date de construction d'origine
  • Prix ​​de vente - Le prix de vente de la propriété en dollars (nous essayons de le prédire)

Utilisons Papa Parse pour charger les données d’entraînement:

Construisons une meilleure compréhension de nos données. Premièrement - le score de qualité de chaque maison:

La plupart des maisons sont de qualité moyenne, mais il y en a plus de «bonnes» que de «mauvaises».

Voyons quelle est leur taille (c’est ce qu’elle a dit):

La plupart des maisons sont comprises entre 1 000 et 2 000, et certaines sont plus grandes.

Regardons l’année de leur construction:

Même si beaucoup de maisons ont été construites récemment, leur distribution est beaucoup plus large.

Quelle est la relation entre l'année et le prix?

On dirait que les maisons plus récentes sont plus chères, aucun amour pour le vieux et bien fait alors?

Oh ok, mais une qualité supérieure doit être synonyme de prix plus élevé, non?

Généralement oui, mais regardez la qualité 10. Certaines sont relativement bon marché. Des idées pourquoi cela pourrait être?

Une maison plus grande est-elle égale à un prix plus élevé?

On dirait que nous pourrions commencer notre modèle de prévision de prix en utilisant la surface habitable!

Les modèles de régression linéaire supposent qu'il existe une relation linéaire (pouvant être modélisée à l'aide d'une ligne droite) entre une variable continue dépendante Y et une ou plusieurs variables explicatives (indépendantes) X.

Dans notre cas, nous allons utiliser des fonctionnalités telles que salon (X) pour prédire la prix de vente (Y) d'une maison.

Régression linéaire simple

La régression linéaire simple est un modèle qui a une seule variable indépendante X. Il est donné par:

Où a et b sont des paramètres appris lors de la formation de notre modèle. X sont les données que nous allons utiliser pour former notre modèle, b contrôle la pente et une le point d'interception avec le y axe.

La régression linéaire multiple

Le modèle à plusieurs variables est une extension naturelle du modèle de régression linéaire simple. Il est donné par:

où x1, x2,…, xn sont des entités de notre jeu de données et w1, w2,…, wn sont des paramètres appris.

Fonction de perte

Nous allons utiliser l’erreur quadratique moyenne moyenne pour mesurer la distance entre nos prévisions et les prix réels des logements. Il est donné par:

où l'hypothèse / prédiction hwEst donné par:

Actuellement, nos données se trouvent dans un tableau d'objets JS. Nous devons le transformer en tenseurs et l’utiliser pour la formation de nos modèles. Voici le code pour cela:

Nous stockons nos fonctionnalités dans X et les étiquettes dans y. Ensuite, nous convertissons les données en tenseurs et les divisons en ensembles de données de formation et de test.

Caractéristiques catégoriques

Certaines des fonctionnalités de notre jeu de données sont catégoriques / énumérables. Par exemple, GarageCars peut être dans la gamme 0-5.

Le fait de laisser les catégories représentées sous forme d’entiers dans notre jeu de données peut introduire une dépendance implicite à l’ordre. Quelque chose qui n'existe pas avec les variables catégorielles.

Nous allons utiliser l’encodage one-hot de TensorFlow pour créer un vecteur entier pour chaque valeur afin d’interrompre le classement. Tout d’abord, spécifions le nombre de valeurs différentes que chaque catégorie a:

Nous allons utiliser tf.oneHot () pour convertir une valeur individuelle en une représentation one-hot:

Notez que le createDataSets () fonction accepte un paramètre appelé catégoricalFeatures qui devrait être un ensemble. Nous allons nous en servir pour vérifier si nous devons ou non traiter cette fonctionnalité de manière catégorique.

Mise à l'échelle des fonctionnalités

La mise à l'échelle des entités est utilisée pour transformer les valeurs des entités en une plage (similaire). La mise à l’échelle des fonctionnalités permettra à nos modèles d’apprendre plus rapidement, car nous utilisons Gradient Descent pour l’entraîner.

Utilisons l’une des méthodes les plus simples pour la mise à l’échelle des fonctionnalités - normalisation min-max:

cette méthode redimensionne la plage de valeurs dans la plage de [0, 1].

Maintenant que nous connaissons le (s) modèle (s) de régression linéaire, nous pouvons essayer de prévoir les prix des logements en fonction des données dont nous disposons. Commençons simplement:

Construire un modèle de régression linéaire simple

Nous intégrerons le processus de formation dans une fonction que nous pourrons réutiliser pour nos futurs modèles:

trainLinearModel accepte les caractéristiques et les étiquettes de notre modèle. Définissons un modèle de régression linéaire à l’aide de TensorFlow:

Puisque TensorFlow.js n’offre pas de fonction de perte RMSE, nous utiliserons MSE et en prendrons la racine carrée plus tard. Nous suivrons également l’erreur moyenne absolue (MAE) entre les prévisions et les prix réels:

Voici le processus de formation:

Nous formons pour 100 époques, mélanger les données à l'avance, et utiliser dix% de celui-ci pour validation. Le RMSE et le MAE sont visualisés après chaque époque.

Entraînement

Notre modèle de régression linéaire simple utilise le GrLivArea fonctionnalité:

Nous n’avons pas de caractéristiques catégoriques, nous laissons donc cet ensemble vide. Regardons la performance:

Construction d'un modèle de régression linéaire multiple

Nous avons beaucoup plus de données que nous n’avons pas encore utilisées. Voyons si cela aidera à améliorer les prévisions:

Nous utilisons toutes les caractéristiques de notre jeu de données et transmettons un ensemble de celles catégoriques. Avons-nous fait mieux?

Globalement, les deux modèles fonctionnent à peu près au même niveau. Cette fois, l’augmentation de la complexité du modèle ne nous a pas donné une meilleure précision.

Une autre façon d'évaluer nos modèles consiste à vérifier leurs prévisions par rapport aux données de test. Commençons par la régression linéaire simple:

Comment l'ajout de plus de données a-t-il amélioré les prévisions?

Eh bien, ce n’est pas le cas. Encore une fois, le fait de disposer d’un modèle plus complexe formé avec plus de données n’a pas donné de meilleures performances.

Tu l'as fait! Vous avez créé deux modèles de régression linéaire qui prédisent le prix de l'immobilier en fonction d'un ensemble de fonctionnalités. Vous avez également fait:

- Mise à l'échelle des fonctionnalités pour une formation plus rapide des modèles

- Convertir des variables catégorielles en représentations one-hot

- Implémenter RMSE (basé sur MSE) pour l'évaluation de la précision

Exécutez le code source complet de ce didacticiel directement dans votre navigateur:

Est-il temps de se renseigner sur les réseaux de neurones?

Traitement des données catégoriques dans les modèles d'apprentissage automatique

A propos de la mise à l'échelle et de la normalisation des fonctionnalités

RMSE: Root Mean Square Error

Afficher plus

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.

Articles similaires

Laisser un commentaire

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

Bouton retour en haut de la page
Fermer