jeudi 24 août 2017

Minimum Detectable Effect calculator


MDE calculator

This form calculates the Minimum Detectable Effect for an AB test.
Enter the number of visitors you have and the conversion rate of the page you want to test, then clic on the run button...
You will get the size of the Minimum Detectable Effect of your experiment.

Total number of visitors :
Initial conversion rate : %

Minimal Detectable Effect :


Feel free to ask questions in the comment section or via twitter (@hwassner).

Go to the AB Tasty website for a nicer interface of that tool.

lundi 21 août 2017

Minimum Detectable Effect

La fin du "sample size calculator"


Dans la pratique du test A/B, il est recommandé de prévoir la taille de l'échantillon de visiteurs que l'on va tester. Ce conseil provient de la pratique industrielle, pour laquelle la taille de l'échantillon est importante, car elle définira le coût de l'expérience. L'objectif est de maintenir ce coût le plus bas possible.
C'est à cela que les "sample size calculator" servent. Ils demandent le taux de réussite actuel (taux de conversion) ainsi que la taille de l'effet minimum que l'on cherche à mesurer. Le résultat du calcul est la taille de l'échantillon nécessaire pour que l'on puisse conclure d'une telle expérience.

Cela se transpose mal dans le monde du web car la situation est différente :
  • Mesurer les conversions ne coûte rien (contrairement à l'industrie)
  • Le nombre de visiteurs est une donnée du problème (pas la réponse)
  • L'effet de la variation est difficilement prévisible.
    (en pratique c'est même précisément la question qu'on se pose!)
Cela rend très difficile l'usage des calculatrices de taille d'échantillon.

Pour autant, être capable de savoir ce que l'on peut vraiment mesurer est très important.

Pour le web il faut une formule qui marche dans l'autre sens.

On spécifie :
  • Le taux de conversion actuel 
  • Le trafic de la page à tester
 Et la formule donne la taille minimale de l'effet induit par la variation qu'on sera capable de détecter :le MDE (Minimal Detectable Effect).

J'ai développé une telle calculatrice, vous pouvez y accéder ici, dites moi ce que vous en pensez.

mardi 31 janvier 2017

Régulation des algorithmes (suite)

Hier soir j'étais à une réunion de présentation à CAP Digital,sur le sujet de la "régulation des algorithmes"... (vous pouvez lire l'article précédent sur ce sujet ici.)

Je suis plutôt content car les gens qui on présenté le problème semblent bien avoir compris quelques subtilités du problème comme :
  • Surveiller à la fois les algorithmes mais aussi les données utilisées pour les paramétrer. Dans le domaine du "machine learning", on parle de données d'entraînement. Ces données , plus que l'algorithme lui-même, décide du comportement prédictif. 
  • Certains algorithmes sont, par constitution, non-analysable, non-explicable. On parle de boite noire, mais pas par volonté de cacher les chose, mais fonctionnement de base.
  • L'INRIA, partenaire scientifique, ne se positionne que comme centre de ressources de solution scientifique/technique de mesure.
Bref, ils ont comprit qu'il s'agit d'un problème fondamentalement complexe pour lequel il n'existe pas de solution technique aujourd'hui. C'est rassurant.

Ce qui l'est moins :
  • Aucune start-up du domaine ne fait partie des rapporteurs.
  • Personne n'a soulevé le risque de créer une régulation qui serait dangereuse pour les entreprises françaises travaillant dans le "machine learning". En effet, imposer une régulation implique avoir un levier d'action envers les contrevenants, or aujourd'hui les GAFA (Google, facebook, Amazon, etc...) sont totalement intouchables (elles ne payent même pas les impôts sur le bénéfice fait sur le sol français). Une régulation franco-française ne ferait donc que les avantager encore plus par rapport aux start-up française.
    L'effet de la régulation serait alors inverse à l'objectif, car ces algorithmes seraient alors totalement pilotés par des entreprises étrangères non soumis à la réglementation, et donc totalement hors de contrôle.
    Sans parler de la destruction d'emploi et la perte de revenu fiscal.
Bref, tous les acteurs ont bien identifiés qu'on est incapable aujourd'hui de faire quelque action censée que ce soit dans ce domaine. Mais je crois que c'était a peu près la même situation pour HADOPI : personne ne croyait vraiment pouvoir endiguer la copie illégale par manque de solution technique. Pourtant HADOPI a bien été crée, et a gaspiller beaucoup d'argent pour rien.
J'espère juste que ce cela ne se reproduira pas.

Je ne vois donc pas de risque imminent, mais c'est tout de même un sujet à "surveiller".


lundi 30 janvier 2017

Régulation des algorithmes ?

Vous en avez peut être entendu parler : l'état français réfléchit à créer une instance de "régulation des algorithmes". En clair il s'agit de placer des limites éthiques d'utilisation du "machine learning".
Je vais ce soir à une réunion de présentation à CAP Digital, j'espère y avoir quelques éléments de réponse à ces questions qui me sont venues à l'esprit :
  • Ce contrôle n'est-il pas un frein au développement du "machine learning" et de l'Intelligence Artificielles en France ?
  • Comment, en pratique, contrôler un algorithme?
    • Bien souvent, ces algorithmes sont considérés comme des secrets industriels.
    • En "machine learning" les algorithmes sont souvent "neutres", c'est les données qui les pilotent vraiment. Or ces données sont souvent confidentielles, et en plus elles peuvent changer très rapidement. Les algorithmes devraient alors être surveillé en permanence!?
    • Alors qu'on manque déjà de gens pour créer ces algorithmes, où trouver des gens pour les contrôler? Il semblerait que des gens de l'INRIA composerait une commission. Problème : l'INRIA vend aussi de tels algorithmes, peuvent-il être juge et partie ? et en plus avoir le droit de consulter tous les algorithmes de leur potentiels concurrents ?
    • Beaucoup de techniques de "machine learning" produisent des algorithmes dont même leur créateurs sont incapable de définir précisément les modes de fonctionnement. Cette incapacité est souvent due à des raisons théorique (ou l'absence de théorie suffisamment avancée) et non à l'incompétence de leur créateurs.
Si d'autres questions vous semblent intéressantes suggérez-les moi via Twitter (ou en commentaire de cet article).

Je ferai prochainement, ici, un bilan de ce que j'aurai entendu à cette réunion.

lundi 24 octobre 2016

Offre de stage en DataScience

Stage en DataScience : durée 6 mois.

Sujet : Nous (AB Tasty) disposons de beaucoup de données de sites web de type e-commerce. Notre objectif est de fournir des indices statistiques les plus précis et pertinents possible pour nos clients.
En particulier en ce qui concerne les statistiques de valeur de panier. Ces données étant très spécifique au e-commerce, aucune loi connue (simple) ne permet de les modéliser précisément. L'objectif de ce stage est de proposer une méthode de composition de lois permettant, utilisant la notion de prior (basés sur nos données) permettant de faire une meilleure modélisation des valeurs de panier.

Type de profil recherché :
  • bon niveau en stat' (bayésienne, bayésienne hiérarchique, programmation bayésienne.)
  • autonomie en langage de programmation type R ou Python
  • Curieux
Entreprise : AB Tasty (Paris)
Encadrant : Hubert Wassner. (contact : hubert.wassner@gmail.com)
Période : début de stage janvier ou février 2017 (idéalement)

mercredi 5 octobre 2016

Google Optimize 360, un avis de Data Scientist...


Résultat de recherche d'images pour "Optimize 360" 


"Optimize 360", la solution de testing de Google va-t-elle changer le marché des outils déjà existants?

Quand Google entre sur un marché, il est clair que ce n'est pas a négliger, surtout quand ils proposent une offre gratuite (l'offre payante semble être à >150k$ l'année).

Je tiens à préciser que je ne suis pas totalement  impartial dans cette réflexion car je suis Chief Data Scientist à AB-Tasty qui est la solution leader en France sur les solutions de testing et de personnalisation sur les sites web & applications mobiles. Je vais toutefois essayer d'être honnête dans cette comparaison.
Il y a un tas de truc fonctionnels qu'Optimize 360 ne fait pas (test sur mobile, test multi-pages, etc...) même dans la version payante, mais dans cet article je vais principalement aborder le point de vue "Data".

Le défaut principal que j'identifie est qu'Optimize gère la notion de visiteur par session (de 30 mn à 4heures, mais pas plus!) et ne gère pas vraiment la notion d'unicité du visiteur. Ce qui veux dire qu'un visiteur faisant deux visite a un jour d'intervalle (ou même juste 5 heures) sera compté comme deux visiteurs distincts.

Cela à deux conséquences : 
  1. Les taux de clic mesurés seront plus bas que la réalité.
    C'est gênant mais on peut "faire avec".
  2. Il est impossible de mesurer les gains de manière précise.
    Là c'est bien plus gênant...
Voyons cela en détail...

1) Les taux de clic (ou valeur par visiteur) seront donc mesurés notablement plus bas, car les conversions se font rarement à la première visite. Toutes les autres visites (hormis celle de conversion) seront comptées en "échec", ainsi, naturellement, les taux de "réussites" seront mesuré bien plus bas.

Cependant on pourrait se dire "c'est pas si grave, de toutes façon ce qu'on cherche c'est une différence de taux de conversion, on peut se moquer de la valeur absolue de ce KPI". C'est vrai, mais seulement si on s'intéresse uniquement l'existence d'une différence (et qu'on se fiche de sa taille), car en effet le modèle bayésien d'analyse statistique supporte assez bien cette approximation.
On peut le tester ici : https://www.peakconversion.com/2012/02/ab-split-test-graphical-calculator/

Supposons avoir 100 visiteurs sur chaque variation, avec 10 conversion pour A et 15 pour B.


=> cela donne 14% de chance de victoire pour A et 86% pour B
(chiffres de l'avant dernière colonne).

Supposons maintenant que ces conversions sont réalisés en moyenne après 2 visites (donc on double le nombre de "trial") pour simuler qu'on ne gère pas les visiteurs unique mais qu'on utilise la notion de sessions.


=> cela donne 15% de chance de victoire pour A et 85% pour B.
=> soit seulement 1% de différence avec l'analyse précédente.

Vous pouvez faire l'expérience par vous même, et même si on augmente le nombre moyen de visites avant la conversion les "chances de victoire" dévient assez peu.

Donc si on ne s'intéresse qu'à l'existence d'une différence (et pas de sa taille) alors ne gérer que des le sessions (et non les visiteurs uniques), n'est pas très gênant.

Note : Cette conclusion n'est vraie que si le nombre de re-visites par visiteur unique est à peut près le même selon les variations (rien ne nous l'assure vraiment.).

2) Avec cette approche par session il est alors impossible de mesurer proprement les intervalles de confiance du gain.


Note : cet intervalle est très important dans l'analyse et surtout dans la prise de décision car c'est lui qui permettra de prédire la meilleure et la pire des situations que l'ont rencontrera lors de la mise en production de la variation gagnante.

Pour cela je vais utiliser un autre outil, qui fait le même type de calcul bayésien, mais qui montre aussi la distribution du gain potentiels (on appelle cela le 'posterior' en stat')  http://developers.lyst.com/bayesian-calculator/

Voici ce que l'on obtient avec les même chiffre que l'exemple précédent :
  • A) 100 visites, 10 succès
  • B) 100 visites, 15 succès

Cette courbe représente la répartition possible de la vrai valeur du gain qu'apporte la variation B par rapport à la A.
L'intervalle de confiance à 95%, c'est à dire l'intervalle qui a 95% de chance de contenir la vraie valeur du gain, est environ [-0.05;+0.15]. (Il s'agit en fait de sélectionner la partie centrale de ce graphe de manière à représenter 95% de sa surface.) Vu que cet intervalle est globalement plus positif que négatif on fait la même conclusion que précédemment : B est probablement la variation gagnante, mais attention il persiste encore une zone de doute. (B à quand même,"encore" ~15% de chance d'être gagnante.)

Supposons maintenant qu'il faut en moyenne 2 visites avant la conversion, alors on double le nombre de 'trial" comme dans l'exemple précédent pour avoir des données tels qu'Optimize 360 les verrait.
Et voici ce qu'on obtient sur la courbe de distribution des gains :


On voit que cette courbe est notablement plus étroite que la précédente, par conséquent l'intervalle de confiance correspondant paraîtra beaucoup plus petit. Approximativement il vaudrait [-0.025;0.08]. Mais ce n'est pas la réalité! On comprend que les bornes de cet intervalle définissant le meilleure et le pire scénario ne sont plus calculable, car cet effet sera d'autant plus marqué que le nombre de visites moyen avant conversion est grand.
 Le fond du problème est qu'on ne connaît pas le nombre de visites associées à un visiteur unique. On est donc dans l'incapacité de calculer ces bornes qui sont pourtant primordiales pour la prise de décision.


Conclusion :  avec cette approche par session on peut toujours identifier une variation gagnante et mesurer la probabilité de l'existence du gain, mais il est impossible de présager de sa taille! Personnellement je trouve cela très limitant.


Pourquoi ce choix (sous-optimal) ?

La raison est que pour pouvoir "suivre" un visiteur sur une longue période, il est nécessaire de stocker ses informations de visite coté serveur. Or vu les volumes que compte traiter Google (en particulier avec la version gratuite qui aura forcément du succès), ce serait irréalisable (même pour Google).
C'est aussi certainement pour cette raison que l'outil d'analytic de Google fonctionne comme ça, et vu qu'Optimize est basé sur Google Analytics...
Par conséquent, ce choix de ne pas gérer correctement la notion de visiteur unique, a de forte chance de rester tel quel.

Ma conclusion est que Google Optimize va probablement prendre de belles parts de marché chez les "petits" qui choisiront Optimize pour les même raisons qu'ils ont déjà Google Analytics.

Mais pour les plus "gros" (et les plus matures sur le sujet), je pense que les raisons citées ici, et aussi pour le coté confidentialité (comme avoir des serveurs dans le pays du client), préféreront les acteurs historiques de l'A/B test et de la personnalisation.

De plus, cela va peut être aider à la maturation du marché. C'est peut être une bonne chose que les gens s'exercent d'abord avec une solution gratuite aux fonctionnalités limités. Cela leur donnera l'envie d'utiliser des solutions plus complètes, une fois qu'ils auront compris ce qu'ils ont a y gagner.

lundi 5 septembre 2016

Twitter Profiling

Introduction : Après la collecte de plus de 5 milions  de profils d'utilisateurs Twitter. Je vais vous exposer dans cet article une approche d'analyse de ces profils par cartographies thématiques.

L'approche


Sur Twitter il est difficile de savoir qui est qui, car c'est plus un média qu'un réseau social. Les membres ont peu d'espace pour se décrire, et il le font peu. Finalement ce qui défini le mieux un compte Twitter, et son utilisateur, c'est sa liste d'abonnement, c'est à dire les comptes qu'il suit (follow dans la jargon Twitter).
On peut donc utiliser l'adage "Dis moi ce que tu lis, je te dirais qui tu es". Cette approche a l'avantage de pouvoir analyser les profils même s'ils ne tweettent pas ou  très peu. C'est important car sur Twitter "90% des messages sont générés par 10% des utilisateurs".
Cependant, pris comme telle, cette approche est difficilement automatisable, car il faut encore comprendre le sens de ces abonnements. J'ai donc décidé de simplifier l'approche comme suit : "des personnes qui suivent a peu près les mêmes comptes, se ressemblent certainement."
Cette approche là est automatisable, et on peut s'en servir pour créer, algorithmiquement, des cartes. Ces cartes n'ont rien de géographique, elles sont topologiques, cela veut dire qu'elles reflètent les similarités d'abonnements entre utilisateurs. Elles forment naturellement des thématiques. Les utilisateurs qui ont des listes de lectures similaires se trouveront dans les mêmes zones de la carte.
Voici un exemple d'une telle carte : chaque point est un utilisateur de Twitter

Le résultat ("ok, et on en fait quoi de cette carte?")


Il ne reste alors plus qu'a identifier les thématiques de chaque zones. Cela peut se faire par 2 moyens complémentaires.
  • L'échantillonnage : en prenant des échantillons de chaque zone et en les analysant manuellement. Dans la mesure où ces zones sont normalement assez homogène, cette opération peut être bien plus rapide qu'on l'imagine.
    Voici un échantillonnage de profils pris dans une même zone :
     
     
      
    On voit sans peine que dans cette zone sont regroupés les "geek"...
  • Le filtrage par hashtag : certains hashtag (c'est à dire des mot-clés qui indiquent le thème d'une discussion) sont des indicateurs plus ou moins évidents des typologies des groupes qui les utilisent. On peut alors uniquement afficher des utilisateurs s'ils ont utilisés un hashtag donnés. Ainsi on peut identifier de manière très rapide les typologies de ces zones.
    Voici 3 exemples  de hashtag (typés adolescents) ainsi que les zones de la carte où ils se situent: 
    • "#NoControlDay" : il s'agit d'une chanson d'un groupe pour adolescent ("One direction")
    • "#getBeautyParis" : c'est un salon de beauté et de promotion de youtubeuses (jeunes filles qui font des vidéos de conseils beauté sur le site de vidéos Youtube).
    • "Projet X" : Il s'agit d'un film d'adolescents (une comédie sur une soirée qui dérape)
On constate que ces zones sont des zones légèrements différentes mais sont toutes dans la même région, cela nous permet d'identifier globalement une zone "ado".
On peut noter que la zone "Geek" (identifiée précédemment) reste vide car ils n'ont pas tweeté sur ces hashtags, ce qui est totalement cohérent.

Pour visualiser cela j'ai fait une gif animée qui superpose les 3 images précédentes :

Voici une vue globale de la carte (sans sélection de hashtag):

On y voit un peu toutes les populations de twitter ainsi que leur proportions relatives. Il est a noter que même si je n'ai pas fait de sélection de hashtag il s'agit quand même de profils de gens qui twittent sur les "trending topics" (voir la méthodologie de collecte des données). Cela explique la grande prévalence du groupe "ado", et "actu". Il y a deux groupes "politique" car il s'agit de bords politiques différents.

Conclusion

Cet outil de collecte de tweet et de cartographie permet donc d'analyser des hashtags et surtout leur utilisateurs! Le tout fonctionne en live, car le modèle utilisé (un réseau de neurones) est très rapide. Il permet donc de faire des actions automatisées dans un délais inférieur à 3 secondes après l'émission d'un tweet. On peut donc réagir à chaud, massivement/automatiquement, et de manière ciblée !
Je détaillerai cette approche et ses effets dans un article suivant...