Machine Learning sur des données Yooda avec Dataiku DSS 6.0 (partie 1)

Résultats XGBoost

Dans cet article, nous allons voir comment utiliser différents algorithmes de Machine Learning avec Dataiku DSS 6.0.

Afin d’avoir un élément de comparaison nous allons utiliser les mêmes données que dans notre article Recherche de facteurs SEO avec le Machine Learning (partie 1) ou nous avions fait nos calcul avec R.

Les données sont dans la thématique des cosmétiques bio.

Dans cet article précédent nous avions notamment récupéré des données Pages/Mots-clés/Position au moyen de l’API de Yooda Insight (qui semble arrêtée depuis ??) .

Nous avions ensuite enrichi ces données par des variables qui nous ont servies de variables explicatives à savoir :

  • kwindomain : compte l’occurrence du mot clé dans le domaine.
  • kwinurl : compte l’occurrence du mot clé dans le reste de l’url.
  • ishttps : est-ce une url en https ?
  • isSSLEV : le SSL est-il de type Extended Value ?
  • urlnchar : nombre de caractères dans l’url.
  • urlslashcount : nombre de / dans l’url (pseudo « level »)

Récupération du jeu de données

Le jeu de données est récupérable sur notre GitHub dans le « repository » que nous avions fait à l’époque pour présenter notre code source R. Téléchargez AllDataKeyords.zip et dézippez le dans un répertoire.

Dataiku Data Science Studio

Pour installer Dataiku DSS 6.0 reportez-vous à notre article précédent sur son installation et sa prise en main.

Rappel :

Pour démarrer Dataiku dans Linux : DATA_DIR/bin/dss start

Pour se rendre sur Dataiku avec son Navigateur (Chrome ou Firefox) allez à l’adresse : http://<your server address>:11000. Souvent (et pour moi) http://127.0.0.1:11000.

Démarrons le test

En premier lieu nous allons créer un nouveau projet :

Création d'un nouveau projet
Création d’un nouveau projet

Choisissez un projet à vide « blank project » et indiquez un nom.

Importation des données depuis la page du projet :

Projet YoodaDataTestML1
Projet YoodaDataTestML1

Commencez par importer le fichier AllDataKeywords.csv -> Choisissez le connecteur « Files » -> « Upload your files »

Prévisualisation avant import
Prévisualisation avant import

Une fois vérifié que tout est ok au niveau de la prévisualisation, cliquez sur « Create ». Normalement l’importation doit correctement se passer. C’est assez rapide malgré les 154979 enregistrements.

Visualisation Dataset
Visualisation Dataset

Allez ensuite sur le « flow » : cliquez sur l’image en forme de « > » et choisissez « Flow » :

Flux
Flux

Nous allons maintenant « nettoyer » notre jeu de données pour ne conserver que les données intéressante pour notre Machine Learning. Pour cela nous allons utiliser une recette « prepare » (image de balai)

Préparation des données

Le système nous demande un nom de sortie pour le Dataset :

Nom du Dataset en sortie
Nom du Dataset en sortie

Puis l’outil de préparation s’affiche :

Préparation du Dataset
Préparation du Dataset

A gauche vous avez le script de « nettoyage » qui s’affichera au fur et à mesure des étapes, à droite les données. Dans notre cas, c’est assez simple, car il suffit de supprimer les données qui ne nous intéressent pas.

On conservera comme données à expliquer istop3pos (dans le top 3) et les caractéristiques que l’on a vues précédemment : kwindomain, kwinurl, ishttps, isSSLEV, urlnchar, urlslashcount :

Données Préparées
Données Préparées

Cliquez sur « Run » pour démarrer la transformation. Validez le warning. Cela prend un certain temps. Vérifiez que vous avez un message « Job succeeded ».

Si tout est ok, retournez au « flow » et cliquez sur le nouveau Dataset pour avoir le menu sur la droite.

Retour au Flux
Retour au Flux

Dans le menu de Droite cliquez sur l’icône « Lab »

Laboratoire

Le laboratoire de Dataiku DSS est l’outil pour analyser plus avant vos données, il propose 2 méthodes :

  • L’analyse visuelle à partir d’outils prédéfinis
  • L’analyse sous forme de Notebooks ou vous pourrez notamment modifier et ajouter du Code Source

On s’intéressera pour l »instant à l’analyse visuelle et particulièrement à l’option « Quick Model ».

Laboratoire
Laboratoire

Quick Model propose ensuite « Prediction » ou « Clustering » :

Choix du type de Modèle
Choix du type de Modèle

Nous sommes bien dans un problème d’apprentissage supervisé ou nous voulons prédire la position d’une page Web sur un mot-clé en fonction de caractéristiques connues.

Choisissez « Prediction »

Variable à expliquer

Après le choix de la variable cible ou variable à expliquer (pour nous istop3pos) le système nous propose soit des modèles prédéfinis soit le mode expert.

Choix Mode Expert
Choix Mode Expert

On prendra le mode expert :

Ensuite vous avez encore le choix entre différentes options :

Mode Expert
Mode Expert

Choisissez « Choose Algorithms » -> « in-memory » -> « in-memory » puis « Create ». Vous arrivez sur la page par défaut de Design des algorithmes.

Choix Logistic Regression
Choix Logistic Regression

Décochez « Random Forest » et gardez uniquement « Logistic Regression ».

Paramètres pour les sets d’entrainement et de test

Allez dans la rubrique « Train / Test Set » pour définir comment utiliser le dataset :

Choix des paramètres Train / Test set
Choix des paramètres Train / Test set

Changer les paramètres pour avoir les mêmes que nous avions utilisés précédemment avec R à savoir :

  • Pas d’échantillonnage : on travaille sur toutes les données
  • Pas de K-Fold : nous ne l’avions pas utilisé avec R.
  • Train Ratio à 0,7 au lieu de 0,8 proposé par défaut.
  • Random Seed « 12345 » au lieu de « 1337 »

Vérifions les caractéristiques dans « Features Handling » :

Gestion des caractéristiques
Gestion des caractéristiques

2 variables ishttps et isSSLEV sont rejetées par défaut car leurs contenus sont les mêmes pour tous les enregistrements, ce qui n’apporte pas à priori d’information.

Toutefois, nous allons les garder car nous ne les avions pas retirées lors de notre test avec R.

Régression Logistique

Rappel, on prend ici un seul algorithme, à savoir « Logistic Regression ». Retournez dans la rubrique « algorithms » :

Paramètres Régression Logistique
Paramètres Régression Logistique

Le système nous oblige à choisir une régularisation, on choisira L2 (par défaut).

Lors de notre test avec R nous avions utilisé la fonction glm du package stats de R sans régularisation. De ce fait, il est possible que l’on ait des résultats différents.

Pour faire simple la régularisation L2 est utilisée pour éviter le sur apprentissage et va pénaliser les poids des valeurs « aberrantes » (ou outliers)

Le paramètre C ne sera testé que sur la valeur 1 car nous ne l’avons pas utilisé non plus avec R. Le paramètre C est l’inverse de la régularisation, avec une valeur à 1 son action est ici neutre.

Entrainement du modèle Régression Logistique

Les résultats globaux sont les suivants :

Résultats Globaux Régression Logistique
Résultats Globaux Régression Logistique

Le calcul de l’AUC à 0,57 est proche de ce que nous avions eu avec R 0,57248 (mais ce n’est pas terrible).

Le calcul de l’importance des variables est dans le même ordre que ce que nous avions eu avec R :

isSSLEV 31.505129
urlslashcount 30.126572
ishttps 22.949776
urlnchar 18.391328
kwinurl 11.435329
kwindomain 4.370518

Pour info l’Accuracy (exactitude) sur les valeurs de test est d’à peine 0,5172, ce qui indique que le modèle est mauvais.

Rapport Complet pour la Régression Logistique

En cliquant à droite sur le lien dans la session (ici Logistic Regression) vous accéder au rapport complet :

Rapport Complet Régression Logistique
Rapport Complet Régression Logistique

Ce rapport propose différents outils et 2 autres onglets Predicted Data et Charts. N’hésitez pas à tester les différents outils.

Par exemple la courbe ROC

Courbe Roc Régression Logistique
Courbe Roc Régression Logistique

Le système nous confirme que la valeur d’AUC à 0,57 n’est pas terrible.

Onglet Predicted Data POUR REGRESSION LOGISTIQUE

Dans cet onglet on a toutes les statistiques de prédiction pour chaque observation du set de test.

Onglet Charts POUR REGRESSION LOGISTIQUE

On retrouve l’onglet Charts sur les données du set de test avec les prédictions

Par exemple ici on a calculé le pourcentage de prédictions correctes (pas terrible)

Régression Logistique : pourcentage de prédictions correctes.
Régression Logistique : pourcentage de prédictions correctes.

Dans notre article Recherche de facteurs SEO avec le Machine Learning (partie 1) nous avions utilisé le modèle Naïve Bayes. Celui-ci n’étant pas disponible par défaut dans la version gratuite, nous allons poursuivre par Random Forest

Forêts Aléatoires : Random Forest Classifier

Vérifions les valeurs par défaut que nous avons avec la fonction randomForest de R : nous avions pour le nombre d’arbres 500, pour la taille du nœud terminal (ou feuille) = 1, pour la profondeur de l’arbre ce paramètre n’est pas défini donc on prendra 0, pour la stratégie d’échantillonnage des caractéristiques on reste du la méthode par défaut qui correspond à la racine carrée du nombre de caractéristiques.

Reportons ces données sur les paramètres de l’algorithme Random Forest :

Paramètres pour Random Forest
Paramètres pour Random Forest

Vérifiez dans « Train / Test Set » on a bien les paramètres précédents : à savoir l’utilisation de toutes les données (pas d’échantillonnage) un train ration à 0,7 et un seed « 12345 ».

Vérifiez aussi que toutes les caractéristiques sont utilisées ( » Features Handling ») comme précédemment et dans notre test avec R.

Résultats avec Random Forest

Lancez le train : les résultats globaux sont les suivants :

Résultats Random Forest
Résultats Random Forest

La valeur de l’AUC est bien meilleure que ce que l’on avait eu avec R, ici 0,655 contre 0,584.

Par ailleurs l’ordre d’importance des variables ne semble pas le même ici : la variable avec le plus d’importance est urlnchar alors qu’avec R nous avions urlslashcount.

Allons voir la Courbe Roc :

Courbe Roc pour Random Forest
Courbe Roc pour Random Forest

La courbe Roc est plus sympathique que précédemment, par ailleurs le système considère que l’AUC à 0,655 est un résultat correct.

L’exactitude de la prédiction (Accuracy) reste toutefois faible 0,557.

XGBoost

On prendra, si possible les mêmes paramètres que ceux que l’on avait précédemment avec R :

  • nfold = 5
  • eta (learning rate)= 0,3
  • max depth = 6
  • Early Stopping Round = 10

Et pour les autres paramètres les paramètres par défaut de XGBoost.

Paramétrage du Train / Test Set pour XGBoost

Ici on va paramétrer les K-fold=5, on choisit l’ensemble des données et on remet le random seed à 12345.

Paramétrage Train / Test Set pour XGBoost
Paramétrage Train / Test Set pour XGBoost

Paramétrage Features Handling POUR XGBoost

On vérifie ensuite que l’on utilise toutes les caractéristiques -> Features Handling.

XGBoost choix des caractéristiques
XGBoost choix des caractéristiques

Paramétrage Algorithme XGBOOST

Paramètres de l’algorithme (comme indiqué précédemment) pour se rapprocher de ce que nous avions défini avec R :

XGBoost : paramètres de l'algorithme
XGBoost : paramètres de l’algorithme

Résultats Globaux XGBoost

Résultats Globaux XGBoost
Résultats Globaux XGBoost

Le calcul de l’AUC donne 0,661, soit équivalent à ce que l’on avait trouvé avec R.

L’ordre de l’importance des variables est aussi le même, à savoir : urlnchar, urlslashcount, ishttps, kwinurl, isSSLEV, kwindomain.

Bien que meilleure que précédemment avec Random Forest, l’accuracy (l’exactitude) sur les données de test est faible : 0,5725.

La conclusion avec Dataiku sur ces données est la même que celle que l’on avait faite avec R : le modèle manque de variables et nous devons l’enrichir.

L’avantage toutefois avec Dataiku, est que cette étude s’est faite très rapidement par rapport à une étude programmée avec R.

A Bientôt,

Pierre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.