Retentioneering: hur vi skapade open-source verktyg för produktanalys med Python och Pandas

Hej, Habr. Denna artikel handlar om slutsatserna frÄn fyra Ärs utveckling av en uppsÀttning metoder och verktyg för att behandla anvÀndarbewegelsers banor i en app eller pÄ en webbplats. Utvecklaren Àr Maksim Godzi, som stÄr i spetsen för produktutvecklingsteamet och Àr Àven artikelförfattaren. Produkten har fÄtt namnet Retentioneering, och den har nu omvandlats till ett open-source bibliotek som finns pÄ Github, sÄ att alla intresserade kan anvÀnda det. Detta kan vara intressant för dem som arbetar med produkt- och marknadsanalys, produktmarknadsföring och produktutveckling. Förresten, en artikel om ett av fallen med Retentioneering har redan publicerats pÄ Habr. I det nya materialet diskuteras vad produkten klarar av och hur den kan anvÀndas.Genom att lÀsa artikeln kan du sjÀlv skapa din egen Retentioneering; det kan bli vilken standardiserad metod som helst för behandling av anvÀndarbewegelsers banor bÄde inom och utanför appen, vilket gör det möjligt att se detaljerade beteenden och utvinna insikter för att öka affÀrsmetrik.

Vad Àr Retentioneering och varför behövs det?

VĂ„rt ursprungliga mĂ„l var att översĂ€tta Growth Hacking frĂ„n vĂ€rldar av "digitalt skrock" till vĂ€rlden av siffror, analyser och prognoser. Som ett resultat — att reducera produktanalysen till ren matematik och programmering för dem som föredrar siffror framför fantasifulla berĂ€ttelser, och formler framför snobbiga termer som "rebranding", "repositionering" osv., som lĂ„ter snyggt men till liten hjĂ€lp i praktiken.

För att lösa dessa uppgifter behövdes ett ramverk för analyser genom grafer och banor, och samtidigt ett bibliotek som förenklar analytikers typiska rutiner, som ett sÀtt att beskriva vanliga uppgifter inom produktanalys, vilket skulle vara begripligt bÄde för mÀnniskor och robotar. Biblioteket erbjuder möjligheten att beskriva anvÀndarbeteenden och koppla dem till produktens affÀrsmetrik pÄ ett sÄ formellt och klart sprÄk att det förenklar och automatiserar utvecklarnas och analytikernas rutinuppgifter och underlÀttar deras kommunikation med affÀrssidan.

Retentioneering — en metod och analytiska programvaruverktyg som kan anpassas och integreras i vilken digital (och icke-digital) produkt som helst.

Retentioneering — en metod och analytiska programvaruverktyg som kan anpassas och integreras i vilken digital (och icke-digital) produkt som helst.

Vi började arbeta med produkten 2015. Nu Àr det en fÀrdig, om Àn inte perfekt, uppsÀttning verktyg pÄ Python och Pandas för att arbeta med data, maskininlÀrningsmodeller med ett sklearn-liknande API, samt verktyg för att tolka resultaten frÄn maskininlÀrningsmodeller, eli5 och shap.

Allt detta Ă€r inslaget i ett anvĂ€ndarvĂ€nligt open-source-bibliotek i det öppna GitHub-repositoriet — retentioneering-tools.Att anvĂ€nda biblioteket Ă€r enkelt, nĂ€stan vilken person som helst som gillar produktanalys, men som aldrig har skrivit kod tidigare, kan tillĂ€mpa vĂ„ra analytiska metoder pĂ„ sina egna data sjĂ€lvstĂ€ndigt och utan betydande tidsĂ„tgĂ„ng.

Och en programmerare, skapare av applikationen eller medlem av utvecklings- eller testteamet, som aldrig tidigare har sysslat med analytics, kan börja leka med denna kod och se anvÀndningsmönstren för sin applikation utan extern hjÀlp.

AnvÀndarens vÀg som en grundlÀggande analyskomponent och metoder för dess bearbetning.

AnvÀndarens vÀg Àr en sekvens av anvÀndarens tillstÄnd vid bestÀmda tidpunkter. Och hÀndelser kan komma frÄn olika datakÀllor, bÄde online och offline. HÀndelser som har intrÀffat för anvÀndaren Àr en del av hans vÀg. Exempel:
‱ tryckte pĂ„ en knapp
‱ sĂ„g en bild
‱ kom till en skĂ€rm
‱ fick ett mail
‱ rekommenderade produkten till en vĂ€n
‱ fyllde i ett formulĂ€r
‱ tryckte pĂ„ skĂ€rmen
‱ scrollade
‱ gick till kassan
‱ bestĂ€llde en burrito
‱ Ă„t en burrito
‱ blev matförgiftad av den Ă€tna burriton
‱ gick in i kafĂ©et frĂ„n en bakdörr
‱ gick in genom huvudingĂ„ngen
‱ stĂ€ngde applikationen
‱ fick en push-notis
‱ stirrade pĂ„ skĂ€rmen lĂ€ngre Ă€n tid X
‱ betalade bestĂ€llningen
‱ hĂ€mtade bestĂ€llningen
‱ fick avslag pĂ„ lĂ„n

Om man tar data frÄn vÀgarna för en grupp anvÀndare och studerar hur övergÄngarna Àr uppbyggda, kan man se hur deras beteenden i applikationen formas. Detta Àr lÀtt att göra med en graf dÀr tillstÄnd Àr noder och övergÄngar mellan tillstÄnd Àr kanter:

Retentioneering: hur vi skapade open-source verktyg för produktanalys med Python och Pandas

"Trajektori" Ă€r ett mycket praktiskt begrepp – det innehĂ„ller detaljerad information om alla anvĂ€ndarhandlingar, med möjlighet att lĂ€gga till vilka ytterligare data som helst i beskrivningen av dessa handlingar. Detta gör det till ett universellt objekt. Om du har vackra och anvĂ€ndarvĂ€nliga verktyg som gör det möjligt att arbeta med trajektorier, kan du hitta likheter och segmentera dem.

Segmentering av trajektorier kan till en början verka mycket komplicerat. I vanliga fall Ă€r det sĂ„ – man mĂ„ste anvĂ€nda matrisjĂ€mförelser eller sekvensjusteringar. Vi har lyckats hitta ett enklare sĂ€tt – att studera ett stort antal trajektorier och segmentera dem genom klusteranalys.

Det visade sig att man kan förvandla en trajektori till en punkt med hjĂ€lp av kontinuerliga representationer, till exempel, TF-IDF. Efter omvandlingen blir trajektorin en punkt i rummet, dĂ€r de normerade frekvenserna av olika hĂ€ndelser och övergĂ„ngar mellan dem avlĂ€ggs lĂ€ngs axlarna. Denna sak frĂ„n det enorma rummet med över tusen dimensioner (dimS=sum(event types)+sum(ngrams_2 types)) kan projiceras pĂ„ en plan yta med hjĂ€lp av TSNE. TSNE – en transformation som reducerar dimensionen av rummet till 2 axlar och sĂ„ lĂ„ngt som möjligt bevarar relativa avstĂ„nd mellan punkterna. DĂ€rmed blir det möjligt att studera hur punkterna frĂ„n olika trajektorier lĂ„g i förhĂ„llande till varandra pĂ„ den plan karta som bildas av trajektorier. Man analyserar hur nĂ€ra eller olika de var frĂ„n varandra, om de bildade kluster eller spriddes pĂ„ kartan, etc.:

Retentioneering: hur vi skapade open-source verktyg för produktanalys med Python och Pandas

Analysverktygen Retentioneering möjliggör att omvandla en mÀngd komplexa data och trajektorier till en representation som kan jÀmföras med varandra, och sedan utforska och tolka resultatet av omvandlingen.

NĂ€r vi talar om standardmetoder för behandling av trajektorier, avses tre grundlĂ€ggande verktyg som vi har implementerat i Retentioneering – grafer, step-matriser och projiceringskartor av trajektorier.

Att arbeta med Google Analytics, Firebase och liknande analysverktyg Àr ganska komplicerat och inte 100% effektivt. Problemet ligger i en rad begrÀnsningar för anvÀndaren, vilket gör att analytikerns arbete begrÀnsas till musklick och val av segment. Retentioneering erbjuder möjligheten att arbeta med anvÀndartillvÀgagÄngssÀtt, snarare Àn bara tratten, som i Google Analytics, dÀr detaljnivÄn ofta reduceras till tratten, Àven om den Àr byggd för ett specifikt segment.

Retentioneering och fallstudier

Ett exempel pÄ hur det utvecklade verktyget anvÀnds Àr fallet med en stor nischtjÀnst i Ryssland. Företaget har en mobilapplikation för Android som Àr populÀr bland kunder. Den Ärliga omsÀttningen frÄn mobilapplikationen var cirka 7 miljoner rubel, med sÀsongsfluktuationer mellan 60 000 och 130 000 rubel. Företaget har ocksÄ en iOS-applikation, dÀr genomsnittligt köpbelopp för anvÀndare av 'Àpple'-applikationen var högre Àn för klienter som anvÀnde Android-applikationen - 1080 rubel mot 1300 rubel.

Företaget beslutade att öka effektiviteten för Android-applikationen, sÄ de genomförde en noggrann analys av den. Flera dussin hypoteser om att öka applikationens resultat formulerades. Efter att ha anvÀnt Retentioneering visade det sig att problemet lÄg i meddelandena som visades för nya anvÀndare. De fick information om varumÀrket, företagets fördelar och priser. Men det visade sig att meddelandena skulle hjÀlpa anvÀndaren att lÀra sig hur man arbetar i applikationen.

Retentioneering: hur vi skapade open-source verktyg för produktanalys med Python och Pandas

Detta utfördes, vilket ledde till att applikationen blev mindre borttagen, och tillvÀxten av konverteringar till bestÀllningar uppgick till 23%. Inledningsvis avsattes 20 procent av den inkommande trafiken för testet, men efter nÄgra dagar, nÀr de analyserade de första resultaten och bedömde trenden, Àndrade de förhÄllandena spegelvÀnt och lÀmnade istÀllet 20 procent för kontrollgruppen, medan Ättio procent gick till testet. Ytterligare en vecka senare fattades beslutet att successivt lÀgga till testning av ytterligare tvÄ hypoteser. Totalt, efter sju veckor, ökade omsÀttningen frÄn Android-applikationen med en och en halv gÄng jÀmfört med den tidigare nivÄn.

Hur arbetar man med Retentioneering?

De första stegen Ă€r ganska enkla — ladda ner biblioteket med kommandot pip install retentioneering. I sjĂ€lva repository finns fĂ€rdiga exempel och fall för databehandling för vissa uppgifter inom produktanalys. Samlingen utökas stĂ€ndigt, men den Ă€r tillrĂ€cklig för en första introduktion. Var och en kan ta fĂ€rdiga moduler och direkt tillĂ€mpa dem pĂ„ sina uppgifter — detta gör det möjligt att snabbt och effektivt stĂ€lla in en mer detaljerad analys och optimering av anvĂ€ndarens resor. Allt detta möjliggör att upptĂ€cka mönster i anvĂ€ndningen av applikationen genom tydlig kod och överföra denna erfarenhet till kollegor.

Retentioneering Àr ett verktyg som bör anvÀndas under hela applikationens livscykel, och hÀr Àr varför:

  • Retentioneering Ă€r effektivt för att spĂ„ra och kontinuerligt optimera anvĂ€ndarresor samt förbĂ€ttra affĂ€rsresultat. SĂ„ i ecommerce-applikationer lĂ€ggs ofta nya funktioner till, vars pĂ„verkan pĂ„ produkten inte alltid kan förutsĂ€gas korrekt. I vissa fall uppstĂ„r kompatibilitetsproblem mellan nya och gamla funktioner — till exempel kan nya "kanibalera" befintliga. Och i denna situation behövs stĂ€ndig analys av resorna.
  • En liknande situation gĂ€ller för arbete med annonseringskanaler: nya trafik- och reklamkĂ€llor testas stĂ€ndigt, och det Ă€r nödvĂ€ndigt att spĂ„ra sĂ€songsmĂ€ssiga trender och pĂ„verkan av andra hĂ€ndelser, vilket leder till nya klasser av problem. HĂ€r krĂ€vs ocksĂ„ stĂ€ndig övervakning och tolkning av anvĂ€ndarmekanismer.
  • Det finns ett helt antal faktorer som stĂ€ndigt pĂ„verkar applikationens drift. Till exempel, nya versioner frĂ„n utvecklarna: genom att lösa aktuella problem Ă„terinför de oavsiktligt gamla eller skapar helt nya. Med tiden ökar antalet nya versioner, och processen för att spĂ„ra buggar mĂ„ste automatiseras — Ă€ven genom analys av anvĂ€ndarresor.

Generellt Ă€r Retentioneering ett effektivt verktyg. Men perfektion har inga grĂ€nser — det kan och bör förbĂ€ttras, utvecklas och utgöra grunden för nya fantastiska produkter. Ju mer aktivt projektets gemenskap Ă€r, desto fler fork kommer det att finnas och nya intressanta anvĂ€ndningsvarianter kommer att dyka upp.

Ytterligare information om Retentioneering-verktygen:

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster