Retentioneering: hvordan vi skrev open source-produktanalyseværktøjer i Python og Pandas

Hej Habr. Denne artikel er afsat til resultaterne af en fireårig udvikling af et sæt metoder og værktøjer til behandling af brugerbevægelsesforløb i en applikation eller på et websted. Forfatter til udviklingen - Maxim Godzi, som står i spidsen for teamet af produktskabere, han er også forfatter til artiklen. Selve produktet hed Retentioneering, nu er det blevet konverteret til et open source-bibliotek og hostet på Github, så alle kan bruge det. Alt dette kan være af interesse for dem, der er involveret i produkt- og marketinganalyse, produktpromovering og -udvikling. Forresten på Habré Der er allerede publiceret en artikel om en af ​​sagerne om at arbejde med Retentioneering. Det nye materiale forklarer, hvad produktet kan, og hvordan det kan bruges.

Efter at have læst artiklen, vil du være i stand til at skrive din egen Retentioneering, det kan være en hvilken som helst standardiseret metode til at behandle brugerbaner i applikationen og videre, så du i detaljer kan se funktionerne i adfærd og udtrække indsigt fra dette for vækst af forretningsmålinger.

Hvad er Retentioneering, og hvorfor er det nødvendigt?

I første omgang var vores mål at flytte Growth Hacking fra verden af ​​"digital hekseri" til en verden af ​​tal, analyser og prognoser. Som et resultat er produktanalyse reduceret til ren matematik og programmering for dem, der foretrækker tal i stedet for fantastiske historier, og formler til smarte ord som "rebranding", "repositionering" osv., som lyder smukt, men i praksis gør de det ikke hjælpe meget.

For at løse disse problemer havde vi brug for en ramme for analyse gennem grafer og baner, og samtidig et bibliotek, der forenkler typiske analytikerrutiner, som en måde at beskrive almindelige produktanalyseopgaver, der ville være forståelige for både mennesker og robotter. Biblioteket giver mulighed for at beskrive brugeradfærd og koble den til produktforretningsmålinger i et så formelt og klart sprog for at forenkle og automatisere rutineopgaver for udviklere og analytikere og lette deres kommunikation med virksomheden.

Retentioneering er en metode og analytiske softwareværktøjer, der kan tilpasses og integreres i ethvert digitalt (og ikke kun) produkt.

Vi begyndte at arbejde på produktet i 2015. Nu er det et færdigt, men endnu ikke ideelt sæt værktøjer til at arbejde med data i Python og Pandas, maskinlæringsmodeller med sklearn-lignende api, værktøjer til fortolkning af resultaterne af eli5 og shap machine learning-modeller.

Det hele er pakket ind ind i et praktisk open source-bibliotek i det åbne Github-lager - retentioneering-værktøjer. At bruge biblioteket er ikke svært, næsten alle, der elsker produktanalyse, men ikke har skrevet kode før, kan anvende vores analysemetoder på deres data på egen hånd og uden at bruge en masse tid.

Nå, en programmør, applikationsskaber eller et medlem af et udviklings- eller testteam, der aldrig har lavet analyser før, kan begynde at lege med denne kode og se mønstre i at bruge deres applikation uden hjælp udefra.

Brugerbane som et grundlæggende element i analyse og metoder til dens behandling

Brugerbane er en sekvens af brugertilstande på bestemte tidspunkter. Desuden kan begivenheder være fra forskellige datakilder, både online og offline. De hændelser, der skete for brugeren, er en del af hans bane. Eksempler:
• trykkede på knappen
• så et billede
• tryk på skærmen
• modtaget en e-mail
• anbefalet produktet til en ven
• udfyldt formularen
• trykkede på skærmen
• rullede
• henvendte sig til kassen
• bestilte en burrito
• spiste en burrito
• forgiftet af en burrito han spiste
• kom ind i cafeen fra bagindgangen
• kommer ind fra hovedindgangen
• minimeret applikationen
• modtog en push-meddelelse
• dum i skærmen i længere tid Х
• betalt for ordren
• indløste ordren
• fik afslag på et lån

Hvis du tager en gruppe brugeres banedata og studerer, hvordan overgangene fungerer, kan du se præcis, hvordan deres adfærd i applikationen er bygget op. Det er praktisk at gøre dette gennem en graf, hvor tilstandene er knudepunkter, og overgangene mellem tilstande er kanter:

Retentioneering: hvordan vi skrev open source-produktanalyseværktøjer i Python og Pandas

"Trajectory" er et meget praktisk koncept - det indeholder detaljerede oplysninger om alle brugerhandlinger, med mulighed for at tilføje yderligere data til beskrivelsen af ​​disse handlinger. Dette gør det til et generisk objekt. Hvis du har smukke og praktiske værktøjer, der giver dig mulighed for at arbejde med baner, så kan du finde ligheder og segmentere dem.

Banesegmentering kan virke meget kompliceret i starten. I en normal situation er dette sandt - du skal bruge en sammenligning af forbindelsesmatricer eller justering af sekvenser. Det lykkedes os at finde en nemmere måde - at studere et stort antal baner og segmentere dem gennem klyngedannelse.

Som det viste sig, er det muligt at omdanne en bane til et punkt ved hjælp af kontinuerlige repræsentationer, f.eks. TF-IDF. Efter transformationen bliver banen et punkt i rummet, hvor den normaliserede forekomst i banen af ​​forskellige hændelser og overgange mellem dem plottes langs akserne. Denne ting fra et enormt tusind- og mere-dimensionelt rum (dimS=sum(hændelsestyper)+sum(ngrams_2 typer)), kan projiceres på et plan ved hjælp af TSNE. TSNE - transformation, reducerer rummets dimension til 2 akser og bevarer om muligt de relative afstande mellem punkter. Derfor bliver det muligt på et fladt kort, et figurativt projektionskort over baner, at studere, hvordan punkterne i forskellige baner var placeret indbyrdes. Det analyseres, hvor tæt eller forskellige de var på hinanden, om de dannede klynger eller spredt ud over kortet osv.:

Retentioneering: hvordan vi skrev open source-produktanalyseværktøjer i Python og Pandas

Retentioneering analytiske værktøjer giver mulighed for at omdanne komplekse data og baner til en repræsentation, der kan sammenlignes med hinanden, og derefter udforske og fortolke resultatet af transformationen.

Når vi taler om standard banebehandlingsmetoder, mener vi tre hovedværktøjer, som vi har implementeret i Retentioneering - grafer, trinmatricer og baneprojektionskort.

At arbejde med Google Analytics, Firebase og lignende analysesystemer er ret kompliceret og ikke 100 % effektivt. Problemet er en række begrænsninger for brugeren, som et resultat af, at analytikerens arbejde i sådanne systemer hviler på museklik og udvælgelse af skiver. Retentioneering gør det muligt at arbejde med brugerbaner, og ikke kun med tragte, som i Google Analytics, hvor detaljeringsgraden ofte er reduceret til en tragt, omend bygget til et bestemt segment.

Fastholdelse og casestudier

Som et eksempel på brug af det udviklede værktøj kan vi nævne tilfældet med en stor nichetjeneste i Rusland. Dette firma har en Android-mobilapp, der er populær blandt kunder. Den årlige omsætning fra mobilapplikationen var omkring 7 millioner rubler, sæsonudsving var inden for 60-130 tusind. Det samme firma har også en applikation til iOS, og den gennemsnitlige kontrol af brugeren af ​​"æble"-applikationen var højere end gennemsnittet tjek af klienten ved hjælp af Android-applikationen - 1080 rub. mod 1300 rubler.

Virksomheden besluttede at øge effektiviteten af ​​Android-applikationen, som den foretog en grundig analyse for. Flere dusin hypoteser blev dannet for at øge effektiviteten af ​​applikationen. Efter at have brugt Retentionneering viste det sig, at problemet lå i de beskeder, der blev vist til nye brugere. De modtog information om mærket, firmafordele og priser. Men som det viste sig, skulle beskederne hjælpe brugeren med at lære at arbejde i applikationen.

Retentioneering: hvordan vi skrev open source-produktanalyseværktøjer i Python og Pandas

Dette blev gjort, som et resultat af, at ansøgningen begyndte at blive slettet mindre, og stigningen i konvertering til ordre var 23%. Først blev 20 procent af den indgående trafik givet til testen, men få dage senere, efter at have analyseret de første resultater og vurderet tendensen, vendte de proportionerne og lod tværtimod 20 procent tilbage til kontrolgruppen, og placerede firs procent i testen. En uge senere blev det besluttet at sekventielt tilføje test af yderligere to hypoteser. På kun syv uger steg omsætningen fra Android-applikationen halvanden gange i forhold til det tidligere niveau.

Hvordan arbejder man med Retentioneering?

De første trin er ret enkle - vi indlæser biblioteket med kommandoen pip install retentioneering. Selve lageret indeholder færdige eksempler og databehandlingssager til nogle produktanalyseopgaver. Sættet opdateres løbende, indtil det rækker til det første bekendtskab. Alle kan tage færdige moduler og straks søge deres opgaver - dette giver dig mulighed for straks at sætte processen med mere detaljeret analyse og optimering af brugerbaner op så hurtigt og effektivt som muligt. Alt dette gør det muligt at finde applikationsbrugsmønstre gennem forståelig kode og dele denne oplevelse med kolleger.

Retentioneering er et værktøj, der er værd at bruge gennem hele en apps levetid, og her er grunden:

  • Retentioneering er effektivt til at spore og løbende optimere brugerforløb og forbedre virksomhedens ydeevne. Så nye funktioner tilføjes ofte til e-handelsapplikationer, hvis indvirkning på produktet ikke altid kan forudsiges korrekt. I nogle tilfælde er der kompatibilitetsproblemer mellem nye og gamle funktioner - for eksempel nye "kannibaliserer" eksisterende. Og i denne situation er der behov for en konstant analyse af baner.
  • Situationen er den samme i arbejdet med reklamekanaler: nye trafikkilder og reklamer bliver konstant testet, det er nødvendigt at overvåge sæsonbestemte tendenser og virkningen af ​​andre begivenheder, hvilket fører til fremkomsten af ​​nye klasser af problemer. Det kræver også konstant overvågning og fortolkning af brugermekanik.
  • Der er en række faktorer, der konstant påvirker driften af ​​applikationen. For eksempel nye udgivelser fra udviklere: Ved at lukke et faktisk problem returnerer de uforvarende det gamle eller skaber et helt nyt. Over tid vokser antallet af nye udgivelser, og processen med at spore fejl skal automatiseres, herunder gennem analyse af brugerbaner.

Overordnet set er retentioneering et effektivt værktøj. Men der er ingen grænse for perfektion - det kan og bør forbedres, udvikles og nye fede produkter bygges på dets grundlag. Jo mere aktivt projektfællesskabet er, jo flere gafler vil der være, nye interessante muligheder for dets brug vil dukke op.

Flere oplysninger om Retentioneering-værktøjer:

Kilde: www.habr.com

Tilføj en kommentar