Dans le chapitre précédent, nous avons vu les éléments spécifiques nécessaires à la formulation et à la résolution d'un problème de machine learning. Dans ce chapitre, je vais vous présenter les grandes familles d'algorithmes d'apprentissage existantes.
Apprentissage "supervisé" ou "non supervisé"
Une première grande distinction à faire en machine learning est la différence entre apprentissage supervisé et non supervisé. En anglais, ces deux notions se nomment respectivement supervised learning et unsupervised learning.
Pour bien comprendre la différence, reprenons un exemple : supposez que vous avez une nouvelle base de photos à catégoriser. Vous disposez de données d'exemple (training set) préalables pour entraîner votre modèle.
En apprentissage supervisé, vous allez récupérer des données dites annotées de leurs sorties pour entraîner le modèle, c'est-à-dire que vous leur avez déjà associé un label ou une classe cible et vous voulez que l'algorithme devienne capable, une fois entraîné, de prédire cette cible sur de nouvelles données non annotées. Dans notre exemple, les données d'entrée seraient des images et la cible (ou target en anglais) la catégorie de photos que vous voulez.

En apprentissage non supervisé, les données d'entrées ne sont pas annotées. Comment cela peut-il fonctionner ? Eh bien, l'algorithme d'entraînement s'applique dans ce cas à trouver seul les similarités et distinctions au sein de ces données, et à regrouper ensemble celles qui partagent des caractéristiques communes. Dans notre exemple, les photos similaires seraient ainsi regroupées automatiquement au sein d'une même catégorie.
Voici une visualisation de l'utilisation d'une méthode non supervisée qui regroupe les images par similarité. Je vous conseille de regarder la version HD ici.
Des chercheurs de Google Brain ont appliqué des algorithmes d'apprentissage non supervisés il y a quelques années à des vidéos YouTube, afin de voir ce que cet algorithme réussirait à apprendre comme information. Une vidéo explicative (en anglais) est disponible ici.

Dans quel cas utilise-t-on l'un ou l'autre ?
Eh bien, dans le cas où vous avez un problème où vous pouvez annoter précisément pour chaque observation la cible que vous voulez en sortie, vous pouvez utiliser l'apprentissage supervisé.
Dans le cas où vous essayez de mieux comprendre votre dataset ou d'identifier des comportements intéressants, vous pouvez utiliser l'apprentissage non supervisé.
Régression ou Classification
Une autre distinction qui vous aidera dans le choix d'un algorithme de machine learning est le type de sortie que l'on attend de notre programme : est-ce une valeur continue (un nombre) ou bien une valeur discrète (une catégorie) ? Le premier cas est appelé une régression, le second une classification.
Par exemple, si je veux déterminer le coût par clic d'une publicité web, j'effectue une régression. Si je veux déterminer si une photo est un chat ou un chimpanzé, j'effectue une classification.

C'est simple, n'est-ce pas ?
Si c'est si simple que ça, pourquoi n'y a-t-il pas juste trois ou quatre algorithmes, qu'on pourrait utiliser pour chacune de ces distinctions ?
Vous avez raison, mais dans la vie rien n'est si simple. 😇
En réalité, il existe un ensemble de contraintes et d'enjeux supplémentaires (le nombre de données en entrée, la capacité de convergence d'un modèle en fonction du type de données, etc.) qui influencent aussi et créent une granularité supplémentaire dans votre choix du modèle. Nous étudierons les contraintes et enjeux de chaque modèle lorsque nous les aborderons individuellement, dans d'autres cours.
En résumé
Les problèmes de machine learning peuvent se différencier selon deux critères :
Les données dont vous disposez sont-elles annotées ou non ? Si c'est le cas, vous avez affaire à un problème d'apprentissage supervisé. Sinon, vous serez obligé d'utiliser un algorithme d'apprentissage non supervisé.
Quel est le type de résultat que vous souhaitez prédire ? S'il s'agit d'un nombre (par exemple le coût par clic d'une publicité), c'est un problème de régression. S'il s'agit plutôt d'une valeur discrète, d'une catégorie (par exemple le type d'animal présent sur une photo), alors c'est un problème de classification.