BlogPost 2: ML Studio en action dans un Challenge Kaggle - adanba/Blog GitHub Wiki

Ce post fait suite à notre première partie [lien] et a pour but de montrer des fonctionnalités plus avancées de ML Studio pour répondre de manière plus efficace au challenge Kaggle Otto.

Pour mémoire, le contexte du challenge est le suivant : on dispose d'une base d'apprentissage (training set) de 61877 produits décrits par 93 variables provenant du groupe Otto, géant du ecommerce. Sur ce jeu de données nous avons la classe de chaque produit. L'objectif est de mettre en place un modèle qui permette de prédire la classe sur le jeu de données test (test set). La taille du jeu de données test est 144368 produits décrits par 93 variables.

Près-requis:

L'approche Meta-Learning utilisée:

Le Meta-Learning consiste à appliquer plusieurs algorithmes de classification (multi-class):

  • Decision Forest

  • Decision Jungle

  • Neural Network

  • Logistic

Chaque algorithme donnera en sortie les probabilités d'affectation des produits à chaque classe, le résultat final qui sera soumis au challenge sera la moyenne des résultats des 4 algorithmes appliqués.

ML Studio en action étape par étape:

  1. Téléchargement de données:

Dans l'onglet inférieur, on clique sur New, puis Data Sets ce qui va nous permettre de choisir le fichier sur le poste local:

  • New > Data sets >

Téléchargement d'un jeu données - Données téléchargées 2. Création d'un Workflow:

Pour créer un nouveau Workflow on utilise toujours le bouton New, mais cette fois-ci nous choisirons l'onglet Expirement, puis Blank Expirement pour générer un nouveau Workflow.

  • New > Experiment > Blank Experiment

  • Une fois le Workflow créé vous pouvez changer son titre par défaut, qui est Experiment created on 7/5/2015. Ce dernier correspond à la date de création du Workflow.

Création d'un Workflow - Workflow Board 3. Construction du Workflow:

  • Nous allons dans Data Sets da la barre gauche (secondaire) pour choisir le Training Data Sets

  • Ensuite, nous allons supprimer la variable id disponible dans le jeu de données afin qu'elle ne fasse pas partie du modèle, pour ce faire nous utiliserons le module Data Transformation plus précisément la brique projection de colonne: Project Columns

  • Puis, grâce à la barre à droite Properties on choisit la ou les variables à exclure, 'id' dans notre cas

Workflow advancement

Comme nous pouvons le voir dans l'image ci-dessus, le choix des algorithmes a été fait, et nous avons récupéré les modèles initiaux de Machine Learning > Initialze Model >, il ne reste plus qu'à paramétrer les briques de chaque algorithme. C'est ce que nous allons voir dans le partie suivante.

Paramétrisation des algorithmes:

Malgré la facilité qu'apporte ML Studio aux utilisateurs, ces derniers doivent disposer d'un minimum de connaissances vis à vis de l'algorithme à appliquer. Par exemple pour l'algorithme Random Forest, sur l'onglet à droite propreties un certain nombre de paramètres sont initialisés à une valeur par défaut. Nous devons donc modifier ces paramètres selon nos besoins. Voir la figure ci-dessous:

R Script

On doit choisir la méthode de ré-échantillonnage qui va être utilisée, ici la valeur par défaut est Bagging, d'autres paramètres comme nombre d'arbre, profondeur de l'arbre, nombre d'objets par feuille et nombre de splits par feuille, sont à définir.

Dans la paramétrisation certains algorithmes on a la possibilité de choisir un ensemble de valeurs pour le même paramètre, ce qui permet de déterminer automatiquement le meilleur. C'est cas de la régression logistique où on peut faire varier les paramètres L1 et L2 (voir la figure ci-dessous).

Logistique

Injecter du code R dans un workflow:

R Script

Cette brique nous permet de développer des traitements spécifiques sous R, la brique a trois inputs et deux outputs:

  • Inputs:
  1. Deux inputs data sets et un input script bundle (permet de passer les inputs en format Zippé)
  2. Les deux outputs sont les résultats du traitement

Dans notre exemple nous avons utilisé ce module pour établir la moyenne des résultats des algorithmes.

R Script code

Workflow final:

Au final on obtient le workflow représenté ci-dessous, qui calcule les probabilités de la classification de chaque objet test, puis le résultat de chaque algorithme est pondéré de manière proportionnelle (une moyenne arithmétique). On aurait ainsi pu donner plus d'importance à un algorithme particulier.

Workflow Final

Astuce pour optimiser le workflow:

Pour des fins de lisibilité et d'optimisation nous pouvons utiliser dans le workflow final que les modèles déjà entrainés (Trained Model), pour ce faire nous devons créer, dans un premier temps, le modèle entrainé sur les données Train.csv pour chaque algorithme , c'est-à-dire un script pour l'apprentissage de chaque algorithme (4 algorithmes => 4 scripts). Ensuite le modèle créé pour chaque algorithme, pourra être utilisé directement dans le workflow final. Cela permet d'optimiser chaque algorithme indépendamment.

Save Model

Le workflow optimisé devient:

Workflow Final

Option History:

Dans la barre inférieure d'un Experiment on a un bouton History. Ce dernier nous permet de naviguer à travers l'historique des modifications d'une expérience. Par exemple, si nous souhaitons récupérer une version antérieure, on va la chercher dans History, puis on peut faire un Save as pour sauvegarder cette version.

History

Conclusion:

Le résultat obtenu via ce workflow nous a permis d'atteindre un score de 0.82 soit une nette amélioration par rapport au workflow Random Forest de notre premier post.

Il nous reste maintenant à mettre à disposition ce modèle aux utilisateurs à travers un Web Service. C'est le sujet du post suivant. Nous verrons également comment étendre les possibilités d'Azure ML Studio en créant de nouvelles briques.