Moji přátelé mi dali svá data z Tinderu…
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:
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.
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
- Používejte Tinder ve 21:00 hod. večer. neděli pro maximální sledovanost
- Věnuj čas konstrukci zpráv a nepoužívej textovou řeč
- Připrav se požádat o číslo nebo rande mezi 20. a 30. zprávou
- Buď pozitivní, ale ne příliš pozitivní
- 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:
- Můj soubor dat je velmi, velmi malý vzorek, což činí většinu poznatků nepoužitelnými
- Soubor dat je zaujatý vůči typu lidí, které znám, a také je zaujatý vůči mužům
- Soubor dat obsahuje pouze jednu stranu konverzace
- Statistiky zpráv a používání nemusí nutně souhlasit kvůli uživatelům, kteří aplikaci odinstalovávají a znovu instalují
- Žá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!