Un projet de machine learning commence généralement avec un jeu de données et un problème à résoudre. Celui-ce se décrit par trois éléments, des données (X), une cible (Y) et une fonction d’erreur qui permette d’évaluer la distance entre la prédiction et la cible. Une fois qu’on a cela, les premières étapes débutent avec presque toujours les mêmes questions :
Il n’est pas rare qu’un projet requiert un assemblage de modèles de types différents. La première étape consiste à imaginer un chemin entre les données initiales et la valeur à prédire. Le problème est rarement non supervisé car on cherche le plus souvent à reproduire un processus humain. L’aspect non supervisé intervient sous la forme d’une étape intermédiaire.
Parmi les traitements non supervisé, on distingue ceux qu’on peut appliquer sur de nouvelles données (ACP, k-means) et ceux où on ne peut pas (t-SNE). Dans le second cas, c’est souvent une façon d’explorer les données mais l’algorithme ne fera pas partie de la solution retenue.
La plupart des algorithmes d’apprentissages utilisent des données numériques,
il faut convertir les variables catégorielles au format numérique.
Si une variable catégorielle est à choix unique et qu’elle contient catégories,
celle-ci sera multipliée en
colonnes, une pour chaque modalité. Comme la somme de
ces colonnes est le vecteur colonne
, la matrice
modifiée sera corrélée.
Ceci peut poser problème à certains algorithmes d’apprentissage.
Il faut faire attention à deux ou trois détails. Par exemple, si le problème est un de problème de classification, il faut faire attention que toutes les classes à prédire sont bien représentées dans les deux bases. C’est particulièrement important si l’une d’elles comporte peu d’exemples. Si les données sont temporelles, il faut faire une séparation temporelle pour prédire le futur avec le passé. Si les données sont groupées, il faut faire attention à ce que les groupes ne soient pas tronqués sinon c’est l’assurance de faire du surapprentissage.
Exemple : un base de critiques de films. S’il y a plusieurs critiques par films, il faut qu’un même film ne soit pas présent dans les deux bases d’apprentisage et de test. Pour ces films, il est fort probable que le modèle appris soit anormalement performant sur la base de test.
On cale un ou plusieurs modèles sur les données d’apprentissage. C’est de moins en moins sorcier : Machine learning automatique. Il faut foncer : apprendre un modèle tout de suite pour avoir une idée de la difficulté du problème. On privilégiera les modèles linéaires et les arbres et décisions si on souhaite obtenir un modèle interprétable. On optera pour les forêts aléaoires dans les autres cas. Ces modèles présentent l’avantage de s’apprendre rapidement et de marcher sur tout type de données, discrètes continues… Les forêts aléaoires sont également robustes au surapprentissage.
On mesure la performance du modèle sur la base de test. Il existe certaines façons standard de le faire en fonction des types de problèmes :
Un modèle peut être considéré comme bon par un indicateur ( par exemple)
et pourtant ne pas être assez bon pour l’usage qu’on doit en faire
(prédictions de séries temporelles).
Si la performance globale convient, on s’arrête souvent ici.
Dans le cas contraire, il faut retourner à l’étape 4 :
Voir également Quelques astuces pour faire du machine learning.
On atteint vite un plafond lorsqu’on essaye les modèles un par un. Il faut maintenant extraire tout ce qu’on sait des données ou tout ce qu’on imagine savoir pour améliorer la performance.
Quelques idées…
Ce jeu de données recense la surface brûlée par des feux de forêts. On connaît la vitesse du vent, l’humidité, la témpérature de la zone où a eu lieu l’incendie. Il faut prédire la surface brûlée en fonction de ces paramètres.
Un grand nombre de valeurs sont nulles. Pourquoi ?
Pas évident de savoir, peut-être que les pompiers étaient tout proche, peut-être qu’il n’y a pas eu de feu. Difficile de savoir. Il n’est pas évident de savoir si on peut garder ces données ou en tout cas les traiter séparément avec une classification préalable.
Des incendies par temps de pluie en hiver ?
C’est probablement un orage avec de la foudre. En hiver, il y a peu de feu, les pompiers ne sont pas sollicités trop souvent et ils auront le temps d’intervenir. Il n’est pas forcément utile d’être aussi précis quant à la précision de la prédiction en hiver.
Et
surface = a * température + b * vent + ...
Ou
surface = a * température * vent + ...
Pour résumer, un feu aura des conditions favorables si la température est élevée et si le vent est fort. Les effets s’additionnent ou ils se combinent ? Dans le second cas, regrésser sur le logarithme des variables ou ajouter le produit de tous les couples de variables est une piste à étudier.
On veut prévoir le nombre de vélo utilisés en fonction du temps. La date fait partie des variables disponibles. Elle indique la saison. On remarque également que le nombre de vélo partagés croît avec le temps, signe d’une demande croissante. Les données cachent donc deux effets : la croissance de la demande et l’impact de la météo sur la demande. Le plus simple, pour avoir un modèle robuste dans le temps, est d’enlever la tendance avant de passer à un problème de machine learning.
Congressional Voting Records Data Set
Dialogue improvisé… Il faut prédire le parti d’un sénaeur en fonction de ses votes passés.
On regarde sur quelques exemples bien choisis que le modèle proposent une réponse acceptable. On applique des méthodes du type validation croisée.