Introduction en Machine Learning

Apprentissage machine

Introduction en Machine Learning

Apprentissage machine

Table of contents

  1. Introduction
  2. Qu’est ce que le data science ?
  3. Qu’est ce que le machine learning ?
  4. Types de problèmes en Machine Learning (ML)
  5. Modèle linéaire en dimension 1: Regression linèaire
  6. Motivation statistique
  7. Estimation des paramètres
  8. Évaluez l’exactitude de l’estimation à l’aide de R2
  9. Conclusion

1. Introduction

Le machine learning ou Apprentissage automatique est un mot très en vogue dans le domaine du Big Data.

image

Le machine learning est un domaine captivant. Issu de nombreuses disciplines comme les statistiques, l’optimisation, l’argorithmique ou le traitement du signal. C’est un champ d’études en mutation constante qui s’est imposé dans notre socièté. Déjà utilisé depuis des décennies dans la reconnaissance automatique des caratères ou les filtres anti-spam, il sert maintenant à: protéger contre la fraude bancaire, prédire la crimininalité, la recommandation des services et produits adptés à nos goûts, mais aussi à la reconnaissance des visages par exemple avec notre appareil photo etc. Nous allons voir par la suite une définition et des exemples afin de mieux appréhender ce domaine très en mode.

La science des données (ou data science en anglais) et le machine learning (ou apprentissage automatique) sont deux mots très en vogue lorsque l’on parle de la révolution Big Data, de prédiction des comportements ou tout simplement de la transformation numérique des entreprises. Et comme pour tous les domaines innovants, il est parfois difficile de s’y repérer.

Donc il serait intéressant de faire un tour rapide du domaine de la science des données, et en quoi elle est devenue une source de valeur ajoutée pour les entreprises.

2. Qu’est ce que le data science ?

Le premier objectif du data scientist est de produire des méthodes (automatisées, autant que possible) de tri et d’analyse de données afin d’en extraire des informations utiles.

Pourquoi un data scientist ? Pour trois raisons:

  • L’explosion de la quantité de données produites et collectées par les humains,
  • L’amélioration et l’accessibilité plus grande des algorithmes de traitement des données,
  • L’augmentation exponentielle des capacités de calcul des ordinateurs.

En d’autres termes l’objectif étant de récupérer des données de plusieurs sources différentes, et d’en extraire des informations qui vont servir l’entreprise, notamment l’aide à la décision.

En somme la data science est un nouveau domaine de travail, qui augmente les capacités d’analyse classique, afin d’aider les entreprises à prendre des décisions informées. Elle s’appuie pour cela sur des données utiles et ne peut s’appliquer que dans certaines problématiques précises.

Par ailleurs le rappel de quelques notions statistiques dans cet article, dont certains concepts seront illustrés par des codes Python, serait intérresant.

3. Qu’est ce que le machine learning ?

image

Le Machine learning n’est pas nouveau (plusieurs décennies de recherches) mais le concept connaît un engouement ces dernières années qui n’est pas déconnecté de l’essor du Big Data. Mais commençons par le commencement. Arthur Samuel (1959) (un pionnier en matière d’intelligence artificielle, professeur à Stanford ) avait défini le machine learning comme « le domaine d’étude qui donne aux ordinateurs la capacité d’apprendre sans être explicitement programmés ». Cette définition, qui laisse un peu songeur, est quand même vague. Aujourd’hui, Tom Mitchell (1998) en donne une définition un peu plus moderne : « Un programme informatique se dit d’apprendre de l’expérience E par rapport à une catégorie de tâches T et mesure de la performance P, si sa performance à des tâches T, telle que mesurée par P, s’améliore avec l’expérience E.»

Le machine Learning traite des sujets complexes où la programmation traditionnelle trouve ses limites. Construire un programme qui conduit une voiture serait très complexe voire impossible. Cela étant dû aux nombres infinis des cas possibles à traiter… Le Machine learning traite cette problématique différemment. Au lieu de décrire quoi faire, le programme apprendra par lui même comment conduire en “observant” des expérimentations.

 Machine Learning : Donner la possibilité à l’ordinateur d’apprendre sans être programmé

En fonction des données d’expérimentation que prendra l’algorithme d’apprentissage en entrée, il déduira par lui même une hypothèse de fonctionnement. Il utilisera cette dernière pour de nouveaux cas, et affinera son expérience au fil du temps.

4. Types de problèmes en Machine Learning (ML)

On distingue deux types de problèmes en ML:

  • Supervised Learning ou Apprentissage Supervisé
  • Unsupervised Learning ou Appentissage non Supervisé.

Supervised Learning

C’est le type le plus récurrent. Il s’agit de fournir aux algorithmes d’apprentissages un jeu de données d’apprentissage (Training Set) sous forme de (X, Y) avec X les variables prédictives, et Y le résultat de l’observation. En se basant sur le Training Set, l’algorithme va trouver une fonction mathématique qui permet de transformer (au mieux) X vers Y. En d’autres termes, l’algorithme va trouver une fonction F tel que :

 Exemple: 

En ayant un Training Set composé de plusieurs lignes ou chacune décrit les caractéristiques d’une voiture (variables prédictives) : comme le modèle, la couleur, nombre Km parcourus…. et le prix du véhicule (variable Y à prédire). Nous pouvons appliquer un algorithme supervisé pour définir une fonction de prédiction de prix d’une voiture. Cette fonction pourra être utilisée pour prédire le prix d’une voiture qui n’était pas dans le Training Set.

Unsupervised Learning

Dans ce type, on va donner à l’algorithme des données, éventuellement non structurées. Et on le laisse trouver une sorte de structure dans nos données. Cela peut être des regroupements de données (Clustering) autrement dit la classification.

 Exemple: 

En disposant des données d’achat des internautes dans un site e-commerce (amazone par exemple), l’algorithme de clustering va trouver les produits qui se vendent le mieux ensemble.

5. Modèle linéaire en dimension 1: Regression linèaire

L’origine du mot régression vient de Sir Francis Galton. En 1885, travaillant sur l’hérédité, il chercha à expliquer la taille des fils en fonction de celle des pères. Il constata que lorsque le père était plus grand que la moyenne,taller than mediocrity, son fils avait tendance à être plus petit que lui et, a contrario, que lorsque le père était plus petit que la moyenne,shorter than mediocrity, son fils avait tendance à être plus grand que lui. Ces résultats l’ont conduit à considérer sa théorie deregression toward mediocrity.

La base statistique la plus fondamentale des modèles de Machine Learning est la suivante: .

Cette équation simple indique ce qui suit:

  • nous supposons que nous avons n observations d’un ensemble de données, et nous choisissons sur :
  • est la sortie de cette observation appelée la cible
  • est appelé une caractéristique et est une variable indépendante que nous observons
  • est le vrai modèle qui établit le lien entre les caractéristiques et la sortie
  • est le bruit du modèle. Les données que nous observons ne se situent généralement pas sur une ligne droite, car il existe des variations de la mesure dans la vie réelle.

Dans cet article nous considérons un cadre assez simple c’est à dire que nous n’avons qu’une seule fonction par observation. Dans la vraie vie, nous avons généralement plusieurs fonctionnalités par observation. Un exemple de ceci pourrait être le suivant: vous travaillez en tant que data scientist dans une banque, vous auriez généralement plusieurs informations sur chaque client: nom, adresse, âge, famille, compte, revenu ect.

6. Motivation statistique

Supposons que nous avons observations , et pour chaque observation , nous avons une caractéristique . Notre rôle est d’identifier le lien entre et pour pouvoir prédire . Pour construire notre prédiction, nous devons identifier :

  • un modèle, qui est le lien entre et les entités, représenté ici par la fonction f dans:. Dans la vie réelle, ce modèle est inconnu et est estimé par: où le chapeau décrit une estimation. Nous essayons d’estimer qui correspond à la vie réelle .
  • nous devons également identifier des paramètres qui aideront notre prédiction à se rapprocher le plus possible des données réelles. Les paramètres sont généralement définis afin de minimiser la distance entre notre modèle et les données, c’est-à-dire qu’ils sont définis de sorte que la dérivée d’une fonction de perte (par exemple: ) soit égale à 0.

Le vrai modèle et les vrais paramètres dans la vie réelle sont inconnus. Pour cette raison, nous faisons une sélection parmi plusieurs modèles (linéaires ou non linéaires). La sélection du modèle est généralement basée sur une analyse exploratoire des données.

Désormais, nous nous concentrerons sur le modèle le plus élémentaire appelé régression linéaire unidimensionnelle. Ce modèle indique qu’il existe un lien linéaire entre les entités et la variable dépendante.

Le vrai modèle que nous attendons est le suivant: :

  • est appelé l’interception, c’est un terme constant.
  • est le coefficient associé à . Il décrit le poids de sur la sortie finale.
  • est appelé résiduel. C’est un terme de bruit blanc qui explique la variabilité des données réelles.

L’hypothèse sur sont : , c’est-à-dire une condition de bruit blanc pour tout i = 1,…,n, c’est-à-dire une condition d’homoscédasticité. On parle d’homoscédasticité lorsque la variance des erreurs stochastiques de la régression est la même pour chaque observation i (de 1 à n observations)

Cependant, les vrais paramètres restent inconnus car ce sont ceux que nous prévoyons d’estimer. Par conséquent, le modèle que nous estimons est le suivant: .

Le mieux pour expliquer ce que ça signifie est de prendre un petit exemple simple. Imaginez que vous voulez savoir si vous payez trop cher votre loyer. Vous avez récupéré sur un site de location une trentaine de prix des locations disponibles, ainsi que la surface associée :

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sklearn.linear_model as lm
import math
from scipy import stats

df = pd.read_csv('house.txt', sep=",")
df.head(6)

image

Télécharger les données house ici

Télécharger le notebook

Une visualisation des données donne :

#Scatter plot
plt.figure(figsize=(10,6))
plt.scatter(df['surface'], df['loyer'])

#On ajoute les titres des axes
plt.xlabel("Surface des loyers", fontsize = 12)
plt.ylabel("Prix des loyers", fontsize = 12)
plt.title("Relation entre la surface et le prix des loyers")

#plt.plot(df['surface'], df['loyer'], 'ro', markersize=2)
plt.show()

image

D’après cette visualisation on peut se dire que le montant du loyer dépend de manière linéaire de la surface du logement. On peut donc émettre une hypothèse de modélisation qui est le phénomène que possède la forme d’une droite.

Néanmoins en regardant le plot, on constate que lorsque la surface est trop grande les donnés semblent moins modélisables il y a plus de variabilité. Nous allons ainsi considérer les prix des loyers inférieur à 10.000 euros.

df = df[df['loyer'] < 10000]
#Scatter plot
plt.figure(figsize=(10,6))
plt.scatter(df['surface'], df['loyer'])

#On ajoute les titres des axes
plt.xlabel("Surface des loyers", fontsize = 12)
plt.ylabel("Prix des loyers", fontsize = 12)
plt.title("Relation entre la surface et le prix des loyers")

#plt.plot(df['surface'], df['loyer'], 'ro', markersize=2)
plt.show()

image

7. Estimation des paramètres

Maintenant que nous savons que la relation semble linéaire, l’étape suivante consiste à estimer les coefficients , afin de tracer une ligne qui correspond à nos données. Dans la régression linéaire, estimer le paramètre signifie identifier les Betas: , afin qu’ils minimisent la distance avec les données réelles:

Cette approche est connue sous le nom de Ordinary Least Squares (moindres carrés ordinaires (OLS)). Nous minimisons le carré de la distance (distance euclidienne) entre chaque point de données et notre estimation. Pourquoi le carré ? Parce que le dérivé est plus facile à trouver, et nous tenons compte des écarts positifs et négatifs. Les distance euclidienne pour notre modèle est donné par: .

Ainsi nous devons trouver le optimal. Pour la régression linéaire en dimension 1, la Solution1 ou Solution2 de l’équation de minimisation (juste au-dessus) est exacte :

Nous pouvons calculer ses solutions sur python comme suite:

# Calcul de Beta_1 :
x = df['surface']
x_bar = np.mean(df['surface'])
y = df['loyer']
y_bar = np.mean(df['loyer'])

beta1 = ((x - x_bar)*(y-y_bar)).sum() / ((x-x_bar)**2).sum()
print("Beta_1 coefficient estimate : " + str(round(beta1,4)))

Beta_1 coefficient estimate : 30.6612.

# Calcul de beta_0

beta0 = y_bar - beta1*x_bar
print("Beta_0 coefficient estimate : " + str(round(beta0,4)))

Beta_0 coefficient estimate : 266.4546

Ainsi notre modèle final qui colle bien aux données (approximativement) sera :

Loyer  = 30.6612*surface + 266.4546  

Nous pouvons tracer la régression linéaire estimée pour évaluer si elle semble bonne ou non:

image

Cela semble très bien !

Ainsi, une fois que nos paramètres sont connus, nous pouvons utiliser ce modèle pour faire de la prédiction sur de nouvelle donnée. Par exemple pour une surface donnée, 30 m² nous pouvons à présent estimer le prix du loyer correspondant en euros.

beta0 + beta1*30

1186.2904817537724

Ouf c'est cher le loyer en France ! Et Paris en particulier. 

On vient ici de décomposer l’entraînement de la régression linéaire. Il existe un moyen assez efficace de le faire en utilisant les fonctions intégrées de Scikit Learn.

En réalité, vous vous doutez bien que cette régression est déjà implémentée dans le package scikit-learn. On peut l’utiliser directement de la manière suivante :

from sklearn import linear_model
regr = linear_model.LinearRegression()
regr.fit(X, y)
regr.predict("des données de test")
x_1 = df[['surface']]
skl_linmod = lm.LinearRegression(fit_intercept = True).fit(x_1,y)

beta1_sk = skl_linmod.coef_[0]
beta0_sk = skl_linmod.intercept_

Cela conduit au même résultat.

Jusqu’à présent nous sommes satisfaits de notre estimation. Cependant comment nous pouvons évaluer la qualité de notre estimation ?

.8 Évaluez l’exactitude de l’estimation à l’aide de R2

Une métrique commune utilisée pour évaluer l’ajustement global de notre modèle est le . Il est aussi appelé, en statistique, le coefficient de détermination, qui mesure la qualité de la prédiction d’une régression linéaire. Il est défini par :

La dernière expression implique une nouvelle quantité, appelée somme résiduelle des carrés, qui est petite dès que la procédure OLS s’est bien déroulée, c’est-à-dire dès que les valeurs prédites sont proches des valeurs observées. D’où lorsque proche de 1 le est meilleur.

Pour notre exemple on a:

 # Calcul de R²

r_2 = 1 - (((y-(beta0 + beta1 * x))**2).sum())/((y-y_bar)**2).sum()
r_2

0.8246543068110017

Le prend des valeurs entre 0 et 1. Plus nous nous rapprochons de 1, plus nous avons tendance à expliquer la variance. Cependant, l’ajout de variables fera toujours augmenter le R2, même si la variable que nous avons ajoutée n’est pas du tout liée à la sortie.

.9 Conclusion

En somme, le Machine learning est une branche de l’intelligence artificielle qui permet aux machines d’apprendre de l’expérience. Cet apprentissage peut être supervisé ou non-supervisé.

                     PSW
  • Sources:
    • Sebastian Raschka, Vahid Mirjalili. Python Machine Learning. 2nd Edition. Birmingham, UK: Packt Publishing, 2017. ISBN: 978-3958457331
    • Developper google: Initiation machine learning.
    • Cours d’initiaton Machine Learning Opeenclassroom.

image

Share: Twitter Facebook LinkedIn

Leave a Comment

Your email address will not be published. Required fields are marked *