Retentioneering: wie wir Open-Source-Tools fĂŒr Produktanalysen in Python und Pandas entwickelt haben

Hallo, Habr. Dieser Artikel befasst sich mit den Ergebnissen der vierjĂ€hrigen Entwicklung eines Sets von Methoden und Werkzeugen zur Verarbeitung der Bewegungsbahnen von Nutzern in einer App oder auf einer Webseite. Der Entwickler ist Maxim Godzi, der die Produktentwicklung leitet und auch der Autor dieses Artikels ist. Das Produkt trĂ€gt den Namen Retentioneering, es wurde jetzt in eine Open-Source-Bibliothek umgewandelt und auf Github veröffentlicht, sodass jeder Interessierte es nutzen kann. Dies könnte fĂŒr alle von Interesse sein, die mit Produkt- und Marketinganalysen, Promotion und Produktentwicklung zu tun haben. Übrigens wurde auf Habr bereits ein Artikel ĂŒber einen der AnwendungsfĂ€lle von Retentioneering veröffentlicht.Im neuen Material wird erklĂ€rt, wozu das Produkt in der Lage ist und wie es verwendet werden kann.

Nachdem Sie den Artikel gelesen haben, werden Sie in der Lage sein, Ihr eigenes Retentioneering zu schreiben; es kann jede standardisierte Methode zur Verarbeitung der Nutzerbewegungen innerhalb und außerhalb der App sein, die es ermöglicht, das Verhalten detailliert zu betrachten und daraus Erkenntnisse zur Steigerung der GeschĂ€ftszahlen zu gewinnen.

Was ist Retentioneering und wozu braucht man das?

UrsprĂŒnglich war unser Ziel, Growth Hacking aus der Welt des "digitalen Schamanismus" in die Welt der Zahlen, Analysen und Prognosen zu ĂŒbertragen. Folglich haben wir die Produktanalyse auf reine Mathematik und Programmierung reduziert, fĂŒr diejenigen, die anstelle von fantastischen Geschichten Zahlen und anstatt schick klingenden Begriffen wie "Rebranding", "Repositionierung" usw. bevorzugen, die schön klingen, aber in der Praxis wenig helfen.

Um die genannten Aufgaben zu erfĂŒllen, benötigten wir ein Framework fĂŒr Analysen durch Graphen und Trajektorien und gleichzeitig eine Bibliothek, die die typischen Routinen von Analysten vereinfacht, als Methode zur Beschreibung regelmĂ€ĂŸiger Aufgaben der Produktanalyse, die sowohl fĂŒr Menschen als auch fĂŒr Maschinen verstĂ€ndlich wĂ€re. Die Bibliothek ermöglicht es, das Nutzerverhalten zu beschreiben und es mit den GeschĂ€ftszahlen des Produkts in einer formalen und klaren Sprache zu verknĂŒpfen, um die routinemĂ€ĂŸigen Aufgaben von Entwicklern und Analysten zu vereinfachen und zu automatisieren sowie ihre Kommunikation mit dem GeschĂ€ft zu erleichtern.

Retentioneering — eine Methode und analytische Software-Tools, die an jedes digitale (und nicht nur) Produkt angepasst und integriert werden können.

Wir haben 2015 mit der Arbeit an dem Produkt begonnen. Heute ist es bereits ein fertiges, wenn auch noch nicht perfektes Set von Tools in Python und Pandas fĂŒr die Datenverarbeitung, Modelle des maschinellen Lernens mit einem sklearn-Ă€hnlichen API, sowie Tools zur Interpretation der Ergebnisse von Modellen des maschinellen Lernens wie eli5 und shap.

Das alles ist verpackt in einer praktischen Open-Source-Bibliothek im öffentlichen Github-Repository — retentioneering-tools. Die Bibliothek ist leicht zu nutzen; nahezu jeder, der sich fĂŒr Produktanalyse interessiert, aber noch nie Code geschrieben hat, kann unsere Analysemethoden selbstĂ€ndig und ohne erhebliche Zeitaufwendung auf seine Daten anwenden.

Ein Programmierer, der Ersteller der Anwendung oder ein Mitglied des Entwicklungs- oder Testteams, das noch nie mit Analytik gearbeitet hat, kann mit diesem Code experimentieren und die Nutzungsmuster ihrer Anwendung ohne fremde Hilfe erkennen.

Die Nutzertrajektorie als grundlegendes Element der Analyse und ihre Verarbeitung

Die Nutzertrajektorie ist die Abfolge von ZustÀnden eines Nutzers zu bestimmten Zeitpunkten. Dabei können Ereignisse aus verschiedenen Datenquellen stammen, sowohl online als auch offline. Ereignisse, die mit dem Nutzer passiert sind, sind Teil seiner Trajektorie. Beispiele:
‱ auf einen Button geklickt
‱ ein Bild gesehen
‱ auf einem Bildschirm gelandet
‱ eine E-Mail erhalten
‱ ein Produkt einem Freund empfohlen
‱ ein Formular ausgefĂŒllt
‱ den Bildschirm angetippt
‱ nach unten gescrollt
‱ zur Kasse gegangen
‱ ein Burrito bestellt
‱ ein Burrito gegessen
‱ von dem gegessenen Burrito vergiftet worden
‱ durch den Hintereingang ins CafĂ© gegangen
‱ durch den Haupteingang gegangen
‱ die Anwendung minimiert
‱ eine Push-Benachrichtigung erhalten
‱ lĂ€nger Zeit auf den Bildschirm gestarrt
‱ die Bestellung bezahlt
‱ die Bestellung abgeholt
‱ eine Kreditablehnung erhalten

Wenn man die Trajektorien von Gruppen von Nutzern betrachtet und untersucht, wie die ÜbergĂ€nge gestaltet sind, kann man nachvollziehen, wie sich ihr Verhalten in der Anwendung entwickelt. Dies lĂ€sst sich gut ĂŒber ein Diagramm darstellen, in dem die ZustĂ€nde — Knoten und die ÜbergĂ€nge zwischen den ZustĂ€nden — Kanten sind:

Retentioneering: wie wir Open-Source-Tools fĂŒr Produktanalysen in Python und Pandas entwickelt haben

Der Begriff „Trajektorie“ ist sehr nĂŒtzlich – er enthĂ€lt detaillierte Informationen ĂŒber alle Handlungen des Benutzers, mit der Möglichkeit, beliebige zusĂ€tzliche Daten in die Beschreibung dieser Handlungen aufzunehmen. Dies macht ihn zu einem universellen Objekt. Wenn Sie schöne und praktische Werkzeuge haben, die es ermöglichen, mit Trajektorien zu arbeiten, können Ähnlichkeiten gefunden und sie segmentiert werden.

Die Segmentierung von Trajektorien mag anfangs sehr kompliziert erscheinen. In einer normalen Situation ist das auch so – es mĂŒssen Vergleichsmatrizen oder Sequenzabgleiche verwendet werden. Es ist uns gelungen, einen einfacheren Weg zu finden – eine große Anzahl von Trajektorien zu studieren und sie durch Clusterung zu segmentieren.

Es hat sich herausgestellt, dass man eine Trajektorie in einen Punkt mittels kontinuierlicher Darstellungen umwandeln kann, zum Beispiel TF-IDF. Nach der Umwandlung wird die Trajektorie zu einem Punkt im Raum, wobei die verschiedenen Ereignisse und ÜbergĂ€nge in der Trajektorie entlang der Achsen durch die normierte HĂ€ufigkeit dargestellt werden. Dieses Konstrukt aus einem riesigen mehr als tausenddimensionalen Raum (dimS=sum(event types)+sum(ngrams_2 types)) kann mit Hilfe von TSNEprojiziert werden. TSNE – eine Transformation, die die Dimension des Raumes auf 2 Achsen reduziert und nach Möglichkeit die relativen AbstĂ€nde zwischen den Punkten bewahrt. Folglich wird es möglich, auf einer flachen Karte, einer bildlichen Projektionskarte der Trajektorien, zu untersuchen, wie die Punkte verschiedener Trajektorien zueinander standen. Es wird analysiert, wie nahe oder unterschiedlich sie sich waren, ob sie Cluster bildeten oder sich auf der Karte verteilten usw.:

Retentioneering: wie wir Open-Source-Tools fĂŒr Produktanalysen in Python und Pandas entwickelt haben

Die Analysetools von Retentioneering bieten die Möglichkeit, einen Satz komplexer Daten und Trajektorien in eine Darstellung zu verwandeln, die untereinander vergleichbar ist und dann das Ergebnis der Transformation untersucht und interpretiert werden kann.

Wenn von den Standardmethoden der Trajektorienverarbeitung die Rede ist, meint man drei Hauptwerkzeuge, die wir in Retentioneering implementiert haben – Graphen, Schrittmatrizen und Projektionskarten der Trajektorien.

Die Arbeit mit Google Analytics, Firebase und Ă€hnlichen Analysesystemen ist recht komplex und nicht zu 100% effektiv. Das Problem liegt in einer Reihe von EinschrĂ€nkungen fĂŒr den Benutzer, was dazu fĂŒhrt, dass die Arbeit des Analysts in solchen Systemen auf Mausklicks und die Auswahl von Segmenten beschrĂ€nkt ist. Retentioneering ermöglicht es, mit den Nutzerpfaden zu arbeiten und nicht nur mit Trichtern, wie es bei Google Analytics der Fall ist, wo der Detaillierungsgrad oft auf einen Trichter reduziert wird, auch wenn dieser fĂŒr ein bestimmtes Segment erstellt wurde.

Retentioneering und Fallstudien

Als Beispiel fĂŒr die Nutzung des entwickelten Instruments kann der Fall eines großen Nischenservices in Russland genannt werden. Das Unternehmen verfĂŒgt ĂŒber eine mobile Anwendung fĂŒr Android, die bei den Kunden beliebt ist. Der jĂ€hrliche Umsatz aus der mobilen Anwendung betrug etwa 7 Millionen Rubel, mit saisonalen Schwankungen im Bereich von 60-130 Tausend. Das Unternehmen hat auch eine Anwendung fĂŒr iOS, und der durchschnittliche Warenkorbwert des Nutzers der "Apple"-Anwendung ĂŒberstieg den durchschnittlichen Warenkorbwert des Nutzers der Android-App — 1080 Rubel im Vergleich zu 1300 Rubel.

Das Unternehmen beschloss, die Effizienz der Android-Anwendung zu steigern und fĂŒhrte eine grĂŒndliche Analyse durch. Es wurden mehrere Dutzend Hypothesen zur Steigerung der EffektivitĂ€t der Anwendung formuliert. Nach der Nutzung von Retentioneering stellte sich heraus, dass das Problem bei den Botschaften lag, die neuen Nutzern angezeigt wurden. Sie erhielten Informationen ĂŒber die Marke, die Vorteile des Unternehmens und die Preise. Doch wie sich herausstellte, sollten die Botschaften dem Nutzer helfen, zu lernen, wie man die Anwendung nutzt.

Retentioneering: wie wir Open-Source-Tools fĂŒr Produktanalysen in Python und Pandas entwickelt haben

Das wurde auch umgesetzt, wodurch die Anwendung seltener deinstalliert wurde und die Konversionsrate in AuftrĂ€ge um 23% stieg. ZunĂ€chst wurden 20 Prozent des eingehenden Traffics fĂŒr den Test verwendet, aber nach ein paar Tagen, nachdem die ersten Ergebnisse analysiert und der Trend bewertet wurde — wechselten sie die Proportionen und ließen stattdessen 20 Prozent fĂŒr die Kontrollgruppe, wĂ€hrend achtzig Prozent in den Test einging. Eine weitere Woche spĂ€ter wurde beschlossen, schrittweise zwei weitere Hypothesen zu testen. Insgesamt stieg der Umsatz aus der Android-Anwendung innerhalb von sieben Wochen um das 1,5-fache im Vergleich zum vorherigen Niveau.

Wie arbeitet man mit Retentioneering?

Die ersten Schritte sind recht einfach – wir laden die Bibliothek mit dem Befehl pip install retentioneering herunter. Im Repository befinden sich fertige Beispiele und AnwendungsfĂ€lle zur Datenverarbeitung fĂŒr einige Aufgaben der Produktanalyse. Das Set wird kontinuierlich erweitert, aber es reicht aus, um sich einen ersten Eindruck zu verschaffen. Jeder kann die fertigen Module nutzen und sofort auf seine Aufgaben anwenden – das ermöglicht, den Prozess einer detaillierteren Analyse und Optimierung der Benutzerpfade schnell und effizient einzurichten. All dies gibt die Möglichkeit, Nutzungsmuster der Anwendung durch verstĂ€ndlichen Code zu identifizieren und diese Erfahrungen an Kollegen weiterzugeben.

Retentioneering ist ein Werkzeug, das wĂ€hrend der gesamten Lebensdauer der Anwendung genutzt werden sollte, und das aus folgenden GrĂŒnden:

  • Retentioneering ist effektiv fĂŒr die Verfolgung und kontinuierliche Optimierung von Benutzerpfaden und zur Verbesserung von GeschĂ€ftszahlen. So werden in eCommerce-Anwendungen hĂ€ufig neue Funktionen hinzugefĂŒgt, deren Einfluss auf das Produkt nicht immer vorhersehbar ist. In einigen FĂ€llen entstehen InkompatibilitĂ€tsprobleme zwischen neuen und alten Funktionen – zum Beispiel "kanibalisieren" neue Funktionen bereits bestehende. Und genau in dieser Situation ist eine stĂ€ndige Analyse der Pfade erforderlich.
  • Eine Ă€hnliche Situation gibt es bei der Arbeit mit WerbekanĂ€len: Es werden stĂ€ndig neue Traffic-Quellen und kreative Anzeigen getestet, die SaisonalitĂ€t, Trends und den Einfluss anderer Ereignisse mĂŒssen verfolgt werden, was zur Entstehung immer neuer Klassen von Problemen fĂŒhrt. Auch hier ist eine stĂ€ndige Verfolgung und Interpretation von Benutzermustern erforderlich.
  • Es gibt eine ganze Reihe von Faktoren, die stĂ€ndig die Funktionsweise der Anwendung beeinflussen. Zum Beispiel neue Releases von Entwicklern: Bei der Behebung eines aktuellen Problems bringen sie unbeabsichtigt ein altes zurĂŒck oder schaffen ein völlig neues. Im Laufe der Zeit steigt die Anzahl neuer Releases, und der Prozess der Fehlerverfolgung muss automatisiert werden – unter anderem durch die Analyse von Benutzerpfaden.

Insgesamt ist Retentioneering ein effektives Werkzeug. Doch es gibt keine Grenzen fĂŒr die Verbesserung – es kann und sollte weiterentwickelt, verbessert und darauf basierend neue tolle Produkte gebaut werden. Je aktiver die Community des Projekts ist, desto mehr Forks wird es geben, und es werden neue interessante Möglichkeiten zur Nutzung entstehen.

ZusÀtzliche Informationen zu den Werkzeugen von Retentioneering:

Quelle: habr.com

60GB SSD 8Gb DDR4