Machine Learning sur des Web Logs

Publié le 17/10/2016 | Jérémy Grèze

Quasiment toute action réalisée sur Internet ou sur une application mobile est enregistrée dans des fichiers, que l'on appelle web log. Ces logs peuvent être très volumineux. Ils sont une source de donnée classique du Big Data.

La data science et les algorithmes de Machine Learning peuvent aider à dégager de la valeur à partir des web logs. Je présentais le 11 octobre un atelier au OVH Summit sur la valorisation des web logs grâce au Machine Learning, avec Dataiku DSS. Je reprends dans cet article des éléments de la présentation.

Dans les web logs, chaque ligne (ou enregistrement) représente une action d'un utilisateur (ouverture de page, erreur qui s'est produite, ou autre), avec typiquement les informations suivantes:

Web logs.
Capture d'écran de web logs bruts.

A partir de ces données assez brutes souvent stockées dans des fichiers plats au format compressé, on ne veut pas faire de la statistique descriptive comme calculer le nombre de visiteur par pays, le taux de conversion, etc. Pour ces questions là, Google Analytics ou Piwik sont de très bons outils.

Plutôt, l'objectif est de résoudre des problèmes avancés et personnalisés sur le contexte business de l'entreprise. La data science va nous permettre des faire des uses cases comme par exemple de la segmentation client ou de la recommandation. J'en reparle en fin d'article.

La première étape classique dans un projet avec des web logs, c'est de la préparation des données. Par exemple:

Il est possible de réaliser la plupart de ces actions visuellement, c'est-à-dire sans coder, dans Dataiku DSS. Par exemple, le parsing de date et la géolocalisation IP:

Tout au long de la préparation des données, on peut bien entendu utiliser des graphiques et des statistiques descriptives afin de comprendre les variables que l'on manipule.

Carte dans Dataiku DSS.
Exemple d'une carte construite à partir de la géolocalisation IP.

La seconde étape va être la réduction de dimension. L'idée est de passer du niveau de l'action au niveau utilisateur, avec un résumé de ses actions. En effet, pour appliquer un algorithme de machine learning, on a besoin que chaque ligne représente un utilisateur (dans la majorité des cas et des uses cases, je reste général ici).

Pour cela, on va se servir de la recette visuelle group by qui permet de grouper des lignes et de construire le "résumé" de l'utilisateur. On construit les variables qui vont qualifier les utilisateurs avec les outils visuels ou en code SQL.

Quelques exemples de variables que l'on obtient pour chaque utilisateur:

A noter que ces transformations pourront être exécutés in-database, sur une base SQL, ou sur un cluster Hadoop ou Spark (via Hive ou Impala)

Ces variables que l'on construit sont très importantes. Cela va permettre de "nourrir" l'algorithme des caractéristiques des utilisateurs. Bien entendu, rajouter des informations externes au web logs apporte un vrai avantage, comme par exemple des données CRM. Techniquement, cela peut être un simple left join sur un identifiant client avec une table CRM, pour croiser les données avec la date d'inscription, le nombre d'achats, ou des informations sur le profil client.

Recette de group by visuelle.
Exemple de 'group by' visuel avec Dataiku DSS.
Window Function
Exemple de code SQL avec Dataiku DSS.

Une fois que l'on a un jeu de données utilisateurs avec plusieurs variables, on va pouvoir utiliser les algorithmes de Machine Learning. L'objectif est de trouver des corrélations ou indications dans les données, que l'on ne pourrait pas forcément voir à l’œil humain, pour résoudre un problème déterminé.

Deux familles d'algorithmes:

Dans Dataiku DSS, il est possible de réaliser ce travail dans l'interface visuel (mais aussi en Python ou R). Dans la petite vidéo ci-dessous, on prend un exemple de prédiction d'une conversion sur un site web. On choisit les algorithmes (un linéaire, un basé sur les arbres de décisions), les variables à inclure (on laisse les choix par défaut), et on change une variable numérique en variable catégorielle. Puis, on lance la phase d'apprentissage sur les données (ça peut être long).

A l'obtention des résultats, on étudie la performance des modèles créés par les algorithmes. Un ROC AUC à 0.881 nous indique qu'à première vue le modèle est plutôt performant (pour schématiser: entre 0.5 et 0.7 c'est moyen, entre 0.7 et 0.9 c'est performant, entre 0.9 et 1 c'est suspect car trop bon).

Également, on étudie ce que le modèle a appris des données. Sans entrer dans les détails, on trouve ici (cf capture) une corrélation positive entre le nombre de sessions de sur le site web et les chances de conversion, et une corrélation négative entre les visites en provenance de Google et les chances de conversions.

Résultat des prédictions.
Exemple des résultats des algorithmes prédictifs.

Les entreprises qui souhaitent exploiter leurs web logs travaillent généralement sur les uses cases suivants:

Ces use cases vont générer une valeur ajoutée par rapport à des analyses descriptives. L'automatisation des résultats obtenus permet généralement des scénarios d'utilisation assez sympas (comme par exemple de l'emailing personnalisé, des scores à jour dans le CRM, etc.).

Les slides de la présentation sont disponibles en téléchargement. Bien entendu, vous pouvez télécharger Dataiku DSS dans sa version gratuite pour jouer avec vos web logs.

Je vous propose deux ressources complémentaires: un connecteur pour récupérer dans Dataiku DSS les logs d'un site OVH mutualisé que j'ai développé, et un tracker web open-source à placer sur un site pour récupérer des logs via un script Javascript. Ce tracker, appelé WT1, est très pratique et plutôt performant (20 000 événements par seconde sur un serveur moyen).

Sinon, c'était notre première participation au OVH Summit, on reviendra :) Petit selfie de la team.