Retentioneering: hvordan vi skrev åpen kildekode-verktøy for produktanalyse i Python og Pandas

Hei, Habr. Denne artikkelen er viet resultatene av fire års utvikling av et sett med metoder og verktøy for å behandle brukerbevegelsesbaner i en applikasjon eller et nettsted. Forfatter av utviklingen - Maxim Godzi, som leder teamet med produktskapere og også er forfatteren av artikkelen. Selve produktet ble kalt Retentioneering; det har nå blitt konvertert til et åpen kildekode-bibliotek og lagt ut på Github slik at alle kan bruke det. Alt dette kan være av interesse for de som er involvert i produkt- og markedsanalyse, promotering og produktutvikling. Forresten, på Habré Det er allerede publisert en artikkel om et av tilfellene med arbeid med Retentioneering. Det nye materialet forklarer hva produktet kan og hvordan det kan brukes.

Etter å ha lest artikkelen vil du selv kunne skrive din egen Retentioneering; det kan være en hvilken som helst standardisert metode for å behandle brukerbaner i applikasjonen og utover, slik at du kan se i detalj egenskapene til atferd og trekke ut innsikt fra dette for veksten av forretningsmålinger.

Hva er Retentioneering og hvorfor er det nødvendig?

Vårt første mål var å flytte Growth Hacking fra verden av "digital hekseri" til verden av tall, analyser og prognoser. Som en konsekvens reduseres produktanalyse til ren matematikk og programmering for de som foretrekker tall i stedet for fantastiske historier, og formler til buzzwords som «rebranding», «reposisjonering» osv., som høres fint ut, men som i praksis hjelper lite.

For å løse disse problemene trengte vi et rammeverk for analyser gjennom grafer og baner, og samtidig et bibliotek som forenkler typiske analytikerutiner, som en måte å beskrive vanlige produktanalyseoppgaver som ville være forståelige for både mennesker og roboter. Biblioteket gir muligheten til å beskrive brukeratferd og knytte den til produktforretningsmålinger på et så formelt og tydelig språk at det forenkler og automatiserer rutineoppgavene til utviklere og analytikere, og letter deres kommunikasjon med virksomheten.

Retentioneering er en metode og analytiske programvareverktøy som kan tilpasses og integreres i ethvert digitalt (og ikke bare) produkt.

Vi begynte å jobbe med produktet i 2015. Nå er dette et ferdig, men ennå ikke ideelt sett med verktøy i Python og Pandas for å jobbe med data, maskinlæringsmodeller med sklearn-lignende api, verktøy for å tolke resultatene av maskinlæringsmodeller eli5 og shap.

Det hele er pakket opp til et praktisk åpen kildekode-bibliotek i det åpne Github-depotet - retentioneering-verktøy. Å bruke biblioteket er ikke vanskelig; nesten alle som elsker produktanalyse, men ikke har skrevet kode før, kan bruke våre analysemetoder på dataene sine uavhengig og uten betydelig tidsinvestering.

Vel, en programmerer, en applikasjonsskaper eller et medlem av et utviklings- eller testteam som aldri har gjort analyser før, kan begynne å leke med denne koden og se bruksmønstrene til applikasjonen deres uten hjelp utenfra.

Brukerbane som et grunnleggende element i analyse og metoder for bearbeiding

Brukerbane er en sekvens av brukertilstander på bestemte tidspunkter. Dessuten kan hendelser komme fra forskjellige datakilder, både online og offline. Hendelser som skjer med brukeren er en del av banen hans. Eksempler:
• trykket på knappen
• så bildet
• trykk på skjermen
• mottok en e-post
• anbefalt produktet til en venn
• fylt ut skjemaet
• trykket på skjermen
• rullet
• gikk til kassen
• bestilte en burrito
• spiste en burrito
• ble forgiftet av å spise en burrito
• gikk inn i kafeen fra bakinngangen
• inn fra hovedinngangen
• minimerte applikasjonen
• mottok en push-varsling
• satt fast på skjermen lenger enn X
• betalt for bestillingen
• kjøpte bestillingen
• ble nektet lån

Hvis du tar banedataene til en gruppe brukere og studerer hvordan overganger er strukturert, kan du spore nøyaktig hvordan deres oppførsel i applikasjonen er strukturert. Det er praktisk å gjøre dette gjennom en graf der tilstander er noder, og overganger mellom tilstander er kanter:

Retentioneering: hvordan vi skrev åpen kildekode-verktøy for produktanalyse i Python og Pandas

"Trajectory" er et veldig praktisk konsept - det inneholder detaljert informasjon om alle brukerhandlinger, med muligheten til å legge til tilleggsdata til beskrivelsen av disse handlingene. Dette gjør det til et universelt objekt. Hvis du har vakre og praktiske verktøy som lar deg jobbe med baner, kan du finne likheter og segmentere dem.

Banesegmentering kan virke veldig komplisert i begynnelsen. I en normal situasjon er dette tilfellet - du må bruke tilkoblingsmatrisesammenligning eller sekvensjustering. Vi klarte å finne en enklere måte - å studere et stort antall baner og segmentere dem gjennom clustering.

Som det viste seg, er det mulig å gjøre en bane til et punkt ved å bruke kontinuerlige representasjoner, for eksempel TF-IDF. Etter transformasjonen blir banen et punkt i rommet hvor den normaliserte forekomsten av ulike hendelser og overganger mellom dem i banen plottes langs aksene. Denne tingen fra et enormt tusen eller mer dimensjonalt rom (dimS=sum(hendelsestyper)+sum(ngrams_2 typer)) kan projiseres på et plan ved å bruke TSNE. TSNE er en transformasjon som reduserer rommets dimensjon til 2 akser og om mulig bevarer de relative avstandene mellom punktene. Følgelig blir det mulig på et flatt kart, et figurativt projeksjonskart av baner, å studere hvordan punktene til forskjellige baner var lokalisert seg imellom. Den analyserer hvor nære eller forskjellige de var hverandre, om de dannet klynger eller var spredt over kartet osv.:

Retentioneering: hvordan vi skrev åpen kildekode-verktøy for produktanalyse i Python og Pandas

Retentioneering-analyseverktøy gir muligheten til å gjøre komplekse data og baner til et syn som kan sammenlignes med hverandre, og deretter kan resultatet av transformasjonen undersøkes og tolkes.

Når vi snakker om standardmetoder for prosessering av baner, mener vi tre hovedverktøy som vi har implementert i Retentioneering - grafer, trinnmatriser og baneprojeksjonskart.

Å jobbe med Google Analytics, Firebase og lignende analysesystemer er ganske komplekst og ikke 100 % effektivt. Problemet er en rekke begrensninger for brukeren, som et resultat av at analytikerens arbeid i slike systemer avhenger av museklikk og valg av skiver. Retentioneering gjør det mulig å jobbe med brukerbaner, og ikke bare med trakter, som i Google Analytics, hvor detaljnivået ofte reduseres til en trakt, om enn bygget for et bestemt segment.

Retentioneering og saker

Som et eksempel på bruk av det utviklede verktøyet kan vi nevne tilfellet med en stor nisjetjeneste i Russland. Dette selskapet har en Android-mobilapplikasjon som er populær blant kunder. Den årlige omsetningen fra mobilapplikasjonen var omtrent 7 millioner rubler, sesongsvingninger varierte fra 60-130 1080. Det samme selskapet har også en applikasjon for iOS, og gjennomsnittsregningen til en bruker av Apple-applikasjonen var høyere enn gjennomsnittsregningen på en klient som bruker Android-applikasjonen - 1300 rub. mot XNUMX gni.

Selskapet bestemte seg for å øke effektiviteten til Android-applikasjonen, som det gjennomførte en grundig analyse for. Flere dusin hypoteser ble generert om å øke effektiviteten til applikasjonen. Etter å ha brukt Retentionneering viste det seg at problemet lå i meldingene som ble vist til nye brukere. De fikk informasjon om merke, firmafordeler og priser. Men som det viste seg, var meldingene ment å hjelpe brukeren med å lære å jobbe i applikasjonen.

Retentioneering: hvordan vi skrev åpen kildekode-verktøy for produktanalyse i Python og Pandas

Dette ble gjort, som et resultat av at applikasjonen ble mindre avinstallert, og økningen i konvertering til ordre var 23%. Først ble 20 prosent av den innkommende trafikken gitt til testen, men etter noen dager, etter å ha analysert de første resultatene og vurdert trenden, snudde de proporsjonene og la tvert imot 20 prosent til kontrollgruppen, og åtti prosent ble plassert i testen. En uke senere ble det besluttet å sekvensielt legge til testing av ytterligere to hypoteser. På bare syv uker økte omsetningen fra Android-applikasjonen halvannen ganger sammenlignet med forrige nivå.

Hvordan jobbe med Retentioneering?

De første trinnene er ganske enkle - last ned biblioteket med kommandoen pip install retentioneering. Selve depotet inneholder ferdige eksempler og tilfeller av databehandling for enkelte produktanalyseoppgaver. Settet oppdateres kontinuerlig til det er nok for et første bekjentskap. Alle kan ta ferdige moduler og umiddelbart bruke dem på oppgavene sine - dette lar dem umiddelbart sette opp prosessen med mer detaljert analyse og optimalisering av brukerbaner så raskt og effektivt som mulig. Alt dette gjør det mulig å finne applikasjonsbruksmønstre gjennom tydelig kode og dele denne opplevelsen med kolleger.

Retentioneering er et verktøy verdt å bruke gjennom hele programmets levetid, og her er grunnen:

  • Retentioneering er effektivt for å spore og kontinuerlig optimalisere brukerbaner og forbedre virksomhetens ytelse. Derfor legges det ofte til nye funksjoner i e-handelsapplikasjoner, hvis innvirkning på produktet ikke alltid kan forutsies riktig. I noen tilfeller oppstår kompatibilitetsproblemer mellom nye og gamle funksjoner - for eksempel nye "kannibaliserer" eksisterende. Og i denne situasjonen er konstant analyse av baner nettopp det som trengs.
  • Situasjonen er lik når du arbeider med reklamekanaler: nye trafikkkilder og reklamereklamer testes stadig, det er nødvendig å overvåke sesongvariasjoner, trender og påvirkningen fra andre hendelser, noe som fører til fremveksten av flere og flere nye klasser av problemer. Dette krever også konstant overvåking og tolkning av brukermekanikk.
  • Det er en rekke faktorer som hele tiden påvirker ytelsen til en applikasjon. For eksempel nye utgivelser fra utviklere: lukker et nåværende problem, returnerer de uforvarende det gamle eller oppretter et helt nytt. Over tid vokser antallet nye utgivelser, og prosessen med å spore feil må automatiseres, blant annet ved å analysere brukerbaner.

Totalt sett er Retentioneering et effektivt verktøy. Men det er ingen grense for perfeksjon - det kan og bør forbedres, utvikles og nye kule produkter bygges på grunnlaget. Jo mer aktivt prosjektets fellesskap er, jo flere gafler vil det være, og nye interessante alternativer for å bruke det vil dukke opp.

Mer informasjon om Retentioneering-verktøy:

Kilde: www.habr.com

Legg til en kommentar