Introduction au Machine Learning

Découvrir les différents types de modèles et algorithmes d'apprentissage automatique

P1C3 : Découvrez les notions de modèle et d’algorithme

Découvrez les différents types de Modèles:

Nature des données et contexte: tabulaire, texte, sons, image, vidéo, séries temporelles: le ML s’applique à tout type de données => liste d’exemples
Les principaux modèles  de ML: de LR (GLM) à NN/DL en passant par Tree-based;
Pertinence en fonction du type et volume de données et aussi de leurs propriétés statistiques; dicte le choix des modèles et des outils. On distingue GLM,Tree et NN.
Tableau comparatif.

Même si vous vous limitez au contexte supervisé ou non tel qu’exposé au chapitre précédent, vous vous retrouverez en face d’une multitude de modèles, chacun possédant des caractéristiques propres et des performances escomptées. La documentation de sklearn pour l’apprentissage supervisé est un bon exemple de cette richesse de choix. https://scikit-learn.org/stable/supervised_learning.html#supervised-learning

Ne pouvant tous les tester un par un, vous aller dont devoir choisir rapidement comment vous équiper pour la bataille qui vous attends / apprivoisonement.

En règle générale, vous choisirez le modèle en fonction du contexte et du cahier des charges.

Le schéma suivant est extrait de la documentation de scikit-learn. Bien qu’un peu daté, il résume le processus de choix d’un modele.

Cependant, pour vous faire gagner du temps, on distingue après 2020:

Les autres types de modèles bien qu’adaptés dans certains contexte, n’offriront pas la versatilité et la robustesse ce cette short liste. Ils sont devenu obsoletes alors que d’autres emergeaient comme plus puissant. C’est le cas par exemples des SVMs, elegants mathematiquement mais peu competitifs face a XGBoost.

Sachez définir un modèle

Encart: Fixer les idées: Modélisation ou modèle. distinguer le type  de modèle du modèle entraîné sur un jeu de donnée particulier dans un but particulier. parallèle avec la classe et l’instance en programmation.

Mais qu’est ce qu’un modele de Machine learning? De quoi parle-t on au final quand on parle de modele?

On va distinguer

la methode modèle vs le modele entraîné. Par soucis de simplcité on parle dasn les 2 cas du modèle.

Sachez définir un algorithme

Définir ce qu’est un algo, illustrer avec l’algo pour calculer \sqrt(2). donner le code. Faire le lien avec le ML; mentionner le gradient stochastique

Nous avons donc un modele entrainé sur des données. Mais comment se passe cette entrainement? Nous ne rentrerons pas ici dans le arcanes des algorithmes d’entrainement, procédures ultra-optimisées en C, cela serait hors sujet pour ce cours. Mais je voudrais illustrer par un exemple, ce qu’est un algorithme. Ce quipermettra de faire jaillir une notion fondamentale du machine learning: l’erreur d’estimation!

La définition officielle: Un algorithme est une série d’instruction définies et ordonnées qui permettent d’effectuer une tâche spécifique, un calcul par exemple.

Prenons donc un exemple simple avec le calcul de la racine de 2. Sans pour cela utiliser une calculatrice ou un ordinateur, nous pouvons calculer la racine de 2 par une série de calcul plus simples. En itérant la suite du calcul, on aboutit å une bonne approximation du résultat escompté en quelques étapes.

Pour cela, nous allons utiliser la méthode de Héron dite méthode babylonienne, inventé au 1er siecle apres JC par les babyloniens. (je vous avais dit que le ML ne datais pas d’hier :) ). Excellente méthode efficace d’extraction de racine carrée (ou plus d’ailleurs)!

Partons d’une valeur candidate (x = 1) et mettons à jour cette valeur jusqu’a ce que le résultat soit assez proche du résultat attendu. On saura simplement si x est proche de la racine carrée de 2 si x^2 est proche de 2.

Voici donc l’agorithme de Héron pour le calcul des racines carrées

soit une valeur d’initialisation pour x: x = 1 fixons la precision attendue: precision = 0.001

Tant que |x^2 - 2| > precision x = (x + 2/x)/2

En python cela s’ecrit

x = 1 precision = 0.001 while (abs(x**2 - 2) > precision) : x = (x + 2/x)/2

print(x)

Cet algorithme est extrêmenent efficace. En seulement trois étapes, la précision relative sur la valeur de √2 est déjà de 10–6, ce qui est excellent, et de moins de 10–12 en quatre étapes

Remarquez maintenant la quantite |x^2 - 2| que nous avons calculé à chaque itération: la différence en valeur absolu entre la valeur candidate au carré et 2. C’est l’erreur d’estimation entre la valeur candidate, notre valeur estimée et la valeur dite de vérité (groundtruth en anglais) On peut rerecrire l’algo en mettant en avant cette erreur d’estimation

x = 1 erreur = 1 precision = 0.001

Tant que erreur > precision: # maj de l’estimation x = (x + 2/x)/2 # maj de l’erreur avec la nouvelle valeur de x erreur = |x^2 - 2|

Voila, dans ce simple algorithme qui date de 2000 ans, nous avons les composantes principales d’un algorithme de machine learning

Note: au lieu de calculer la valeur absolu de l’erreur d’estimation, nous aurions put aussi prendre son carrée Nous aurions eu l’algorithme suivant Tant que erreur > precision: # maj de l’estimation x = (x + 2/x)/2 # maj de l’erreur avec la nouvelle valeur de x erreur = (x^2 - 2)^2

La question est alors de savoir si ce critère fait converger plus ou moins rapidement l’estimation de la racine de 2.
Qu’en pensez vous?

Le principal algorithme qui sert à entrainer la plupart des modèles de ML, deep learning inclus, s’appelle le gradient stochastique. Sans rentrer dans les details, le GS fonctionne presque pareillement que l’algo de Héron .

Soit un jeux d’echantillons On cherche a estimer un vecteur h qui minimise un critère, une fonction de coût.

On se dote d’un paramètre essentiel, le learning rate souvent noté \alpha et aussi appelé taux d’apprentissage, qui va permettre d’adapter la correction de l’estimation en fonction de l’erreur d’estimation.

On aura de façon simplifié à chaque itération:

calcul de l’erreur = f(estimation) maj de l’estimation = estimation * \alpha * f(erreur) stop en fonction de l’erreur

En pratique, étant donné un jeu de donné, cela donne Phase d’initialisation du vecteur h, par exemple que des zeros A chaque itération

En pratique, le parametre \alpha sert a regler la rapidite de convergence de l’algorithme et la precision des resultats. C’est le taux d’apprentissage

C’est un des parametres principal des modeles que vous serez amené a entrainer. Dans scikit learn on il est denoté par

Illustration

A retenir: L’algo du gradient stochastique date aussi des années 50. Il en existe de nombreuses variantes et il est utilisé dans la plupart des modeles de machines learning.