Retentioneering: hur vi skrev open source-verktyg för produktanalys i Python och Pandas

Hej, Habr. Den här artikeln ägnas åt resultaten av fyra års utveckling av en uppsättning metoder och verktyg för att bearbeta användarrörelsebanor i en applikation eller webbplats. Författare till utvecklingen - Maxim Godzi, som leder teamet av produktskapare och även är författare till artikeln. Själva produkten hette Retentioneering; den har nu konverterats till ett bibliotek med öppen källkod och lagts ut på Github så att alla kan använda den. Allt detta kan vara av intresse för dem som är involverade i produkt- och marknadsföringsanalys, marknadsföring och produktutveckling. Förresten, på Habré en artikel har redan publicerats om ett av fallen med att arbeta med Retentioneering. Det nya materialet förklarar vad produkten kan göra och hur den kan användas.

Efter att ha läst artikeln kommer du själv att kunna skriva din egen Retentioneering; det kan vara vilken standardiserad metod som helst för att bearbeta användarbanor i applikationen och bortom, så att du i detalj kan se egenskaperna hos beteende och extrahera insikter från detta för tillväxten av affärsmått.

Vad är retentioneering och varför behövs det?

Vårt ursprungliga mål var att flytta Growth Hacking från världen av "digital häxkonst" till en värld av siffror, analyser och prognoser. Som en konsekvens reduceras produktanalys till ren matematik och programmering för de som föredrar siffror istället för fantastiska historier, och formler till buzzwords som ”rebranding”, ”repositioning” etc., som låter trevligt, men i praktiken hjälper lite.

För att lösa dessa problem behövde vi ett ramverk för analys genom grafer och banor, och samtidigt ett bibliotek som förenklar typiska analytikerrutiner, som ett sätt att beskriva vanliga produktanalysuppgifter som skulle vara begripliga för både människor och robotar. Biblioteket ger möjlighet att beskriva användarbeteende och koppla det till produktaffärsmått på ett så formellt och tydligt språk att det förenklar och automatiserar rutinuppgifterna för utvecklare och analytiker, och underlättar deras kommunikation med verksamheten.

Retentioneering är en metod och analytiska mjukvaruverktyg som kan anpassas och integreras i alla digitala (och inte bara) produkter.

Vi började arbeta med produkten 2015. Nu är detta en färdig, om än inte idealisk, uppsättning verktyg i Python och Pandas för att arbeta med data, maskininlärningsmodeller med sklearn-liknande api, verktyg för att tolka resultaten av maskininlärningsmodellerna eli5 och shap.

Det är helt klart till ett bekvämt bibliotek med öppen källkod i det öppna Github-förrådet - retentioneering-verktyg. Att använda biblioteket är inte svårt; nästan alla som älskar produktanalys, men inte har skrivit kod tidigare, kan tillämpa våra analysmetoder på sina data oberoende och utan betydande tidsinvesteringar.

Tja, en programmerare, en applikationsskapare eller en medlem av ett utvecklings- eller testteam som aldrig har gjort analyser tidigare kan börja leka med den här koden och se användningsmönstren för sin applikation utan hjälp utifrån.

Användarbana som en grundläggande del av analys och metoder för dess bearbetning

Användarbana är en sekvens av användartillstånd vid vissa tidpunkter. Dessutom kan händelser komma från olika datakällor, både online och offline. Händelser som händer användaren är en del av hans bana. Exempel:
• tryckte på knappen
• såg bilden
• tryck på skärmen
• fått ett e-postmeddelande
• rekommenderade produkten till en vän
• fyllt i formuläret
• tryckte på skärmen
• rullade
• gick till kassan
• beställde en burrito
• åt en burrito
• blev förgiftad av att äta en burrito
• gick in i caféet från bakentrén
• in från den främre ingången
• minimerade applikationen
• fick ett push-meddelande
• satt fast på skärmen längre än X
• betalat för beställningen
• köpte beställningen
• nekades lån

Om du tar en grupp användares bandata och studerar hur övergångar är uppbyggda kan du spåra exakt hur deras beteende i applikationen är uppbyggt. Det är bekvämt att göra detta genom en graf där tillstånd är noder och övergångar mellan tillstånd är kanter:

Retentioneering: hur vi skrev open source-verktyg för produktanalys i Python och Pandas

"Trajectory" är ett mycket bekvämt koncept - det innehåller detaljerad information om alla användaråtgärder, med möjligheten att lägga till ytterligare data till beskrivningen av dessa åtgärder. Detta gör det till ett universellt objekt. Om du har vackra och bekväma verktyg som låter dig arbeta med banor, kan du hitta likheter och segmentera dem.

Bansegmentering kan till en början verka mycket komplicerad. I en normal situation är detta fallet - du måste använda anslutningsmatrisjämförelse eller sekvensjustering. Vi lyckades hitta ett enklare sätt – att studera ett stort antal banor och segmentera dem genom klustring.

Som det visade sig är det möjligt att förvandla en bana till en punkt med hjälp av kontinuerliga representationer, till exempel, TF-IDF. Efter transformationen blir banan en punkt i rymden där den normaliserade förekomsten av olika händelser och övergångar mellan dem i banan ritas ut längs axlarna. Denna sak från ett enormt tusen eller fler dimensionellt utrymme (dimS=summa(händelsetyper)+summa(ngrams_2 typer)) kan projiceras på ett plan med hjälp av TSNE. TSNE är en transformation som reducerar rummets dimension till 2 axlar och, om möjligt, bevarar de relativa avstånden mellan punkter. Följaktligen blir det möjligt att på en platt karta, en figurativ projektionskarta över banor, studera hur punkterna för olika banor var placerade sinsemellan. Den analyserar hur nära eller olika de var varandra, om de bildade kluster eller var utspridda över kartan, etc.:

Retentioneering: hur vi skrev open source-verktyg för produktanalys i Python och Pandas

Retentioneering-analysverktyg ger möjligheten att omvandla komplexa data och banor till en vy som kan jämföras med varandra, och sedan kan resultatet av transformationen undersökas och tolkas.

På tal om standardmetoder för att bearbeta banor, menar vi tre huvudverktyg som vi har implementerat i Retentioneering - grafer, stegmatriser och banprojektionskartor.

Att arbeta med Google Analytics, Firebase och liknande analyssystem är ganska komplicerat och inte 100 % effektivt. Problemet är ett antal begränsningar för användaren, som ett resultat av vilka analytikerns arbete i sådana system beror på musklick och val av skivor. Retentioneering gör det möjligt att arbeta med användarbanor, och inte bara med trattar, som i Google Analytics, där detaljnivån ofta reduceras till en tratt, om än byggd för ett visst segment.

Retentionsarbete och fall

Som ett exempel på att använda det utvecklade verktyget kan vi nämna fallet med en stor nischtjänst i Ryssland. Detta företag har en Android-mobilapplikation som är populär bland kunder. Den årliga omsättningen från mobilapplikationen var cirka 7 miljoner rubel, säsongsvariationer varierade från 60-130 tusen. Samma företag har också en applikation för iOS, och den genomsnittliga räkningen för en användare av Apple-applikationen var högre än den genomsnittliga räkningen på en klient som använder Android-applikationen - 1080 rub. mot 1300 rub.

Företaget bestämde sig för att öka effektiviteten i Android-applikationen, för vilken det genomförde en grundlig analys. Flera dussin hypoteser genererades om att öka applikationens effektivitet. Efter att ha använt Retentionneering visade det sig att problemet låg i meddelandena som visades för nya användare. De fick information om varumärket, företagsförmåner och priser. Men, som det visade sig, var meddelandena tänkta att hjälpa användaren att lära sig hur man arbetar i applikationen.

Retentioneering: hur vi skrev open source-verktyg för produktanalys i Python och Pandas

Detta gjordes, vilket ledde till att applikationen blev mindre avinstallerad och ökningen av konverteringen till beställning var 23%. Till en början gavs 20 procent av den inkommande trafiken till testet, men efter några dagar, efter att ha analyserat de första resultaten och bedömt trenden, vände de proportionerna och lämnade tvärtom 20 procent till kontrollgruppen, och åttio procent placerades i testet. En vecka senare beslutades det att sekventiellt lägga till testning av ytterligare två hypoteser. På bara sju veckor ökade omsättningen från Android-applikationen med en och en halv gånger jämfört med tidigare nivå.

Hur arbetar man med Retentioneering?

De första stegen är ganska enkla - ladda ner biblioteket med kommandot pip install retentioneering. Själva arkivet innehåller färdiga exempel och fall av databehandling för vissa produktanalysuppgifter. Setet uppdateras ständigt tills det räcker för en första bekantskap. Vem som helst kan ta färdiga moduler och omedelbart tillämpa dem på sina uppgifter - detta gör att de omedelbart kan sätta upp processen för mer detaljerad analys och optimering av användarbanor så snabbt och effektivt som möjligt. Allt detta gör det möjligt att hitta applikationsanvändningsmönster genom tydlig kod och dela denna erfarenhet med kollegor.

Retentioneering är ett verktyg som är värt att använda under hela din ansökans livstid, och här är anledningen:

  • Retentioneering är effektivt för att spåra och kontinuerligt optimera användarbanor och förbättra verksamhetens prestanda. Således läggs ofta nya funktioner till e-handelsapplikationer, vars inverkan på produkten inte alltid kan förutsägas korrekt. I vissa fall uppstår kompatibilitetsproblem mellan nya och gamla funktioner - till exempel nya "kannibaliserar" befintliga. Och i denna situation är ständig analys av banor precis vad som behövs.
  • Situationen är liknande när man arbetar med reklamkanaler: nya trafikkällor och reklammaterial testas ständigt, det är nödvändigt att övervaka säsongsvariationer, trender och påverkan av andra händelser, vilket leder till uppkomsten av fler och fler nya klasser av problem. Detta kräver också ständig övervakning och tolkning av användarmekaniken.
  • Det finns ett antal faktorer som ständigt påverkar prestandan för en applikation. Till exempel, nya utgåvor från utvecklare: när de stänger ett aktuellt problem, returnerar de omedvetet det gamla eller skapar ett helt nytt. Med tiden växer antalet nya utgåvor, och processen med att spåra fel måste automatiseras, bland annat genom att analysera användarbanor.

Sammantaget är Retentioneering ett effektivt verktyg. Men det finns ingen gräns för perfektion - det kan och bör förbättras, utvecklas och nya coola produkter byggas utifrån dess bas. Ju mer aktiv projektets community är, desto fler gafflar kommer det att finnas, och nya intressanta alternativ för att använda det kommer att dyka upp.

Mer information om Retentioneering-verktyg:

Källa: will.com

Lägg en kommentar