Azure ML : Modèles de régression


Cet article fait partie d’une série de posts destinés à expliquer le fonctionnement de Azure ML.

Vous pouvez retrouver les précédents articles en cliquant sur ces liens:

 

Les modèles de régression sont utilisés pour prédire une valeur pour une variable cible (par exemple le prix de revente d’une voiture) en fonction de critères (Age du véhicule, nombre de Kms, état général etc..)

 

Les critères sont nommés variables dépendantes, alors que la variable cible est la variable indépendante ou label.

 

L’objectif est de créer un modèle qui prendra les critères en entrée et prédira la valeur de revente du véhicule.

 

Ce modèle peut être envisagé comme une fonction du type :

f(critère1,critère2…..) =  Valeur de revente.

 

Le prix réel auquel ce véhicule peut être vendu sera le plus souvent différent du prix prédit par la fonction.

 

L’objectif du modèle est de minimiser l’écart Réel-Prédiction.

 

Pour créer un modèle de ce type, nous allons tout d’abord avoir besoin d’un Dataset comprenant des données historiques de ventes de véhicules, que nous nommerons Dataset d’entrainement.

 

Ce Dataset d’entrainement va nourrir l’algorithme de régression et va lui permettre de créer un modèle.

 

Il ne restera plus qu’à passer  de nouvelles données au modèle, c’est-à-dire un Dataset de test qui comprendra tous les critères (âge,état,marque etc..), pour qu’il réalise ses prédictions.

 

Habituellement, lorsque vous devez créer un modèle à partir d’un Dataset existant, contenant les critères et les valeurs de revente, vous commencez par segmenter le Dataset en deux :

 

Le Dataset d’entrainement et le Dataset de Test (qui ne contiendra pas de valeurs dans la colonne prix de vente.)

 

L’algorithme de régression est ensuite appliqué au Dataset d’entrainement et génère un modèle.

 

Enfin, le Dataset de test est passé au modèle, qui prédit les valeurs de vente, dans cette colonne.

 

Il est alors possible de calculer les écarts, entre la valeur prédite par le modèle et la valeur réelle et de générer un score (le meilleur score étant celui du modèle qui génère le moins d’écarts.)

 

 

 

Pour calculer le score, il existe différentes méthodes statistiques.

 

 

Régression linéaire

 

Ce modèle est l’un de ceux disponibles dans ML Studio.

 

C’est l’un des plus anciens algorithmes, ce qui ne l’empêche pas de rester très populaire.

Cet algorithme cherche à calculer les paramètres d’une fonction permettant de tracer une droite, minimisant les écarts entre les valeurs de la variable indépendante d’un dataset.

 

A titre d’exemple pratique, nous utiliserons le Dataset Automobile price data (Raw) compris dans les Dataset exemples de ML Studio.

 

Pour simplifier, nous ne procéderons à aucune transformation des données.

 

Commencez par placer les modules suivants sur le Canvas :

 

 

Puis reliez les ports entre eux , lancez l’expérience, pour obtenir le résultat final suivant :

 

 

Vous pouvez alors visualiser les statistiques de performance du modèle, en cliquant sur le port de sortie du module Evaluate Model :

 

 

 

Explications de l’expérience

 

Le module Automobile price data (Raw) contient des données concernant des automobiles (propriétés) ainsi que leur prix (variable indépendante ou label).

 

 

 

Ce Dataset doit être scindé en deux : le Dataset d’entrainement et le Dataset Test.

 

Le module Split Data permet de réaliser cette tâche, le paramètre fraction of rows in the first output Dataset permet de déterminer le % des lignes utilisés par le Dataset d’entrainement(port de sortie 1), le reste étant assigné au Dataset de Test (port de sortie 2).

 

 

 

Le paramètre Random seed permet de rendre les résultats de l’échantillonage reproductibles.

 

Le module Linear Regression est l’algorithme proprement dit,  et comprend deux méthodes :

  • Ordinary least squares (Méthode des moindres carrés)
  • Online Gradient Descent (alogithme à gradient décroissant)

 

Il comprend aussi un paramètre L2 qui permet d’optimiser l’algorithme en réduisant le surapprentissage (un modèle qui fonctionne parfaitement avec les valeurs connues du Dataset d’entrainement, mais pas avec les valeurs du Dataset de Test.)

 

 

 

Il doit être connecté au port d’entrée numéro 1 du module Train Model.

 

Le module Train Model contient deux ports d’entrée (un pour l’agorithme, un pour le Dataset d’entrainement), et un port de sortie.

 

 

 

Il est nécessaire de préciser la colonne du Dataset d’entrainement qui contient la variable indépendante (label ou valeur cible).

Ici ce sera la colonne price.

 

Nous disposons désormais d’un modèle predictif, il ne nous reste plus qu’à le confronter à des données nouvelles : celles du dataset de Test.

 

Pour ce faire, nous disposons du module score, qui prend en entrée le modèle predictif (port 1) et le Dataset de Test (port 2).

 

 

 

Il retourne en sortie, le Dataset de Test avec une colonne price contenant les valeurs prédites.

 

Pour évaluer la performance du modèle et de ses prédictions, il nous reste à connecter le port de sortie du module Score au port d’entrée du module d’évaluation.

 

Ce dernier va comparer les valeurs prédites par le modèle, avec les valeurs réelles du Dataset de test, pour la colonne price.

 

Le résultat se présente sous la forme d’une matrice d’évaluation.

 

Ici le coefficient de détermination est de 0.87.

 

Cette performance peut être améliorée en ajustant les paramètres.

 

Comme nous l’avons vu précédemment, le module Linear Regression possède un paramètre L2 pour réduire le phénomène de surapprentissage (over-fitting).

 

Ce paramètre peut être modifié manuellement, ce qui peut être très gourmand en temps, puisqu’il faudre relancer l’expérience plusieurs fois pour vérifier la performance du modèle.

 

Un autre solution consiste à interposer un nouveau module entre Linear Regression et Score Model, le module Tune Model Hyperparameters.

 

 

 

Ce module comprend un paramètre principal permettant de préciser le mode d’optimisation des paramètres.

 

Par exemple, la méthode Random sweep performera un nombre déterminé d’itérations en choisissant une nouvelle valeur aléatoire pour le paramètre.

 

Ce mode peut être aléatoire, ou par grille, ou enfin par un nombre aléatoire de grilles.

 

Le choix d’une grille permet de tester une plage plus étendue de valeurs, pour le paramètre.

 

Ensuite, il est possible de choisir le nombre d’exécutions du code.

 

Enfin, il conviendra de sélectionner la colonne contenant la variable cible et les métriques d’évaluation de la performance du modèle.

 

 

 

Forêt de régressions linéaires

 

 

Un algorithme de forêt décisionnelle génère en arrière-plan un ensemble d’arbres décisionnels, qu’il agrège en forêt.

 

Chaque arbre va créer sa propre prédiction, l’ensemble des prédictions subissant par la suite un traitement statistique au sein de la forêt.

 

Commencez par placer les modules suivants sur le Canvas :

 

 

Puis reliez les ports entre eux , lancez l’expérience, pour obtenir le résultat final suivant :

 

 

 

Explications de l’expérience :

 

Le schéma est assez similaire à celui que nous avons étudié auparavant sous les réserves suivantes :

 

Les deux ports de sorties du module split Data sont connectés au module Tune Model Hyperparameters, alors que les paramètres de ce dernier sont modifiés pour augmenter d’une part le nombre d’hypothèses testées et le critère de sélection du meilleur modèle (coéfficient de détermination), d’autre part.

 

Au niveau du module Decision Forest Regression, la méthode d’échantillonage de chaque arbre, Bagging est sélectionnée.

 

L’algorithme va générer ensemble dont les paramètres seront optimisés par le module Tune Model Hyperparameters.

 

 

Les résultats moyens générés seront ensuite passés au Module Score Model.

 

Dans cet article nous avons abordé les algorithmes de régression, dans un prochain nous étudierons les modèles de classification.

Laissez un commentaire

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