Moji přátelé mi dali svá data z Tinderu…

Srp 5, 2021
admin

Byla středa 3. října 2018 a já seděl v zadní řadě na kurzu General Assembly Data Science. Můj učitel se právě zmínil, že každý student musí přijít se dvěma nápady na projekty v oblasti datové vědy, z nichž jeden budu muset na konci kurzu představit celé třídě. V hlavě se mi udělalo úplně prázdno, což je efekt, který na mě obecně má, když dostanu takovou volnou ruku při výběru téměř čehokoli. Několik následujících dní jsem se intenzivně snažil vymyslet dobrý/zajímavý projekt. Pracuji pro investičního manažera, takže mě nejdřív napadlo něco, co by se týkalo investičního manažera, ale pak jsem si řekl, že v práci trávím každý den více než 9 hodin, takže jsem nechtěl, aby můj posvátný volný čas zabíraly i věci související s prací.

O pár dní později jsem na jeden ze svých skupinových WhatsApp chatů dostal následující zprávu:

To ve mně vzbudilo nápad. Co kdybych mohl využít dovednosti datové vědy a strojového učení, které jsem se naučil v rámci kurzu, ke zvýšení pravděpodobnosti, že nějaká konkrétní konverzace na Tinderu bude „úspěšná“? Tak vznikl můj nápad na projekt. Další krok? Říct své přítelkyni…

Několik faktů o Tinderu, které zveřejnil sám Tinder:

  • aplikace má přibližně 50 milionů uživatelů, z nichž 10 milionů používá aplikaci denně
  • od roku 2012 bylo na Tinderu zaznamenáno více než 20 miliard shod
  • celkem 1,5 miliardy shod.6 miliard swipů proběhne v aplikaci každý den
  • průměrný uživatel stráví v aplikaci 35 minut DENNĚ
  • odhaduje se, že díky aplikaci proběhne 1,5 milionu rande TÝDNĚ

Problém 1: Získání dat

Ale jak bych získal data k analýze? Konverzace uživatele Tinderu, historie zápasů atd. jsou ze zřejmých důvodů bezpečně zakódovány, takže je kromě uživatele nikdo nevidí. Po chvíli googlování jsem narazil na tento článek:

To mě přivedlo k poznání, že Tinder byl nyní v rámci zákona o svobodě informací nucen vytvořit službu, kde si od něj můžete vyžádat vlastní data. Cue, tlačítko „stáhnout data“:

Po kliknutí musíte počkat 2-3 pracovní dny, než vám Tinder pošle odkaz, ze kterého si soubor s daty stáhnete. Na tento e-mail jsem netrpělivě čekal, protože jsem byl vášnivým uživatelem Tinderu asi rok a půl před svým současným vztahem. Netušil jsem, jak se budu cítit, když jsem zpětně procházel tak velké množství konverzací, které nakonec (nebo ne tak úplně) vyšuměly.

Po době, která mi připadala jako věčnost, e-mail přišel. Data byla (naštěstí) ve formátu JSON, takže stačilo rychle stáhnout a nahrát do pythonu a bosh, přístup k celé mé historii online randění.

Data

Soubor s daty je rozdělen na 7 různých částí:

Z nich pro mě byly opravdu zajímavé/užitečné jen dvě:

  • Zprávy
  • Použití

Při další analýze soubor „Používání“ obsahuje údaje o „Otevření aplikace“, „Shodách“, „Přijatých zprávách“, „Odeslaných zprávách“, „Přejetích doprava“ a „Přejetích doleva“ a soubor „Zprávy“ obsahuje všechny zprávy odeslané uživatelem s časovými/datovými razítky a ID osoby, které byla zpráva odeslána. Jak si jistě dokážete představit, vedlo to k docela zajímavému čtení…

Problém 2: Získání dalších dat

Pravda, mám svá vlastní data z Tinderu, ale aby jakékoli výsledky, kterých dosáhnu, nebyly zcela statisticky nevýznamné/vážně zkreslené, potřebuji získat data jiných lidí. Ale jak to mám udělat…

Začíná nezanedbatelné množství škemrání.

Miraculously, podařilo se mi přesvědčit 8 mých přátel, aby mi poskytli svá data. Byli to různí uživatelé, od zkušených až po občasné „použití, když se nudím“, což mi poskytlo rozumný průřez typů uživatelů, které jsem cítil. Největší úspěch? Své údaje mi poskytla i moje přítelkyně.

Dalším úskalím bylo definovat „úspěch“. Usadil jsem se na definici, že buď bylo získáno číslo od druhé strany, nebo šli oba uživatelé na rande. Kombinací dotazování a analýzy jsem pak každou konverzaci zařadil buď jako úspěšnou, nebo neúspěšnou.

Problém 3: Co teď?“

Právě, mám další data, ale co teď? Kurz Data Science se zaměřoval na datovou vědu a strojové učení v Pythonu, takže import do Pythonu (použil jsem notebooky anaconda/Jupyter) a jejich vyčištění se jevilo jako logický další krok. Promluvte si s jakýmkoli datovým vědcem a řekne vám, že čištění dat je a) nejnudnější část jeho práce a b) část jeho práce, která mu zabere 80 % času. Čištění je nudné, ale je také rozhodující pro to, aby bylo možné z dat získat smysluplné výsledky.

Vytvořil jsem složku, do které jsem naházel všech 9 datových souborů, pak jsem napsal malý skript, který je cyklicky procházel, importoval do prostředí a přidal každý soubor JSON do slovníku, jehož klíči byla jména jednotlivých osob. Rozdělil jsem také data „Používání“ a data zpráv do dvou samostatných slovníků, aby bylo snazší provádět analýzu každého datového souboru zvlášť.

Problém 4: Různé e-mailové adresy vedou k různým datovým souborům

Při registraci na Tinderu používá drtivá většina lidí k přihlášení svůj účet na Facebooku, ale opatrnější lidé používají pouze svou e-mailovou adresu. Bohužel jsem měl v datovém souboru jednoho z těchto lidí, což znamená, že jsem pro ně měl dvě sady souborů. To bylo trochu nepříjemné, ale celkově nebylo příliš obtížné se s tím vypořádat.

Po importu dat do slovníků jsem pak iteroval soubory JSON a extrahoval každý relevantní datový bod do datového rámce pandas, který vypadal nějak takto:

Uživatelská data s odstraněnými jmény

.

Uživatelská data s odstraněnými jmény

Než se někdo začne obávat zahrnutí id do výše uvedeného datového rámce, Tinder zveřejnil tento článek, ve kterém uvádí, že není možné vyhledávat uživatele, pokud s nimi nejste spárováni:

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

Když už byla data v pěkném formátu, podařilo se mi vytvořit několik souhrnných statistik na vysoké úrovni. Soubor dat obsahoval:

  • 2 dívky
  • 7 chlapců
  • 9 účastníků
  • 502 konverzací s jednou zprávou
  • 1330 unikátních konverzací
  • 6 344 shod
  • 6 750 přijatých zpráv
  • 8. Jaké byly výsledky?755 odeslaných zpráv
  • 34 233 otevření aplikace
  • 94 027 posunů doprava
  • 403 149 posunů doleva

Skvělé, měl jsem slušné množství dat, ale vlastně jsem neměl čas přemýšlet o tom, jak bude vypadat konečný produkt. Nakonec jsem se rozhodl, že konečným produktem bude seznam doporučení, jak zlepšit své šance na úspěch při online seznamování.

A tak, s daty v pěkném formátu, mohlo začít zkoumání!

Zkoumání

Začal jsem zkoumat data „Používání“, jednu osobu po druhé, čistě ze zvědavosti. Udělal jsem to tak, že jsem vykreslil několik grafů, od jednoduchých agregovaných metrických grafů, jako je níže uvedený:

až po zapojenější, odvozené metrické grafy, jako je níže uvedený graf s příhodným názvem „Loyalty Plot“:

První graf je poměrně srozumitelný, ale druhý může potřebovat vysvětlení. V podstatě každý řádek/vodorovná čára představuje jedinečnou konverzaci, přičemž počáteční datum každého řádku je datum první zprávy odeslané v rámci konverzace a koncové datum je poslední zpráva odeslaná v rámci konverzace. Smyslem tohoto grafu bylo pokusit se pochopit, jak lidé používají aplikaci z hlediska zasílání zpráv více než jedné osobě najednou.

Ačkoli to bylo zajímavé, neviděl jsem žádné zjevné trendy nebo vzorce, které bych mohl dále zkoumat, a tak jsem se obrátil na souhrnná data „Použití“. Nejprve jsem se začal dívat na různé metriky v čase rozdělené podle uživatelů, abych se pokusil určit nějaké vyšší trendy:

ale nic okamžitě nevyčnívalo.

Poté jsem se rozhodl podívat hlouběji do dat o zprávách, která, jak již bylo zmíněno, byla opatřena praktickým časovým razítkem. Po agregaci počtu zpráv až podle dne v týdnu a denní hodiny jsem si uvědomil, že jsem narazil na své první doporučení.

V neděli ve 21 hodin je nejlepší čas na „Tinder“, což je níže uvedeno jako čas/datum, kdy bylo v rámci mého vzorku odesláno největší množství zpráv.

Zde jsem použil objem odeslaných zpráv jako zástupný ukazatel počtu uživatelů online v jednotlivých časech, takže „Tinderování“ v tomto čase vám zajistí největší publikum.

Poté jsem se začal zabývat délkou zprávy z hlediska slov i písmen a také počtem zpráv v jedné konverzaci. Zpočátku můžete níže vidět, že toho moc nevyskočilo… (zde je „úspěch“ červený)

Ale jakmile začnete pátrat, objeví se několik jasných trendů:

  • delší zprávy mají větší pravděpodobnost, že vygenerují úspěch (do určitého bodu)
  • Průměrný počet zpráv v konverzaci, ve které je nalezen „úspěch“, je 27, přičemž medián je 21.

Tato pozorování mě vedou k druhému a třetímu doporučení.

Druhé doporučení:

Věnujte více času konstrukci zpráv a proboha nepoužívejte textovou řeč… obecně platí, že delší slova jsou lepší slova. Jednou z námitek je, že data obsahují odkazy, které se počítají jako dlouhá slova, takže to může výsledky zkreslit.

Třetí doporučení:

Nebuďte příliš zbrklí, když se snažíte získat číslo. ‚Hej, ur fit, what’s ur number‘ je asi to nejhorší, co můžete říct z hlediska svých šancí. Stejně tak to nenechávejte příliš dlouho. Nejlepší je cokoli mezi dvacátou a třicátou zprávou.

Průměrný počet zpráv u úspěšných a neúspěšných konverzací

Po poměrně rozsáhlém zkoumání délky slova/zprávy/konverzace jsem se pak rozhodl podívat na sentiment. Nevěděl jsem však vůbec nic o tom, jak to udělat. Během kurzu jsme probrali něco málo ze zpracování přirozeného jazyka (pytel slov, jedno horké kódování, veškeré potřebné předzpracování atd. spolu s různými klasifikačními algoritmy), ale sentimentu jsme se nedotkli. Strávil jsem nějaký čas zkoumáním tohoto tématu a zjistil jsem, že nltk sentiment.vader SentimentIntensityAnalyzer by byl docela dobrý výkřik.

Funguje tak, že uživateli dává čtyři skóre na základě procenta vstupního textu, které bylo:

  • pozitivní
  • neutrální
  • negativní
  • kombinace tří

Naštěstí si poradí i s takovými věcmi, jako je kontext slov, slang a dokonce emotikony. Protože jsem zkoumal sentiment, neprováděl jsem žádné předzpracování (snižování písmen, odstraňování interpunkce atd.), abych neodstranil skrytý kontext.

Začal jsem tuto analýzu tak, že jsem do analyzátoru vkládal každou celou konverzaci, ale rychle jsem zjistil, že to moc nefunguje, protože sentiment konverzace měl po několika prvních zprávách rychle tendenci k hodnotě 1 a těžko se mi věří, že by konverzace o 100 zprávách byla po celou dobu 100% důvěryhodná.

Konverzace jsem pak rozdělil na jednotlivé zprávy a procházel je jednu po druhé, přičemž jsem zprůměroval skóre až na úroveň konverzace. To podle mého názoru přineslo mnohem realističtější výsledek:

Rozdělil jsem tato data podle „úspěchu“ nebo „neúspěchu“ a rychle jsem viděl, že se objevil vzorec:

Toto tee up moje čtvrté doporučení.

Čtvrté doporučení:

Buďte pozitivní, ale ne příliš pozitivní.

Průměrný sentiment pro úspěšný rozhovor byl 0,31 oproti 0,20 pro neúspěšný rozhovor. S tím, že být příliš pozitivní je téměř stejně špatné jako být příliš negativní.

Poslední uličkou, kterou jsem zkoumal, bylo, jaký vliv na úspěšnost konverzace mají různé detaily týkající se první zprávy. Prvotní úvahy o věcech, které by mohly mít vliv, byly:

  • délka
  • zda bylo použito jméno
  • sentiment
  • přítomnost emoji
  • explicitní obsah

Jak se dalo očekávat, čím delší je první zpráva, tím větší je pravděpodobnost, že tato konverzace bude pokračovat k „úspěchu“. Jako rozšíření můžete zdvojnásobit pravděpodobnost úspěchu tím, že nepoužijete pouze jednoslovný otvírák, např. neřeknete pouze „hej“ nebo „ahoj“ nebo „daayyuumm“ (reálný příklad).

O něco překvapivější je, že použití jména v první zprávě mělo velmi malý vliv na „poměr úspěšnosti“ (č. úspěchů/č. neúspěchů).

Sentiment první zprávy se ukázal být asi o 0,09 vyšší u „Úspěšných“ konverzací než u „Neúspěšných“ konverzací, což vlastně nebylo žádné překvapení… pokud někoho v první zprávě urazíte, je intuitivně méně pravděpodobné, že vám odpoví.

Analýza emotikonů byla úloha, nad kterou jsem příliš nepřemýšlel a která měla potenciál být ošemetná. Naštěstí existuje balíček ‚emoji‘, který automaticky zachytí přítomnost emoji v textu. Bohužel a k mému zděšení se zdá, že použití emoji v první zprávě zvyšuje pravděpodobnost získání ‚úspěchu‘.

Nyní k explicitnímu obsahu… Další, který měl potenciál být docela ošemetný, protože neexistují žádné vestavěné knihovny, které by zachytily použití expresivních výrazů atd. (pokud vím). Naštěstí jsem narazil na toto:

Můžu vás ujistit, že jsou v něm obsaženy naprosté trháky.

Poté jsem zkontroloval, které první zprávy obsahují slovo z tohoto seznamu, a bylo jich 40. Jak už to u podobných věcí bývá, našel jsem několik zajímavých okrajových případů:

Pro vaši informaci to byl chlapík, který mluvil o svých veslařských legínách…

Výsledky? Ukázalo se, že žádná z prvních zpráv, které obsahovaly explicitní obsah, nevedla k „úspěchu“

To mě dovedlo k pátému a poslednímu doporučení.

Páté doporučení:

Při odesílání první zprávy:

  • Buďte pozitivní
  • 8 slov je optimální
  • Použijte jeden nebo dva emotikony
  • Nebuďte explicitní

Takže abychom to shrnuli

  1. Používejte Tinder ve 21:00 hod. večer. neděli pro maximální sledovanost
  2. Věnuj čas konstrukci zpráv a nepoužívej textovou řeč
  3. Připrav se požádat o číslo nebo rande mezi 20. a 30. zprávou
  4. Buď pozitivní, ale ne příliš pozitivní
  5. Pošlete jako první zprávu něco jiného než „ahoj“, zaměřte se na přibližně 8 slov, možná použijte emoji a nebuďte explicitní

Několik úskalí dat:

  1. Můj soubor dat je velmi, velmi malý vzorek, což činí většinu poznatků nepoužitelnými
  2. Soubor dat je zaujatý vůči typu lidí, které znám, a také je zaujatý vůči mužům
  3. Soubor dat obsahuje pouze jednu stranu konverzace
  4. Statistiky zpráv a používání nemusí nutně souhlasit kvůli uživatelům, kteří aplikaci odinstalovávají a znovu instalují
  5. Žádná technika NLP nebude dokonalá kvůli sarkasmu/odlišnostem ve způsobu, jakým lidé mluví

Několik nápadů pro budoucí práci:

  • Shromáždit více dat
  • Zjistit statisticky významné výsledky oproti pozorování
  • Podívat se na analýzu konverzace podle témat – jaký typ zpráv tvoří dobrý a špatný sentiment
  • Zkusit se podívat na sarkasmus
  • Prozkoumat další aplikace (Bumble, Hinge atd.)
  • Nějaká klasifikační analýza, pokud by bylo zahrnuto více dat, protože jsme měli jen 70 a více úspěchů
  • Podívat se více na rozdělení podle pohlaví, pokud by bylo zahrnuto více dat

Několik zajímavých faktů z dat:

  • Nejvíce swipů od jedné osoby za jeden den: Ženy swipují doprava v průměru v 1 % případů, zatímco muži v ~50 % případů
  • Na jedno otevření aplikace ženy swipují 3x častěji než muži

Další čtení:

  • Byl zveřejněn článek s názvem „A First Look at User Activity on Tinder“, odkaz zde
  • Existuje rozhraní API aplikace Tinder, ale bohužel je určeno pouze pro lidi, kteří aplikaci používají, a neumožňuje přístup do nějaké databáze. Každopádně jeho využití k testování určitých hypotéz by mohlo být zajímavé.
  • Tinderbox je software, který se pomocí redukce dimenzionality dokáže naučit, kdo vás přitahuje. Má v sobě také zabudovaného chatbota, pokud chcete tento proces opravdu zautomatizovat…

Díky za přečtení, jakékoliv nápady pro další práci oceníme!

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.