Retentioneering: hoe we open-source tools schreven voor productanalyse in Python en Pandas

Hallo, Habr. Dit artikel is gewijd aan de resultaten van vier jaar ontwikkeling van een set methoden en tools voor het verwerken van gebruikersbewegingstrajecten in een applicatie of website. Auteur van de ontwikkeling - Maxim Godzi, die leiding geeft aan het team van productmakers en tevens de auteur van het artikel is. Het product zelf heette Retentioneering; het is nu omgezet in een open-sourcebibliotheek en op Github geplaatst zodat iedereen het kan gebruiken. Dit alles kan van belang zijn voor degenen die betrokken zijn bij product- en marketinganalyse, promotie en productontwikkeling. Trouwens, op Habré over één van de cases van het werken met Retentioneering is al een artikel verschenen. Het nieuwe materiaal legt uit wat het product kan doen en hoe het kan worden gebruikt.

Na het lezen van het artikel kun je zelf je eigen Retentioneering schrijven; het kan elke gestandaardiseerde methode zijn voor het verwerken van gebruikerstrajecten in de applicatie en daarbuiten, waardoor je de kenmerken van gedrag tot in detail kunt zien en hier inzichten uit kunt halen voor de groei van bedrijfsstatistieken.

Wat is retentiebeheer en waarom is het nodig?

Ons oorspronkelijke doel was om Growth Hacking te verplaatsen van de wereld van ‘digitale hekserij’ naar de wereld van cijfers, analyses en voorspellingen. Als gevolg hiervan wordt productanalyse gereduceerd tot pure wiskunde en programmeren voor degenen die cijfers verkiezen in plaats van fantastische verhalen, en formules boven modewoorden als ‘rebranding’, ‘herpositionering’, enz., die leuk klinken, maar in de praktijk weinig helpen.

Om deze problemen op te lossen hadden we een raamwerk nodig voor analyse via grafieken en trajecten, en tegelijkertijd een bibliotheek die typische analistenroutines vereenvoudigt, als een manier om reguliere productanalysetaken te beschrijven die begrijpelijk zouden zijn voor zowel mensen als robots. De bibliotheek biedt de mogelijkheid om gebruikersgedrag te beschrijven en dit te koppelen aan productbedrijfsstatistieken in zo'n formele en duidelijke taal dat het de routinetaken van ontwikkelaars en analisten vereenvoudigt en automatiseert, en hun communicatie met het bedrijf vergemakkelijkt.

Retentioneering is een methode en analytische softwaretools die kunnen worden aangepast en geïntegreerd in elk digitaal (en niet alleen) product.

In 2015 zijn we aan het product begonnen. Nu is dit een kant-en-klare, hoewel nog niet ideale, set tools in Python en Pandas voor het werken met data, machine learning-modellen met sklearn-achtige api, tools voor het interpreteren van de resultaten van machine learning-modellen eli5 en shap.

Het is allemaal ingepakt naar een handige open-sourcebibliotheek in de open Github-repository - retentietools. Het gebruik van de bibliotheek is niet moeilijk; bijna iedereen die van productanalyse houdt, maar nog niet eerder code heeft geschreven, kan onze analysemethoden zelfstandig en zonder aanzienlijke tijdsinvestering op hun gegevens toepassen.

Welnu, een programmeur, een applicatiemaker of een lid van een ontwikkel- of testteam die nog nooit eerder analyses heeft gedaan, kan met deze code gaan spelen en de gebruikspatronen van hun applicatie bekijken zonder hulp van buitenaf.

Gebruikerstraject als basiselement van analyse en methoden voor de verwerking ervan

Het gebruikerstraject is een reeks gebruikerstoestanden op bepaalde tijdstippen. Bovendien kunnen evenementen afkomstig zijn uit verschillende databronnen, zowel online als offline. Gebeurtenissen die de gebruiker overkomen, maken deel uit van zijn traject. Voorbeelden:
• drukte op de knop
• zag de foto
• druk op het scherm
• een e-mail ontvangen
• het product aan een vriend aanbevolen
• vulde het formulier in
• tikte op het scherm
• gescrolld
• ging naar de kassa
• bestelde een burrito
• at een burrito
• vergiftigd werd door het eten van een burrito
• kwam via de achteringang het café binnen
• betreden via de hoofdingang
• minimaliseerde de toepassing
• een pushmelding ontvangen
• bleef langer dan X op het scherm hangen
• betaald voor de bestelling
• de bestelling heeft gekocht
• een lening werd geweigerd

Als je de trajectgegevens van een groep gebruikers neemt en bestudeert hoe transities zijn gestructureerd, kun je precies volgen hoe hun gedrag in de applicatie is gestructureerd. Het is handig om dit te doen via een grafiek waarin toestanden knooppunten zijn en overgangen tussen toestanden randen:

Retentioneering: hoe we open-source tools schreven voor productanalyse in Python en Pandas

"Traject" is een erg handig concept: het bevat gedetailleerde informatie over alle gebruikersacties, met de mogelijkheid om eventuele aanvullende gegevens toe te voegen aan de beschrijving van deze acties. Dit maakt het een universeel object. Als je mooie en handige tools hebt waarmee je met trajecten kunt werken, dan kun je overeenkomsten vinden en deze segmenteren.

Trajectsegmentatie lijkt in eerste instantie misschien erg ingewikkeld. In een normale situatie is dit het geval: u moet connectiviteitsmatrixvergelijking of sequentie-uitlijning gebruiken. We zijn erin geslaagd een eenvoudiger manier te vinden: een groot aantal trajecten bestuderen en deze segmenteren door middel van clustering.

Het bleek dat het mogelijk is om van een traject een punt te maken met behulp van continue representaties, bijvoorbeeld TF-IDF. Na de transformatie wordt het traject een punt in de ruimte waar het genormaliseerde optreden van verschillende gebeurtenissen en de overgangen daartussen in het traject langs de assen worden uitgezet. Dit ding uit een enorme duizend of meer dimensionale ruimte (dimS=sum(event types)+sum(ngrams_2 types)) kan op een vlak worden geprojecteerd met behulp van TSNE. TSNE is een transformatie die de dimensie van de ruimte reduceert tot 2 assen en, indien mogelijk, de relatieve afstanden tussen punten behoudt. Dienovereenkomstig wordt het mogelijk om op een platte kaart, een figuratieve projectiekaart van trajecten, te bestuderen hoe de punten van verschillende trajecten zich onderling bevonden. Het analyseert hoe dicht of verschillend ze bij elkaar waren, of ze clusters vormden of verspreid waren over de kaart, enz.:

Retentioneering: hoe we open-source tools schreven voor productanalyse in Python en Pandas

Retentioneering-analysetools bieden de mogelijkheid om complexe gegevens en trajecten om te zetten in een weergave die met elkaar kan worden vergeleken, en vervolgens kan het resultaat van de transformatie worden onderzocht en geïnterpreteerd.

Als we het hebben over standaardmethoden voor het verwerken van trajecten, bedoelen we drie belangrijke hulpmiddelen die we hebben geïmplementeerd in Retentioneering: grafieken, stapmatrices en trajectprojectiekaarten.

Werken met Google Analytics, Firebase en vergelijkbare analysesystemen is behoorlijk complex en niet 100% effectief. Het probleem is een aantal beperkingen voor de gebruiker, waardoor het werk van de analist in dergelijke systemen afhankelijk is van muisklikken en selectie van plakjes. Retentioneering maakt het mogelijk om met gebruikerstrajecten te werken, en niet alleen met trechters, zoals in Google Analytics, waar het detailniveau vaak wordt teruggebracht tot een trechter, zij het gebouwd voor een bepaald segment.

Retentie en zaken

Als voorbeeld van het gebruik van de ontwikkelde tool kunnen we het geval noemen van een grote nichedienst in Rusland. Dit bedrijf heeft een mobiele Android-applicatie die populair is onder klanten. De jaarlijkse omzet uit de mobiele applicatie bedroeg ongeveer 7 miljoen roebel, seizoensschommelingen varieerden van 60 tot 130 duizend. Hetzelfde bedrijf heeft ook een applicatie voor iOS en de gemiddelde factuur van een gebruiker van de Apple-applicatie was hoger dan de gemiddelde factuur van een client die de Android-applicatie gebruikt - 1080 wrijven. versus 1300 wrijven.

Het bedrijf besloot de efficiëntie van de Android-applicatie te verhogen, waarvoor het een grondige analyse uitvoerde. Er zijn enkele tientallen hypothesen gegenereerd over het vergroten van de effectiviteit van de applicatie. Na het inzetten van Retentionneering bleek het probleem te zitten in de berichten die aan nieuwe gebruikers werden getoond. Ze kregen informatie over het merk, de bedrijfsvoordelen en prijzen. Maar het bleek dat de berichten de gebruiker moesten helpen te leren werken in de applicatie.

Retentioneering: hoe we open-source tools schreven voor productanalyse in Python en Pandas

Dit is gebeurd, waardoor de applicatie minder werd verwijderd en de stijging in conversie naar bestelling 23% bedroeg. Aanvankelijk werd 20 procent van het binnenkomende verkeer aan de test onderworpen, maar na een paar dagen, na analyse van de eerste resultaten en beoordeling van de trend, draaiden ze de verhoudingen om en lieten ze integendeel 20 procent over voor de controlegroep, en tachtig werden in de test geplaatst. Een week later werd besloten om achtereenvolgens nog twee hypothesen te testen. In slechts zeven weken tijd is de omzet uit de Android-applicatie anderhalf keer gestegen ten opzichte van het vorige niveau.

Hoe werken met Retentiebeheer?

De eerste stappen zijn vrij eenvoudig: download de bibliotheek met de opdracht pip install retentie. De repository zelf bevat kant-en-klare voorbeelden en cases van gegevensverwerking voor sommige productanalysetaken. De set wordt voortdurend bijgewerkt totdat deze voldoende is voor een eerste kennismaking. Iedereen kan kant-en-klare modules nemen en deze onmiddellijk op zijn taken toepassen - hierdoor kan hij onmiddellijk het proces van meer gedetailleerde analyse en optimalisatie van gebruikerstrajecten zo snel en efficiënt mogelijk opzetten. Dit alles maakt het mogelijk om via duidelijke code applicatiegebruikspatronen te vinden en deze ervaring met collega’s te delen.

Retentiebeheer is een hulpmiddel dat de moeite waard is om gedurende de hele levensduur van uw applicatie te gebruiken, en dit is de reden:

  • Retentioneering is effectief voor het volgen en continu optimaliseren van gebruikerstrajecten en het verbeteren van de bedrijfsprestaties. Zo worden er vaak nieuwe features aan e-commercetoepassingen toegevoegd, waarvan de impact op het product niet altijd goed te voorspellen is. In sommige gevallen ontstaan ​​er compatibiliteitsproblemen tussen nieuwe en oude functies - nieuwe 'kannibaliseren' bijvoorbeeld bestaande. En in deze situatie is een constante analyse van trajecten precies wat nodig is.
  • De situatie is vergelijkbaar bij het werken met advertentiekanalen: nieuwe verkeersbronnen en advertentie-advertenties worden voortdurend getest, het is noodzakelijk om seizoensinvloeden, trends en de invloed van andere gebeurtenissen te monitoren, wat leidt tot het ontstaan ​​van steeds meer nieuwe soorten problemen. Dit vereist ook een constante monitoring en interpretatie van gebruikersmechanismen.
  • Er zijn een aantal factoren die voortdurend de prestaties van een applicatie beïnvloeden. Bijvoorbeeld nieuwe releases van ontwikkelaars: ze sluiten een actueel probleem, ze geven onbewust de oude terug of creëren een compleet nieuwe. In de loop van de tijd groeit het aantal nieuwe releases en moet het proces van het opsporen van fouten worden geautomatiseerd, onder meer door het analyseren van gebruikerstrajecten.

Over het geheel genomen is Retentioneering een effectief instrument. Maar er zijn geen grenzen aan perfectie - het kan en moet worden verbeterd, ontwikkeld en op basis daarvan moeten nieuwe, coole producten worden gebouwd. Hoe actiever de projectgemeenschap is, hoe meer forks er zullen zijn en er zullen nieuwe interessante opties verschijnen om deze te gebruiken.

Meer informatie over retentietools:

Bron: www.habr.com

Voeg een reactie