 Parfait. Je connais encore moins de locales ici. À Shopify, on cherche aussi des états scientifiques. Donc s'il y en a qui s'intéressent sur le shield learning et AI, vous pouvez me donner votre CV. Ça fait presque deux ans que je suis là. Fait que j'ai un peu d'influence. S'il y a une chose que vous devez vous rappeler de ma présentation ce soir, c'est que la conversion, c'est une fonction du temps. J'essaie de faire en sorte que plus de gens intègrent cette dimension dans leur calcul. Je sais que je m'adresse à un crowd qui est plus des développeurs que des états scientistes probablement. Donc je me demandais s'il y en a ici qui avait... Ça n'avait pas été quoi un taux de conversion. Ok? Et est-ce qu'il y en a qui n'ont jamais entendu parler d'analyse de survie? Bon, il y en a quand même pas mal qui connaissent le sujet. Et pour tous ceux qui ont levé la main à ma première ou ma deuxième question, cette présentation-là est pour vous. On commence puis on touche juste les éléments de base de ces deux choses-là. Je vais commencer par vous raconter une petite histoire Avant de travailler à Sharp & Fash, je travaillais dans une compagnie de jeux vidéo qui faisait des jeux sur téléphone mobile. Faut y tout plait. Et quand un jeu était prêt à être lancé mondialement, on commençait par faire ce qu'on appelle un soft launch. La stratégie, c'est qu'on choisit un pays où on va lancer les jeux et on analyse le comportement des joueurs là-dessus avant de le lancer partout sur la planète. Typiquement, le pays qu'on choisit, c'est le Canada parce que c'est vraiment proche des États-Unis. Puis c'est un petit pays. S'il y a des problèmes, on brûle pas tant de joueurs que ça. Ce qui arrive, c'est que la plupart des gens, s'ils ont essayé de jouer une fois, ils ne vont pas le réussir plus tard, même si tu fais des updates, tout à fait des changements qui corrige des gros problèmes. Donc quand j'étais là, j'ai travaillé sur un jeu qui était un jeu de park d'attraction, de simulation de park d'attraction, un peu à la theme park, je sais pas si vous avez ajouté à ça. Et on a fait un soft launch où on regardait le taux de conversion. Donc quand on parle de taux de conversion, typiquement on parle d'une proportion qui est comme ça. Le nombre d'utilisateurs qui ont payé parmi tous les utilisateurs qui ont joué au jeu. Parce que le jeu est gratuit effectivement. Donc c'est comme ça qu'on fait de l'argent, c'est quand les gens dépendent en jour, on essaie de vendre par exemple des paquets de gemmes ou de diamants. Et dans ce jeu-là, après un soft launch de une semaine au Canada, on avait un taux de conversion de 5.8. Je prends juste une parenthèse que tous les chiffres que vous allez voir ce soir sont fakes. C'est juste pour illustrer le phénomène. Je ne voulais pas briser de secrets professionnels. Donc on avait 5.8, et notre cib c'était au-dessus de 20%. Encore là, c'est fakes. C'est un exemple. En réalité, le 5.8% cache un taux de conversion beaucoup plus élevé. Parce que la plupart des gens ne sautent pas sur le bouton « buy it now » quand ils le voient dès la première fois. Ça leur prend un peu de temps pour devenir confortable avec le jeu avant de décider de dépenser. Chaque jeu a comme une courbe secrète qui illustre le temps que ça prend avant de convertir. Pour notre jeu de gestion de parc d'attraction, ça ressemble à quelque chose comme ça. Pour lire le graphique, en bas ici, c'est le nombre de jours depuis que le joueur a commencé à jouer. Et verticalement, c'est les % de chance qui est convertie, qui est dépensée dans le jeu. Donc on a fait notre soft launch, on a calculé 5.8%, mais en réalité, notre courbe, si on la connaissait, c'est une courbe secrète. Si on la connaissait, on saurait qu'on est proche de notre cible. Typiquement, on compare avec des jeux qui sont bien établis, qui sont des succès, on sait que ça fait beaucoup de l'argent. En fonction de notre cible, c'est un jeu très mature. Comment ça se fait qu'on a 5.8%, c'est la réalité, c'est près de 20%. En fait, la courbe, elle affecte les gens de différentes façons, dépendant de ce que l'on joue. Je reprends mon exemple. On a fait notre soft launch à la fin de semaine. Quand je dis une courbe, c'est un groupe de joueurs qui a installé le jeu la même journée et qui a commencé à jouer. Ma plus vieille courbe est en bas ici, à 6 jours. Il y a 1000 personnes dans cette courbe. La courbe la plus récente en haut, elle a 8000 personnes. C'est graduel comme ça, parce que quand on fait un jeu où il y a toujours des problèmes avec les serveurs ou d'autres choses comme ça, donc on commence vraiment graduellement, on en parle à personne, on fait juste le mettre sur l'App Store. Après ça, éventuellement, on fait des publicités sur Facebook pour avoir un peu plus de joueurs qui sont ici. Et je les épargne encore, parce que je veux utiliser la courbe secrète qu'on connaît pas encore quand on fait le jeu. Si on utilise le pourcentage, ce n'est pas très clair là-dessus, mais chacune de mes courbes ici, je peux la retrouver sur ma courbe. Donc les gens qui ont le jeu pendant 6 jours, ils y ont converti ça à 17%. Je vais juste mettre les chiffres de la courbe à chaque courbe. Et on voit tout de suite comment ça décompose nos acheteurs. Ça s'additionne à 810 pour la courbe globale de 5,8%. Donc ce qui arrive, c'est que les nouveaux utilisateurs diluent beaucoup le taux de conversion. Quand on prend la formule classique, on manque complètement la réalité. Quand on a une situation où vous soyez un soft launch, où vous traisez une compagnie qui vient juste de commencer, dans le moment d'exponential growth, vous avez beaucoup plus de nouveaux utilisateurs que d'utilisateurs en matur. Votre taux de conversion, vous ne pouvez pas faire une fraction comme on a vu au début. On fait notre soft launch. Ça fait une semaine. On veut savoir s'il y a des problèmes dans le jeu. Est-ce qu'on doit baisser nos prix? Est-ce qu'on doit faire en sorte de gaunter la conversion? Ou on est correct? Comment on fait, après juste 6 jours, pour être capable de comparer avec nos benchmarks? Si on avait la courbe secrète de nos jeux, on pourrait juste les mettre sur le même graphique, puis les comparer visuellement comme ça, c'est très simple. On voit que c'est un jeu à succès qu'on a eu. Et notre nouveau jeu est en rouge. On est en dessous de notre set, donc il faut baisser nos prix ou faire des espèces de solde. Le secret, c'est de trouver cette courbe bleue. Mais comment on fait pour la trouver? C'est là que Python devient utile. Il y a des analyses statistiques qui vous permettent de faire ça, puis comme j'imagine que vous n'êtes pas plus travaillants que moi, vous aimez quand c'est déjà tout fait pour vous. La bonne chose, c'est que dans Python, il y a un package qui s'appelle LifeLines qui va faire de l'analyse de survie pour vous. Juste catlink de code, vous utilisez le Kaplan-Meyer-Fitter et ça va vous donner la courbe secrète. Si vous exécutez ça, ça renvoie un graphique qui ressemble à ça. Là, j'imagine que vous êtes un peu confus parce que cette courbe-là n'a pas la même forme que celle que je montre depuis le début. C'est parce que c'est une courbe pas de conversion mais de survie. Donc, je vais juste clarifier ce qu'on a vu tout à l'heure. C'était le Kaplan-Meyer-Fitter qu'on utilise. Cette algorithme-là est développée par ces deux statisticiens-là Edward Kaplan et Paul Mayer. Des fois, c'est difficile de trouver des bonnes photos de statisticiens et j'ai fait ce que j'ai pu. Et eux étaient surtout intéressés à calculer l'espérance de vie des gens. Souvent, vous avez entendu dans les journaux que les femmes vivent plus longtemps que les hommes. Ça, c'est calculé en utilisant le Kaplan-Meyer-Fitter. Pour eux, ce qui les intéresse, c'est l'espérance de vie. Donc, la proportion des gens qui sont encore en vie qui n'ont pas eu l'événement de faim. Nous, on veut l'inverse de ça. On s'intéresse aux gens qui ont converti pour qui on a fini la période de doute. Est-ce qu'ils vont convertir ou non? Donc, dans le graphique que j'ai montré tout à l'heure, je le remontrais, on commence à 100 % tout le monde est en vie. Puis à la mesure que le temps passe, il y a des gens qui ont converti. Puis on a moins en moins de gens qui n'ont pas converti. Donc, si on fait, on fait juste sous ce cas-là de 1, on commence, on fait plus grande proportion de gens qui ont converti. Avec ça, vous êtes équipé pour faire votre analyse de survie quand vous rentrez au travail demain. J'ai gardé ça, comme vous avez vu, très simple parce que c'est vraiment facile d'utiliser LifeLinds. Et c'est aussi une méthode statistique qui va vous être utile pour plein d'autres choses que je ne toucherais pas aujourd'hui. Mais je pense qu'il est facile d'approche qu'il faut l'utiliser parce que LifeLinds c'est bien fait. Vous faites ça et... Ah oui! J'ai oublié de mentionner un peu vite, vite. Les idées que vous avez besoin, c'est deux choses par joueur. Ici, mon objet, User, c'est un Pandas DataFrame, en gros, c'est juste un tableau, qui a deux colonnes que j'utilise, la colonne duration et la colonne converted. C'est ça les deux données que vous avez besoin pour chaque utilisateur. Duration, c'est quoi? Duration, c'est ce que vous voyez sur un chronomètre si jamais vous lancez le chronomètre quand le joueur commence à jouer et converted, c'est assez évident. C'est s'il a converti ses truths, sinon ses forces et puis vous laissez le chronomètre continuer tant qu'il n'y a pas converti. Et avec ça, vous avez tout ce qu'il faut pour faire votre soft launch, comparer plusieurs jeux à différents points dans leur vie aussi. Parce que ce qui est intéressant, c'est que la courbe, elle va commencer puis si vous rafraîchissez votre analyse à tous les jours, la courbe va s'allonger de la ligne rouge, parce que vous avez plus de données, vous connaissez mieux la toute conversion, mais vous voulez faire une deuxième jour, dès le premier jour, vous ne serez pas influencés et vous diluez par le nombre de nouveaux utilisateurs. C'est assez simple, mais il y a deux erreurs fréquentes qui arrivent quand on fait de l'analyse de survie avec Kaplan Mayer que je vais essayer de vous éviter. Erreur numéro 1, arrondir les durées. Ça, ça arrive souvent quand vous voulez faire l'analyse puis que vous faites une, vous allez chercher les données, vous faites une courbe comme ça en SQL ou en pandas aussi, des fois, on va faire une courbe, c'est une journée deux heures, je veux juste dire une journée. Il faut garder les durées les plus exactes possibles. Si vous avez des microsecondes, allez au microsecond. Gardez toute l'information que vous avez. Parce que ça peut changer vraiment les résultats. Je vous donne un petit exemple. Imaginez que vous êtes en charge de la sécurité dans une course et il y a un moment, c'est pendant l'hiver à la course, très bonne idée. Il y a un endroit sur le trajet, le parcours, vous demandez, est-ce que cette plaque de glacier est dangereuse? C'est quoi le taux d'accident qu'il va avoir dans mon parcours? Donc, on va dire que vous avez 3 courants. Il y en a un qui a passé la plaque de glace au 1.7 km, sans tomber. Le deuxième, quand il est arrivé le glissé puis il s'est blessé. Et on a un troisième courant, qui est beaucoup plus grand que les autres, qui n'est pas encore arrivé là. Donc, jusqu'à maintenant, vous avez vu une personne blessée sur deux qui ont passé la courbe d'accident, ou votre taux d'accident à 50% à 1.7 km. Avec les distances exactes, ça vous donne la bonne chose. Mais si, à la place d'utiliser les vraies distances, vous vous arrondissez puisque ici, distance, c'est un peu la même chose que la durée, vous arrondissez comme ça, tout au kilomètre près. Donc, ce que vous donnez à l'algorithme, ça lui dit qu'il y a une personne sur 3 qui s'est blessé au kilomètre numéro 1. Votre courbe d'accident c'est pas au bon endroit, parce qu'il y a pas de plaque de glace au 1er kilomètre, puis le taux est trop faible, parce que c'est 50% des gens qui sont blessés là. Donc, oubliez pas de garder les microsecondes ou toute l'information que vous avez quand vous faites votre analyse de sa vie. Dernière erreur, c'est l'erreur numéro 2 j'ai vraiment eu de la misère à trouver un titre qui expliquait bien, je sais que c'est vraiment vague, isoler les offres de conversion. Pour illustrer ce que lui là, je vais prendre un exemple de Shopify. Shopify pour ceux qui ne connaissent pas trop, c'est une plateforme de commerce en ligne. Vous pouvez vous ouvrir en compte puis vous avez 14 jours où vous pouvez personnaliser votre site web, ajouter des produits, faire la transaction, recevoir l'argent. Toutes les fonctionnalités sont disponibles et à la fin de la période de 14 jours vous recevez un email qui dit votre paire d'essai est terminé. Si vous voulez continuer à faire affaire en ligne, choisissez 1, 2, 3 abonnements. C'est ce que je voulais dire par offres de conversion. Si vous vous abonnez, vous prenez un des trois seulement. Vous ne pouvez pas être abonné deux fois pour la même compte. J'avais eu affaire en analyse sur ce sujet parce que souvent on fait des campagnes marketing par exemple sur Facebook, on veut le comparer avec Google. Est-ce que les gens qui s'inscrivent par Facebook vont avoir tendance à prendre un Advanced Shopify à 300$ ou ils vont plutôt aller sur le basic Shopify à 30$? On sait que l'idéal c'est de faire une analyse de survie, donc la limitation par contre c'est que c'est true-false. Je ne savais pas trop quand j'ai fait ça la première fois comment gérer que j'avais différents types de conversions. La première idée qui m'est venue quand j'avais des données qui ressemblaient à ça, c'est que je voulais mettre sur la même graphique comme j'ai montré pour les jeux chacune des conversions possibles. Le 30, le 80 et le 300$. Donc je commence. Tout ce qui n'est pas du 30$, je le mets comme converted false. Puis je passe ça dans Kaplan Mayor et ça me donne ma courbe. 29$. Après ça, pour le 79$, et là, je veux juste mettre l'enfer, j'ai mis mauvais parce que c'est pas la bonne méthode. Je vous montre juste l'erreur à pas faire. Des fois, c'est pas clair. Donc pour le 79$, là, je suis sûr, j'enlève tout le monde qui a mis 29$ ou 300$, comme pas converti, puis j'ai le jeu sur mon graphique. Ça fait ma deuxième courbe de conversion. Finalement, j'ajoute le 300$, puis je les mets comme ça. Et là, comme ça arrive souvent quand on fait des statistiques ou de l'analyse, il n'y a absolument rien qui vous dit que vous avez fait une connerie ou que ça a aucun sens. Il n'y aura pas de message d'erreur, il n'y a rien qui vous dit rien. En plus, ça fait un graphique, puis vous êtes assez content parce qu'il y a quelque chose qui a l'air d'avoir du sens, donc vous allez dessous donner les résultats. Mais ici, il y a un petit indice qui peut vous montrer que ça marche pas. Si on additionne les 3 ensemble, ça fait plus que 100%. Ça voudrait dire qu'on convertit plus que tout le monde qui essaie, ce qui est à peu près complètement impossible. Donc, pourquoi ça fait cet erreur-là? C'est parce que quand on a changé l'information et qu'on a dit que l'utilisateur n'a pas converti, ce qu'il y a plein de meilleures penses, c'est qu'on n'a pas d'infos sur lui, donc il y a 50% de chance qu'il se convertisse un peu comme la plaque de glace, il y a 50% de chance que l'événement arrive. Mais en réalité, cette personne-là a déjà converti et il y a 0% de chance, c'est impossible qu'elle change d'abonnement parce qu'elle a déjà pris quelque chose. Donc, comment on fait pour comparer ces situations-là où on a plusieurs oeuvres de conversion? Si vous faites des jeux vidéo, ça peut être est-ce que les gens achètent une potion de vie avant d'acheter des gems ou quelque chose comme ça? Il y a encore une fois une solution en piton qui est vraiment cool. Vous n'avez pas trop de travail à faire. Un peu plus cette fois-ci parce que le package Statement Rose est un peu moins clean dans son EPI et à la plate d'être juste sur 4 lignes, ça fait quoi? 1, 2, 3, 4, 5, 6, 7? 7 lignes. Pour faire en lisibilité, on gagne en flexibilité. Donc, l'algorithme ici qu'on utilise, c'est Cumulative Incidence Right. Est-ce que ça nous permet de faire ça? C'est de passer plus qu'un boulet 1 comme événement. Encore une fois, users, c'est un tableau avec une colonne duration et une colonne évente cette fois-ci. A la place d'avoir un boulet 1, on peut lui assigner des codes. Un code par événement qu'on veut sur notre graphique. On garde le 0 pour pas de conversion, ça reste notre fausse. Et quand on donne ça, ça nous donne des codes de conversion qui sont plus juste et qui font du sens. Encore une fois, je vous rappelle, c'est des fausses données. Mais si on additionne les 3 ensemble, ça fait moins que 100%. Donc, ça vous confirme que vous êtes sur la bonne voie. Ça fait pas juste changer l'échelle. Ça peut changer aussi les conclusions finales. Parce que si vous regardez avec Kaplan Mirror, avec la mauvaise méthode que j'avais faite, le plan à 300 $ ici apparaît comme convertir mieux que celui à 80 $. Ce qui est vraiment rare. Je ne dis pas que c'est impossible, mais ça m'étonnerait énormément. Donc, ça ne change pas juste l'échelle, mais la position aussi. Donc, je vous résume un peu de ce dont j'ai parlé aujourd'hui. La conversion, ça peut prendre du temps. Il faut intégrer le temps comme dimension dans notre analyse. Donc, à la place de dire mon application ou ma période d'essai converti 10 % d'utilisateurs, il faut dire converti 10 % en X jours. Puis après ça, si vous utilisez le même nombre de jours, vous pouvez comparer entre les applications. Pour avoir la courbe secrète, qui est un peu le nan de la garde en analyse ici, vous pouvez utiliser le lifeline, ce que je vous recommande parce que l'EPI est vraiment plus clean, puis il y a une très bonne documentation. Quand vous faites ça, vous arrondissez pas les durées pour garder le plus d'informations possibles. Si vous voulez comparer plusieurs offres entre elles, vous passez à la conversion de chaque offre pour le même groupe d'utilisateurs. Et c'est tout. Oui. En fait, c'est complètement... Ce qui est vraiment le coup, c'est que c'est pas paramétrique. C'est complètement descriptif la courbe que vous allez avec. Ça ne repose pas sur j'assume une distribution normale ou rien de tout ça. Je ne sais pas si vous avez... Je ne vais pas très expliquer comment c'est calculé, mais en gros, quand je vous ai montré l'exemple de la glace, c'est exactement ça que ça fait. On a une durée plus grande que ça. Quelles proportions ont converti? En fait, vous pourriez le faire à la main vous-même. C'est juste un peu plus de travail. Il n'y a aucun statistique à faire derrière ça pour... Exactement, c'est ça. Il n'y a pas de formes... Non. Autre question. Oui? Est-ce que toi, tu as eu l'occasion d'utiliser d'autres logiciels à l'air aux opérances compérantes sur VPC? Malheureusement, je peux pas comparer du tout, mais j'ai entendu de très bonnes choses pour l'air. C'est tout ce que je peux dire. Il y avait une question ici? Oui. Tu peux remontrer le jeu de donner que tu utilises dans le deuxième cas? Oui, celui-là. Je voulais savoir, par exemple, quelqu'un en 10 de 9 jours. Il peut être soit à 29. Tu peux avoir des gens à 79 ou des gens à 290. Comment tu fais la différence entre... Je sais que chaque ligne, c'est un utilisateur ici. Et puis, c'est des chiffres ici, mais ça n'a pas de sens. C'est pas 3 fois plus gros que ça. Même si on pratique ça à l'heure de ça. Mais ça répète du texte. Ils veulent des chiffres, mais en gros, c'est ça. C'est une ligne par utilisateur. Oui. Pour celui-là, ici, ce que ça nous dit, c'est que la première ligne, 17-0, il a commencé. Il a joué pendant une journée, puis c'est tout. Donc, il est vraiment récent. Il a commencé, ça fait à peu près 24 ans. Je n'ai pas mentionné, mais cette présentation-là, je l'ai déjà faite sur YouTube en anglais, de PiData Amsterdam l'année passée. Donc, si vous êtes intéressés à le réécouter en anglais, ça va être aussi disponible. Merci. Mais je vais passer les slides. Avec tout le code que vous pouvez copier et coller, je me suis assuré que ça marche. Qu'est-ce que tu fais pour quelqu'un qui a fait l'achat dans 29 pièces et qui est six jours plus tard, et qui a décidé de l'appliquer. Dans ce moment-là, ça devient un peu plus compliqué. Ce qu'on fait, c'est qu'on fait un peu une section. On fait une analyse de survie d'une analyse de survie. On commence par les gens qui ont converti une fois. Après ça, de toutes ces gens-là, ça nous fait un nouveau groupe, que leur chronomètre commence quand ils ont choisi le premier plan, puis on regarde, ça leur prend combien de temps avant de changer à un autre abonnement. Non, c'est ça. C'est pas pris en compte. Si c'est ça, il faut que tu le fasses toi-même. Il y a une question-là. Donc, si c'est juste un ou deux attributs, tu le coupes toi-même, puis tu vois ça, tu peux les regarder. Sinon, ça dépend. Ça n'a beaucoup. Il y a dans LifeLines un autre modèle qui s'appelle Cox Proportional Hazard, qui lui est comme semi-paramétrique. Il n'y a pas trop d'assumptions de premises avec ça. Il va permettre de lui donner plus d'informations à chaque utilisateur, puis il va te donner un coefficient pour chaque attribut. On va dire qu'un des attributs, c'est le type de téléphone qu'ils ont. Ça va donner un coefficient qui va dire les gens qui ont un téléphone Android vont convertir trois fois plus vite que ceux qui n'ont pas Android. Pour chaque attribut qu'on donne, ça donne un coefficient. C'est intéressant. Ce que c'est cool sur LifeLines, c'est qu'il va vous donner des intervaux de certainité. Il va vous donner un peu plus. Comme je l'ai dit, il y a d'autres méthodes. Dans les models stats, c'est très légère que vous avez et vous devez faire vos propres calculs pour les intervaux de confiance. Cool, merci.