Meine Freunde gaben mir ihre Tinder-Daten…
Es war Mittwoch, der 3. Oktober 2018, und ich saß in der letzten Reihe des Data-Science-Kurses der Generalversammlung. Mein Tutor hatte gerade erwähnt, dass jeder Student zwei Ideen für Data-Science-Projekte entwickeln sollte, von denen ich eine am Ende des Kurses vor der ganzen Klasse präsentieren sollte. Ich war wie vor den Kopf gestoßen – ein Effekt, den es normalerweise auf mich hat, wenn man mir so viel Freiheit bei der Auswahl von fast allem lässt. Die nächsten Tage verbrachte ich intensiv damit, mir ein gutes/interessantes Projekt auszudenken. Ich arbeite für einen Vermögensverwalter, also war mein erster Gedanke, etwas zu machen, das mit Vermögensverwaltung zu tun hat, aber dann dachte ich daran, dass ich jeden Tag mehr als 9 Stunden auf der Arbeit verbringe, also wollte ich nicht, dass meine heilige Freizeit auch noch mit arbeitsbezogenen Dingen vergeudet wird.
Ein paar Tage später erhielt ich in einem meiner Gruppen-Whats die folgende Nachricht:
Das brachte mich auf eine Idee. Was wäre, wenn ich die im Kurs erlernten Fähigkeiten in den Bereichen Datenwissenschaft und maschinelles Lernen nutzen könnte, um die Wahrscheinlichkeit zu erhöhen, dass ein bestimmtes Gespräch auf Tinder zu einem „Erfolg“ wird? Damit war meine Projektidee geboren. Der nächste Schritt? Meiner Freundin erzählen…
Ein paar Fakten zu Tinder, die von Tinder selbst veröffentlicht wurden:
- Die App hat etwa 50 Millionen Nutzer, von denen 10 Millionen die App täglich nutzen
- Seit 2012 gab es über 20 Milliarden Matches auf Tinder
- insgesamt 1.6 Mrd. Swipes finden täglich auf der App statt
- Der durchschnittliche Nutzer verbringt 35 Minuten PRO TAG auf der App
- Schätzungsweise 1,5 Mio. Dates finden JEDE WOCHE dank der App statt
Problem 1: Daten erhalten
Aber wie komme ich an Daten zur Analyse? Aus offensichtlichen Gründen sind die Tinder-Unterhaltungen und die Match-Historie usw. des Nutzers sicher verschlüsselt, so dass niemand außer dem Nutzer sie sehen kann. Nachdem ich ein bisschen gegoogelt hatte, stieß ich auf diesen Artikel:
Damit wurde mir klar, dass Tinder jetzt gezwungen ist, einen Dienst einzurichten, bei dem man seine eigenen Daten anfordern kann, und zwar als Teil des Gesetzes über die Informationsfreiheit. Stichwort ‚Daten herunterladen‘:
Wenn man darauf geklickt hat, muss man 2-3 Werktage warten, bevor Tinder einem einen Link schickt, über den man die Daten herunterladen kann. Ich habe diese E-Mail mit Spannung erwartet, da ich vor meiner aktuellen Beziehung etwa anderthalb Jahre lang ein begeisterter Tinder-Nutzer war. Ich hatte keine Ahnung, wie ich mich fühlen würde, wenn ich auf so viele Unterhaltungen zurückblicke, die irgendwann (oder auch nicht) im Sande verlaufen sind.
Nach einer gefühlten Ewigkeit kam die E-Mail. Die Daten waren (zum Glück) im JSON-Format, also ein schneller Download und Upload in Python und schwupps, Zugriff auf meine gesamte Online-Dating-Historie.
Die Daten
Die Datendatei ist in 7 verschiedene Abschnitte unterteilt:
Von diesen waren nur zwei wirklich interessant/nützlich für mich:
- Nachrichten
- Nutzung
Bei näherer Analyse enthält die „Nutzungs“-Datei Daten zu „App-Öffnungen“, „Treffern“, „empfangenen Nachrichten“, „gesendeten Nachrichten“, „Wischern nach rechts“ und „Wischern nach links“, und die „Nachrichtendatei“ enthält alle vom Nutzer gesendeten Nachrichten mit Zeit-/Datumsstempeln und der ID der Person, der die Nachricht gesendet wurde. Wie Sie sich sicher vorstellen können, führte das zu einer ziemlich interessanten Lektüre…
Problem 2: Mehr Daten bekommen
Richtig, ich habe meine eigenen Tinder-Daten, aber damit die Ergebnisse, die ich erhalte, nicht völlig statistisch unbedeutend/stark verzerrt sind, muss ich die Daten anderer Leute bekommen. Aber wie stelle ich das an…
Eine nicht unbedeutende Menge an Betteln.
Wie durch ein Wunder habe ich es geschafft, 8 meiner Freunde zu überreden, mir ihre Daten zu geben. Die Bandbreite reichte von erfahrenen Nutzern bis hin zu sporadischen Nutzern, die das Programm nur aus Langeweile verwenden, so dass ich einen angemessenen Querschnitt der Nutzertypen erhielt. Der größte Erfolg? Meine Freundin hat mir auch ihre Daten zur Verfügung gestellt.
Eine weitere knifflige Sache war die Definition von „Erfolg“. Ich einigte mich auf die Definition, dass entweder eine Zahl von der anderen Partei erhalten wurde oder die beiden Nutzer ein Date hatten. Durch eine Kombination aus Fragen und Analysen habe ich dann jedes Gespräch als erfolgreich oder nicht erfolgreich kategorisiert.
Problem 3: Was nun?
Richtig, ich habe mehr Daten, aber was nun? Der Data Science-Kurs konzentrierte sich auf Data Science und maschinelles Lernen in Python, so dass der Import in Python (ich verwendete Anaconda/Jupyter Notebooks) und die Bereinigung der Daten ein logischer nächster Schritt zu sein schien. Jeder Datenwissenschaftler wird Ihnen sagen, dass das Bereinigen von Daten a) der mühsamste Teil seiner Arbeit ist und b) der Teil seiner Arbeit, der 80 % seiner Zeit in Anspruch nimmt. Das Bereinigen ist langweilig, aber auch entscheidend, um aussagekräftige Ergebnisse aus den Daten zu extrahieren.
Ich habe einen Ordner erstellt, in dem ich alle 9 Datendateien abgelegt habe, und dann ein kleines Skript geschrieben, um diese zu durchlaufen, sie in die Umgebung zu importieren und jede JSON-Datei zu einem Wörterbuch hinzuzufügen, wobei die Schlüssel die Namen der einzelnen Personen sind. Außerdem habe ich die „Nutzungsdaten“ und die Nachrichtendaten in zwei getrennte Wörterbücher aufgeteilt, um die Analyse der einzelnen Datensätze zu erleichtern.
Problem 4: Unterschiedliche E-Mail-Adressen führen zu unterschiedlichen Datensätzen
Wenn man sich bei Tinder anmeldet, verwenden die meisten Leute ihr Facebook-Konto, um sich einzuloggen, aber vorsichtigere Leute verwenden einfach ihre E-Mail-Adresse. Leider hatte ich eine dieser Personen in meinem Datensatz, was bedeutet, dass ich zwei Sätze von Dateien für sie hatte. Das war ein bisschen mühsam, aber insgesamt nicht allzu schwierig zu handhaben.
Nachdem ich die Daten in Wörterbücher importiert hatte, iterierte ich durch die JSON-Dateien und extrahierte jeden relevanten Datenpunkt in einen Pandas-Datenframe, der etwa so aussah:
Bevor sich jemand Gedanken darüber macht, die ID in den obigen Datenrahmen aufzunehmen, Tinder hat diesen Artikel veröffentlicht, der besagt, dass es unmöglich ist, Nutzer zu finden, wenn man nicht mit ihnen gepaart ist:
https://www.help.tinder.com/hc/en-us/articles/115003359366-Can-I-search-for-a-specific-person-on-Tinder-
Nachdem die Daten nun in einem schönen Format vorlagen, konnte ich ein paar übergeordnete Statistiken erstellen. Der Datensatz enthielt:
- 2 Mädchen
- 7 Jungs
- 9 Teilnehmer
- 502 Unterhaltungen mit einer Nachricht
- 1330 einzigartige Unterhaltungen
- 6.344 Übereinstimmungen
- 6.750 empfangene Nachrichten
- 8,755 gesendete Nachrichten
- 34.233 App-Öffnungen
- 94.027 Wischbewegungen nach rechts
- 403.149 Wischbewegungen nach links
Großartig, ich hatte eine anständige Menge an Daten, aber ich hatte mir nicht wirklich die Zeit genommen, darüber nachzudenken, wie ein Endprodukt aussehen würde. Schließlich beschloss ich, dass das Endprodukt eine Liste mit Empfehlungen sein würde, wie man seine Erfolgschancen beim Online-Dating verbessern kann.
Und so, mit den Daten in einem schönen Format, konnte die Untersuchung beginnen!
Die Untersuchung
Ich begann damit, die „Nutzungs“-Daten zu betrachten, eine Person nach der anderen, einfach aus Neugier. Dazu habe ich einige Diagramme erstellt, die von einfachen aggregierten metrischen Diagrammen wie dem folgenden reichen:
bis hin zu komplexeren, abgeleiteten metrischen Diagrammen wie dem treffend benannten „Loyalitätsdiagramm“, das unten gezeigt wird:
Das erste Diagramm ist ziemlich selbsterklärend, aber das zweite ist vielleicht etwas erklärungsbedürftig. Im Wesentlichen steht jede Zeile/horizontale Linie für eine einzelne Konversation, wobei das Startdatum jeder Zeile das Datum der ersten innerhalb der Konversation gesendeten Nachricht ist und das Enddatum die letzte in der Konversation gesendete Nachricht. Mit dieser Darstellung wollte ich herausfinden, wie die Nutzer die App nutzen, um mehr als einer Person gleichzeitig Nachrichten zu senden.
Da ich keine offensichtlichen Trends oder Muster erkennen konnte, die ich weiter untersuchen konnte, wandte ich mich den aggregierten „Nutzungsdaten“ zu. Ich begann damit, mir verschiedene Metriken über die Zeit, aufgeteilt nach Benutzer, anzusehen, um zu versuchen, übergeordnete Trends zu ermitteln:
aber nichts stach sofort hervor.
Ich beschloss dann, mir die Nachrichtendaten genauer anzusehen, die, wie bereits erwähnt, mit einem praktischen Zeitstempel versehen waren. Nachdem ich die Anzahl der Nachrichten nach Wochentag und Uhrzeit aufgeschlüsselt hatte, stellte ich fest, dass ich auf meine erste Empfehlung gestoßen war.
Sonntags um 21.00 Uhr ist die beste Zeit für „Tinder“, wie unten gezeigt wird, da zu dieser Zeit/Datum die meisten Nachrichten innerhalb meiner Stichprobe verschickt wurden.
Hier habe ich das Volumen der gesendeten Nachrichten als Proxy für die Anzahl der Nutzer, die zu jeder Zeit online sind, verwendet, so dass „Tindering“ zu dieser Zeit sicherstellt, dass Sie das größte Publikum haben.
Ich habe dann begonnen, die Länge der Nachricht in Bezug auf Wörter und Buchstaben sowie die Anzahl der Nachrichten pro Konversation zu betrachten. Auf den ersten Blick fällt nicht viel auf… (hier ist ein „Erfolg“ rot)
Aber sobald man anfängt zu graben, gibt es ein paar klare Trends:
- Längere Nachrichten führen mit größerer Wahrscheinlichkeit zu einem Erfolg (bis zu einem gewissen Grad)
- Die durchschnittliche Anzahl der Nachrichten in einem Gespräch, in dem ein „Erfolg“ festgestellt wird, beträgt 27, mit einem Median von 21.
Diese Beobachtungen führen zu meiner zweiten und dritten Empfehlung.
Die zweite Empfehlung:
Nehmen Sie sich mehr Zeit für den Aufbau Ihrer Nachrichten, und verwenden Sie um Himmels willen keinen Text… im Allgemeinen sind längere Wörter bessere Wörter. Eine Einschränkung ist hier, dass die Daten Links enthalten, die als lange Wörter zählen, was die Ergebnisse verfälschen kann.
Die dritte Empfehlung:
Sei nicht zu voreilig, wenn du versuchst, eine Zahl zu bekommen. „Hey, du bist fit, wie lautet deine Nummer?“ ist wahrscheinlich das Schlechteste, was du im Hinblick auf deine Chancen sagen kannst. Lassen Sie sich aber auch nicht zu viel Zeit. Am besten zwischen der 20. und 30. Nachricht.
Nachdem ich mich ausgiebig mit der Länge von Wörtern/Nachrichten/Gesprächen beschäftigt hatte, beschloss ich, mich mit der Stimmung zu beschäftigen. Aber ich wusste absolut nichts darüber, wie man das macht. Während des Kurses hatten wir ein wenig über die Verarbeitung natürlicher Sprache gesprochen (Bag of Words, One Hot Encoding, alle erforderlichen Vorverarbeitungen usw. sowie verschiedene Klassifizierungsalgorithmen), aber nicht über die Stimmung. Ich habe einige Zeit damit verbracht, das Thema zu recherchieren, und entdeckte, dass der nltk sentiment.vader SentimentIntensityAnalyzer ein ziemlich guter Kandidat wäre.
Dies funktioniert, indem es dem Benutzer vier Punkte gibt, basierend auf dem Prozentsatz des eingegebenen Textes, der war:
- positiv
- neutral
- negativ
- eine Kombination aus den drei
Glücklicherweise werden auch Dinge wie Wortkontext, Slang und sogar Emojis berücksichtigt.
Ich begann die Analyse, indem ich jede einzelne Konversation in den Analysator einspeiste, merkte aber schnell, dass dies nicht wirklich funktionierte, da die Stimmung der Konversation nach den ersten paar Nachrichten schnell zu 1 tendierte, und es fällt mir schwer zu glauben, dass eine Konversation mit 100 Nachrichten die ganze Zeit über 100%ig sicher war.
Ich habe dann die Konversationen in ihre einzelnen Nachrichten aufgeteilt und sie einzeln durchlaufen lassen, wobei ich die Durchschnittswerte auf Konversationsebene ermittelte. Dies führte meiner Meinung nach zu einem viel realistischeren Ergebnis:
Teilte ich diese Daten nach „Erfolg“ oder „kein Erfolg“ auf, so konnte ich schnell ein Muster erkennen:
Damit war meine vierte Empfehlung abgegolten.
Die vierte Empfehlung:
Sein Sie positiv, aber nicht zu positiv.
Die durchschnittliche Stimmung für ein erfolgreiches Gespräch betrug 0,31 gegenüber 0,20 für ein nicht erfolgreiches Gespräch. Allerdings ist eine zu positive Stimmung fast genauso schlecht wie eine zu negative.
Die letzte Gasse, die ich untersuchte, war die Auswirkung verschiedener Details der ersten Nachricht auf den Erfolg des Gesprächs. Erste Überlegungen, die einen Einfluss haben könnten, waren:
- Länge
- Ob ein Name verwendet wurde
- Stimmung
- Vorhandensein von Emojis
- expliziter Inhalt
Wie erwartet, ist die Wahrscheinlichkeit, dass das Gespräch zu einem „Erfolg“ führt, umso größer, je länger die erste Nachricht ist. Außerdem verdoppelt sich die Erfolgswahrscheinlichkeit, wenn man nicht nur einen Ein-Wort-Öffner verwendet, d.h. nicht nur „hey“ oder „hi“ oder „daayyuumm“ sagt (reales Beispiel).
Überraschenderweise hatte die Verwendung eines Namens in der ersten Nachricht nur einen sehr geringen Einfluss auf die „Erfolgsquote“ (Anzahl der Erfolge/Nicht-Erfolge).
Es stellte sich heraus, dass die Stimmung in der ersten Nachricht bei „erfolgreichen“ Gesprächen um 0,09 höher war als bei „erfolglosen“ Gesprächen, was keine wirkliche Überraschung war… wenn man jemanden in der ersten Nachricht beleidigt, ist es intuitiv unwahrscheinlicher, dass er antwortet.
Die Analyse von Emojis war eine Aufgabe, über die ich nicht wirklich nachgedacht hatte und die sich als schwierig erweisen könnte. Glücklicherweise gibt es ein Paket namens „emoji“, das automatisch das Vorhandensein von Emojis im Text erkennt. Leider, und sehr zu meiner Bestürzung, scheint es so, als ob die Verwendung eines Emoji in einer ersten Nachricht die Wahrscheinlichkeit eines „Erfolgs“ erhöht.
Nun zu den expliziten Inhalten… Ein weiterer Punkt, der sich als ziemlich knifflig erweisen könnte, da es keine eingebauten Bibliotheken gibt, die die Verwendung von Schimpfwörtern usw. erkennen. (von denen ich weiß). Zum Glück bin ich auf das hier gestoßen:
Ich kann Ihnen versichern, dass darin einige absolute Knaller enthalten sind.
Ich habe dann überprüft, welche ersten Nachrichten ein Wort aus dieser Liste enthielten, und in 40 Fällen war dies der Fall. Wie immer bei solchen Dingen fand ich einige interessante Randfälle:
FYI, das war ein Kerl, der über seine Ruderleggings sprach…
Ergebnisse? Es stellte sich heraus, dass keine der ersten Nachrichten mit explizitem Inhalt zu einem „Erfolg“
Das führte mich zu meiner fünften und letzten Empfehlung.
Die fünfte Empfehlung:
Wenn Sie eine erste Nachricht senden:
- Seien Sie positiv
- 8 Wörter sind optimal
- Verwenden Sie ein oder zwei Emoji
- Sein Sie nicht explizit
Zusammenfassend
- Nutzen Sie Tinder um 21 Uhr an einem Sonntags, um möglichst viele Leute anzusprechen
- Verbringe Zeit mit dem Verfassen von Nachrichten und benutze nicht die Textsprache
- Bereite dich darauf vor, zwischen der 20. und 30. Nachricht nach einer Nummer oder einem Date zu fragen
- Sei positiv, aber nicht zu positiv
- Senden Sie etwas anderes als „Hey“ als erste Nachricht, versuchen Sie es mit etwa 8 Wörtern, verwenden Sie vielleicht ein Emoji und seien Sie nicht explizit
Ein paar Fallstricke der Daten:
- Mein Datensatz ist eine sehr, sehr kleine Stichprobe, die die meisten Erkenntnisse nutzlos macht
- Der Datensatz ist auf die Art von Menschen ausgerichtet, die ich kenne,
- Der Datensatz enthält nur eine Seite des Gesprächs
- Die Nachrichten- und Nutzungsstatistiken stimmen nicht notwendigerweise überein, da die Nutzer die App deinstallieren und neu installieren
- Keine NLP-Technik ist perfekt, da Sarkasmus/Unterschiede in der Art und Weise, wie Menschen sprechen, eine Rolle spielen
Ein paar Ideen für zukünftige Arbeiten:
- Mehr Daten sammeln
- Mehr tun, um statistisch signifikante Ergebnisse im Vergleich zu Beobachtungen zu ermitteln
- Gesprächsanalyse nach Thema – welche Art von Nachrichten machen die gute und schlechte Stimmung aus
- Versuchen Sie, Sarkasmus zu untersuchen
- Untersuchen Sie andere Apps (Bumble, Hinge etc.)
- Eine Art von Klassifizierungsanalyse, wenn mehr Daten enthalten wären, da wir nur etwa 70 Erfolge hatten
- Mehr auf die Geschlechteraufteilung achten, wenn mehr Daten enthalten wären
Ein paar interessante Fakten aus den Daten:
- Mit den meisten Swipes einer einzelnen Person an einem einzigen Tag: 8096
- Männer lassen sich eher lange Zeit (ca. 7 Tage), bevor sie eine zweite Nachricht senden
- Eine Frage in der ersten Nachricht zu stellen, verringert tatsächlich die Chance auf einen Erfolg
- Frauen wischen durchschnittlich 1% der Zeit nach rechts, während Männer dies ~50% der Zeit tun
- Pro geöffneter App wischen Frauen 3x so oft wie Männer
Weiter lesen:
- Ein Papier mit dem Titel ‚A First Look at User Activity on Tinder‘ wurde veröffentlicht, Link hier
- Es gibt eine Tinder-API, aber leider nur für Leute, die die App benutzen, anstatt Zugang zu einer Art Datenbank zu geben. Trotzdem könnte es interessant sein, damit bestimmte Hypothesen zu testen.
- Tinderbox ist eine Software, die durch Dimensionalitätsreduktion lernen kann, zu wem man sich hingezogen fühlt. Es hat auch einen Chatbot eingebaut, wenn man den Prozess wirklich automatisieren will…
Danke für die Lektüre, jede Idee für zukünftige Arbeit würde sehr geschätzt werden!