Lors de la dernière journée du Newcraft organisé à Paris en Mai dernier, j’ai pu assister à la session animée par Michal Lusiak qui nous a présenté une introduction au Machine Learning. Il a en effet, expliqué les bases du Machine Learning et comment en faire avec F#.

Il nous a tout d’abord présenté un petit historique du Machine Learning à travers le temps, c’est après ça que les choses sérieuses ont commencé. Il a pris pour exemple un cas concret d’une liste de vins avec les valeurs du pH et la note associée à chaque bouteille pour réaliser sa démonstration.

 

Régression linéaire

Pour schématiser, il a pris deux critères, le pH et la note sur le vin, afin d’estimer la note d’un vin en fonction de son acidité.

Il nous explique alors que l’on peut afficher ces deux critères sur un graphe à deux dimensions. Ainsi, on obtient quelque chose ressemblant à cela :
Machine Learning with F#

Puis, il revient sur des explications plus classiques pour définir ce qu’est une courbe linéaire.

Machine Learning with F#
La formule d’une courbe linéaire est y = a.x + b. Pour effectuer une régression linéaire, il vous suffit de trouver les deux paramètres a et b. Et pour identifier ces deux paramètres, on va utiliser les valeurs de nos données. On obtiendra ainsi une courbe la plus proche possible de tous les points :

Machine Learning with F#

La question est à présent de savoir comment partir de plusieurs points pour trouver la courbe qui puisse satisfaire un maximum de points. Pour cela, on va calculer un coût. On calcule la distance de chaque point par rapport à la courbe, ce qui donne la formule mathématique suivante :

Machine Learning with F#
On admettra la formule mathématique. Mais l’idée est de faire la somme des distances d’un point par rapport à la courbe linéaire, ce qui nous permet d’avoir le coût global de la courbe. Si l’on cherche la courbe avec le coût minimum, on obtient alors la courbe linéaire la plus proche.

Une représentation algorithmique donnerait le résultat suivant :

var sum = 0;
for(var i = 1; i <= m; i++){
    var x = Math.pow(prediction - actualValue, 2.0);
    sum += x;
}
return sum/2*m;

Maintenant du code

Il utilise F# pour faire les manipulations et les traitements. La première étape est de lire le fichier CSV contenant les valeurs de chaque vin.

Ensuite, on divise les données en deux parties :

  • Un jeu de données pour entraîner l’algorithme
  • Un jeu de données pour tester l’algorithme.

Machine Learning with F#

Pour connaître la qualité de la régression linéaire calculée, il faut utiliser une fonction de coût.

La régression linéaire est une suite de calculs utilisant la fonction de coût. A chaque boucle, il calcule le coût et ajuste les paramètres w et b pour tendre vers un optimal.
Machine Learning with F#

Ce qui donne comme résultat :

Machine Learning with F#

Pour aller plus loin

Pour aller plus loin dans le Machine Learning, il est possible d’utiliser des outils de Microsoft. Si on regarde le diagramme défini dans l’outil, on retrouve nos différentes étapes :

  • Lecture du fichier
  • Découpage d’un jeu de tests
  • Apprentissage de l’algorithme
  • Calcul du coût.

Machine Learning with F#

Il termine en nous expliquant que si l’on veut un résultat plus précis, on peut changer d’algorithme de régression en utilisant par exemple “Neural Network Regression”. Ceci aura pour effet de trouver une courbe plus proche des points fournis.

 

Conclusion

La session explique de manière concrète et claire comment fonctionne le Machine Learning. Ce fut très intéressant d’assister en live à la création des étapes de base du Machine Learning et de voir comment les mettre en pratique.