Mes amis m’ont donné leurs données Tinder…

Août 5, 2021
admin

C’était le mercredi 3 octobre 2018, et j’étais assis au dernier rang du cours de science des données de l’assemblée générale. Mon tuteur venait de mentionner que chaque étudiant devait trouver deux idées de projets de science des données, dont une que je devrais présenter à toute la classe à la fin du cours. J’ai eu l’impression d’avoir l’esprit complètement vide, un effet qu’a généralement sur moi le fait d’avoir une telle liberté de choix pour presque tout. J’ai passé les deux jours suivants à essayer de réfléchir à un projet intéressant. Je travaille pour un gestionnaire d’investissement, donc ma première pensée était d’opter pour quelque chose lié au gestionnaire d’investissement, mais j’ai ensuite pensé que je passe 9+ heures au travail chaque jour, donc je ne voulais pas que mon temps libre sacré soit également pris avec des trucs liés au travail.

Quelques jours plus tard, j’ai reçu le message ci-dessous sur l’une de mes discussions de groupe WhatsApp :

Cela a fait germer une idée. Et si je pouvais utiliser les compétences en science des données et en apprentissage automatique acquises dans le cadre du cours pour augmenter la probabilité qu’une conversation particulière sur Tinder soit un  » succès  » ? C’est ainsi qu’est née mon idée de projet. La prochaine étape ? Dire à ma petite amie…

Quelques faits sur Tinder, publiés par Tinder eux-mêmes:

  • l’application compte environ 50m d’utilisateurs, dont 10m utilisent l’application quotidiennement
  • depuis 2012, il y a eu plus de 20bn matches sur Tinder
  • un total de 1.6bn swipes se produisent chaque jour sur l’application
  • l’utilisateur moyen passe 35 minutes PAR JOUR sur l’application
  • on estime que 1,5m de rendez-vous se produisent PAR SEMAINE grâce à l’application

Problème 1 : Obtenir des données

Mais comment pourrais-je obtenir des données à analyser ? Pour des raisons évidentes, les conversations Tinder de l’utilisateur et l’historique des correspondances, etc. sont codés de manière sécurisée afin que personne en dehors de l’utilisateur ne puisse les voir. Après un peu de google, je suis tombé sur cet article:

Ce qui m’a conduit à la réalisation que Tinder ont maintenant été forcés de construire un service où vous pouvez demander vos propres données à eux, dans le cadre de la loi sur la liberté d’information. Cue, le bouton « télécharger les données »:

Une fois cliqué, vous devez attendre 2-3 jours ouvrables avant que Tinder vous envoie un lien à partir duquel télécharger le fichier de données. J’attendais cet e-mail avec impatience, ayant été un utilisateur avide de Tinder pendant environ un an et demi avant ma relation actuelle. Je n’avais aucune idée de ce que je ressentirais, en parcourant un si grand nombre de conversations qui avaient finalement (ou pas si finalement) fait long feu.

Après ce qui m’a semblé être un âge, l’email est arrivé. Les données étaient (heureusement) au format JSON, donc un téléchargement rapide et un chargement dans python et bosh, accès à toute mon histoire de rencontres en ligne.

Les données

Le fichier de données est divisé en 7 sections différentes :

Parmi celles-ci, seules deux étaient vraiment intéressantes/utiles pour moi :

  • Messages
  • Usage

En poussant l’analyse plus loin, le fichier « Usage » contient des données sur les « App Opens », les « Matches », les « Messages reçus », les « Messages envoyés », les « Swipes Right » et les « Swipes Left », et le « fichier Messages » contient tous les messages envoyés par l’utilisateur, avec des horodatages, et l’ID de la personne à qui le message a été envoyé. Comme je suis sûr que vous pouvez l’imaginer, cela a conduit à une lecture plutôt intéressante…

Problème 2 : Obtenir plus de données

Droit, j’ai mes propres données Tinder, mais pour que tous les résultats que j’obtiens ne soient pas complètement statistiquement insignifiants/fortement biaisés, j’ai besoin d’obtenir les données d’autres personnes. Mais comment faire…

Cue une quantité non négligeable de supplications.

Miraculeusement, j’ai réussi à persuader 8 de mes amis de me donner leurs données. Ils allaient des utilisateurs chevronnés aux utilisateurs sporadiques « utilisés quand ils s’ennuient », ce qui m’a donné une section transversale raisonnable des types d’utilisateurs que je sentais. Le plus grand succès ? Ma petite amie m’a également donné ses données.

Une autre chose délicate était de définir un  » succès « . J’ai décidé de le définir comme suit : soit un numéro a été obtenu de l’autre partie, soit les deux utilisateurs sont sortis ensemble. J’ai ensuite, par une combinaison de questions et d’analyses, catégorisé chaque conversation comme étant un succès ou non.

Problème 3 : Et maintenant ?

D’accord, j’ai plus de données, mais maintenant quoi ? Le cours de science des données s’est concentré sur la science des données et l’apprentissage automatique en Python, donc l’importer en python (j’ai utilisé anaconda/Jupyter notebooks) et le nettoyer semblait être la prochaine étape logique. Parlez à n’importe quel scientifique des données et il vous dira que le nettoyage des données est a) la partie la plus fastidieuse de son travail et b) la partie de son travail qui lui prend 80% de son temps. Le nettoyage est ennuyeux, mais il est également essentiel pour pouvoir extraire des résultats significatifs des données.

J’ai créé un dossier, dans lequel j’ai déposé les 9 fichiers de données, puis j’ai écrit un petit script pour les parcourir, les importer dans l’environnement et ajouter chaque fichier JSON à un dictionnaire, les clés étant le nom de chaque personne. J’ai également divisé les données « Usage » et les données de messages en deux dictionnaires distincts, de manière à faciliter l’analyse de chaque ensemble de données séparément.

Problème 4 : Différentes adresses e-mail conduisent à différents ensembles de données

Lorsque vous vous inscrivez à Tinder, la grande majorité des gens utilisent leur compte Facebook pour se connecter, mais les personnes plus prudentes utilisent simplement leur adresse e-mail. Hélas, j’avais une de ces personnes dans mon ensemble de données, ce qui signifie que j’avais deux ensembles de fichiers pour eux. C’était un peu une douleur, mais globalement pas trop difficile à gérer.

Ayant importé les données dans des dictionnaires, j’ai ensuite itéré à travers les fichiers JSON et extrait chaque point de données pertinent dans un dataframe pandas, ressemblant à quelque chose comme ceci :

Données d’utilisation avec noms supprimés
.

Données de messages avec noms supprimés

Avant que quelqu’un ne s’inquiète d’inclure l’id dans la dataframe ci-dessus, Tinder a publié cet article, affirmant qu’il est impossible de consulter les utilisateurs à moins d’être jumelé avec eux :

https://www.help.tinder.com/hc/en-us/articles/115003359366-Can-I-search-for-a-specific-person-on-Tinder-

Maintenant que les données étaient dans un format agréable, j’ai réussi à produire quelques statistiques sommaires de haut niveau. L’ensemble de données contenait :

  • 2 filles
  • 7 gars
  • 9 participants
  • 502 conversations à un message
  • 1330 conversations uniques
  • 6 344 correspondances
  • 6 750 messages reçus
  • 8,755 messages envoyés
  • 34 233 ouvertures d’applications
  • 94 027 balayages vers la droite
  • 403 149 balayages vers la gauche

Génial, j’avais une quantité décente de données, mais je n’avais pas vraiment pris le temps de réfléchir à ce à quoi un produit final ressemblerait. En fin de compte, j’ai décidé qu’un produit final serait une liste de recommandations sur la façon d’améliorer ses chances de succès avec les rencontres en ligne.

Et ainsi, avec les données dans un format agréable, l’exploration pouvait commencer!

L’exploration

J’ai commencé par examiner les données « Usage », une personne à la fois, purement par curiosité. Pour ce faire, j’ai tracé quelques graphiques, allant de simples tracés métriques agrégés, comme celui ci-dessous :

à des tracés métriques dérivés plus impliqués, comme le bien nommé « Tracé de la loyauté », présenté ci-dessous :

Le premier graphique est assez explicite, mais le second peut nécessiter quelques explications. Essentiellement, chaque ligne horizontale représente une conversation unique, la date de début de chaque ligne étant la date du premier message envoyé dans la conversation, et la date de fin étant le dernier message envoyé dans la conversation. L’idée de ce tracé était d’essayer de comprendre comment les gens utilisent l’application en termes d’envoi de messages à plus d’une personne à la fois.

Bien qu’intéressant, je n’ai pas vraiment vu de tendances ou de modèles évidents que je pouvais interroger davantage, alors je me suis tourné vers les données agrégées « Usage ». J’ai d’abord commencé à regarder diverses métriques dans le temps réparties par utilisateur, pour essayer de déterminer des tendances de haut niveau :

mais rien ne s’est immédiatement détaché.

J’ai ensuite décidé d’approfondir les données sur les messages, qui, comme mentionné précédemment, étaient accompagnées d’un horodatage pratique. Après avoir agrégé le nombre de messages par jour de la semaine et par heure de la journée, j’ai réalisé que j’étais tombé sur ma première recommandation.

9 heures le dimanche est le meilleur moment pour ‘Tinder’, montré ci-dessous comme l’heure/date à laquelle le plus grand volume de messages a été envoyé dans mon échantillon.

Ici, j’ai utilisé le volume de messages envoyés comme un proxy pour le nombre d’utilisateurs en ligne à chaque heure, donc ‘Tinder’ à cette heure vous assurera d’avoir la plus grande audience.

J’ai ensuite commencé à regarder la longueur du message en termes de mots et de lettres, ainsi que le nombre de messages par conversation. Au départ, vous pouvez voir ci-dessous qu’il n’y avait pas grand-chose qui sautait aux yeux… (ici un ‘succès’ est rouge)

Mais une fois que vous commencez à creuser, il y a quelques tendances claires :

  • les messages les plus longs sont plus susceptibles de générer un succès (jusqu’à un certain point)
  • Le nombre moyen de messages dans une conversation où un  » succès  » est trouvé est de 27, avec une médiane de 21.

Ces observations conduisent à mes deuxième et troisième recommandations.

La deuxième recommandation:

Dépensez plus de temps à construire vos messages, et pour l’amour de Dieu n’utilisez pas de langage textuel… généralement les mots plus longs sont de meilleurs mots. Une mise en garde ici est que les données contiennent des liens, qui comptent comme des mots longs, donc cela peut fausser les résultats.

La troisième recommandation:

Ne soyez pas trop hâtifs lorsque vous essayez d’obtenir un numéro. ‘Hey, ur fit, what’s ur number’ est probablement la pire chose que vous pouvez dire en termes de vos chances. De même, ne laissez pas vos messages trop longtemps. Entre votre 20e et votre 30e message, c’est le mieux.

Compte moyen de messages des conversations réussies par rapport aux conversations non réussies

Après avoir étudié la longueur des mots/messages/conversations de manière assez approfondie, j’ai ensuite décidé d’étudier le sentiment. Mais je ne savais absolument pas comment le faire. Pendant le cours, nous avions abordé un peu le traitement du langage naturel (sac de mots, codage à chaud, tous les pré-traitements nécessaires, etc. ainsi que divers algorithmes de classification), mais nous n’avions pas abordé le sentiment. J’ai passé un peu de temps à rechercher le sujet, et j’ai découvert que le nltk sentiment.vader SentimentIntensityAnalyzer serait un assez bon shout.

Cela fonctionne en donnant à l’utilisateur quatre scores, basés sur le pourcentage du texte d’entrée qui était :

  • positif
  • neutre
  • négatif
  • une combinaison des trois

Par chance, il traite aussi des choses comme le contexte des mots, l’argot et même les emojis. Comme je regardais le sentiment, aucun prétraitement n’a été fait (mise en minuscule, suppression de la ponctuation, etc.) afin de ne pas supprimer tout contexte caché.

J’ai commencé cette analyse en alimentant chaque conversation entière dans l’analyseur, mais j’ai rapidement réalisé que cela ne fonctionnait pas vraiment, car le sentiment de la conversation tendait rapidement vers 1 après les premiers messages, et j’ai du mal à croire qu’une conversation de 100 messages était 100% confiante tout le temps.

J’ai ensuite divisé les conversations en leurs messages constitutifs et les ai fait passer un par un, en faisant la moyenne des scores jusqu’au niveau de la conversation. Cela a produit un résultat beaucoup plus réaliste à mon avis:

Séparer ces données par ‘Succès’ ou ‘Pas de succès’, et j’ai rapidement vu un modèle émerger :

C’est le point de départ de ma quatrième recommandation.

La quatrième recommandation:

Soyez positif, mais pas trop positif.

Le sentiment moyen pour une conversation réussie était de 0,31 contre 0,20 pour une conversation non réussie. Cela dit, être trop positif est presque aussi mauvais que d’être trop négatif.

La dernière allée que j’ai explorée était l’effet que divers détails sur le premier message avaient sur le succès de la conversation. Les premières pensées des choses qui pourraient avoir un effet étaient :

  • longueur
  • si un nom a été utilisé
  • sentiment
  • présence d’emojis
  • contenu explicite

Comme prévu, plus le premier message est long, plus la probabilité que cette conversation se poursuive vers un  » Succès  » est grande. En guise d’extension, vous doublez votre probabilité de succès en n’utilisant pas seulement un ouvreur d’un seul mot, par exemple en ne disant pas seulement ‘hey’ ou ‘hi’ ou ‘daayyuumm’ (exemple réel).

De manière un peu plus surprenante, l’utilisation d’un nom dans le premier message a eu très peu d’effet sur le ‘Ratio de succès’ (Nb de succès/Nb de non succès).

Le sentiment du premier message s’est avéré être environ 0,09 plus élevé pour les conversations  » réussies  » que pour les conversations  » non réussies « , ce qui n’était pas vraiment une surprise… si vous insultez quelqu’un dans un premier message, il est intuitivement moins susceptible de répondre.

Analyser les Emojis était une tâche à laquelle je n’avais pas vraiment pensé, et qui avait le potentiel d’être délicate. Heureusement, il existe un paquet appelé  » emoji « , qui détecte automatiquement la présence d’emojis dans le texte. Malheureusement, et à mon grand désarroi, il semble que l’utilisation d’un emoji dans un premier message augmente la probabilité d’obtenir un ‘Succès’.

Maintenant sur le contenu explicite… Un autre qui avait le potentiel d’être assez délicat, car il n’y a pas de bibliothèques intégrées qui captent l’utilisation d’explétifs, etc. (à ma connaissance). Heureusement, je suis tombé sur ceci:

Je peux vous assurer qu’il contient quelques crackers absolus.

J’ai ensuite vérifié quels premiers messages contenaient un mot de cette liste, 40 d’entre eux l’ont fait. Comme c’est toujours le cas avec ce genre de choses, j’ai trouvé quelques cas limites intéressants :

FYI c’était un type qui parlait de ses jambières d’aviron…

Résultats ? Il s’avère qu’aucun des premiers messages qui contenaient un contenu explicite n’a conduit à un « Succès »

Ce qui me conduit à ma cinquième et dernière recommandation.

La cinquième recommandation:

Lorsqu’on envoie un premier message :

  • Soyez positif
  • 8 mots est optimal
  • Utilisez un emoji ou deux
  • Ne soyez pas explicite

Alors pour résumer

  1. Utilisez Tinder à 21 heures un dimanche pour un maximum d’audience
  2. Dépensez du temps à construire vos messages et n’utilisez pas le texto
  3. Préparez-vous à demander un numéro ou un rendez-vous entre le 20e et le 30e message
  4. Soyez positif, mais pas trop positif
  5. Envoyez autre chose que « hey » comme premier message, visez environ 8 mots, utilisez peut-être un emoji et ne soyez pas explicite

Quelques pièges des données :

  1. Mon ensemble de données est un très, très petit échantillon, rendant la plupart des insights inutiles
  2. L’ensemble de données est biaisé vers le type de personnes que je connais, ainsi que vers les hommes
  3. L’ensemble de données ne contient qu’un côté de la conversation
  4. Les statistiques de messages et d’utilisation ne correspondent pas nécessairement en raison des utilisateurs qui désinstallent et réinstallent l’application
  5. Aucune technique NLP ne sera parfaite en raison du sarcasme/variations dans la façon dont les gens parlent

Quelques idées pour des travaux futurs :

  • Recueillir plus de données
  • Faire plus pour déterminer les résultats statistiquement significatifs par rapport aux observations
  • Regarder l’analyse de la conversation par sujet – quel type de messages composent le bon et le mauvais sentiment
  • Tenter d’examiner le sarcasme
  • Investir d’autres applications (Bumble, Hinge etc.)
  • Une sorte d’analyse de classification si plus de données étaient incluses, car nous n’avions que 70 succès environ
  • Regarder plus dans les divisions de genre si plus de données étaient incluses

Quelques faits intéressants à partir des données:

  • Plus de swipes par une seule personne en un seul jour : 8096
  • Les mecs sont plus susceptibles de laisser un long moment (7 jours environ) avant d’envoyer un deuxième message
  • Poser une question dans un premier message diminue en fait vos chances de succès
  • Les femmes glissent vers la droite en moyenne 1% du temps, alors que les hommes le font ~50% du temps
  • Par application ouverte, les femmes glissent 3x plus de fois que les hommes

Lecture complémentaire :

  • Un article a été publié intitulé « Un premier regard sur l’activité des utilisateurs sur Tinder », lien ici
  • Il existe une API Tinder, mais malheureusement, elle ne concerne que les personnes utilisant l’application plutôt que de donner accès à une sorte de base de données. Quoi qu’il en soit, l’utiliser pour tester certaines hypothèses pourrait être intéressant.
  • Tinderbox est un logiciel qui peut apprendre par qui vous êtes attiré via la réduction de la dimensionnalité. Il a également un chatbot intégré si vous voulez vraiment automatiser le processus…

Merci de lire, toute idée de travail futur serait très appréciée !

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.