Retentioneering: hoe ons oopbron-produkanalise-instrumente in Python en Pandas geskryf het

Haai Habr. Hierdie artikel word gewy aan die resultate van 'n vier jaar lange ontwikkeling van 'n stel metodes en gereedskap vir die verwerking van gebruikersbewegingstrajekte in 'n toepassing of op 'n webwerf. Skrywer van die ontwikkeling - Maksim Godzi, wat aan die hoof is van die span produkskeppers, hy is ook die skrywer van die artikel. Die produk self is Retentioneering genoem, nou is dit omskep in 'n oopbron-biblioteek en op Github aangebied sodat enigiemand dit kan gebruik. Dit alles kan van belang wees vir diegene wat betrokke is by produk- en bemarkingsanalise, produkbevordering en -ontwikkeling. Terloops, op Habré 'n artikel is reeds gepubliseer oor een van die gevalle van werk met Retentioneering. Die nuwe materiaal verduidelik waartoe die produk in staat is en hoe dit gebruik kan word.

Nadat u die artikel gelees het, sal u u eie Retentioneering kan skryf, dit kan enige gestandaardiseerde metode wees om gebruikerstrajekte in die toepassing en verder te verwerk, sodat u die kenmerke van gedrag in detail kan sien en insigte hieruit kan onttrek vir die groei van besigheids statistieke.

Wat is Retentioneering en hoekom is dit nodig?

Aanvanklik was ons doelwit om Growth Hacking van die wêreld van "digitale heksery" na die wêreld van getalle, analise en voorspellings te skuif. Gevolglik word produkontleding gereduseer tot suiwer wiskunde en programmering vir diegene wat getalle verkies in plaas van fantastiese stories, en formules tot slim woorde soos “herbranding”, “herposisionering”, ens., wat pragtig klink, maar in die praktyk nie baie help.

Om hierdie probleme op te los, het ons 'n raamwerk vir ontleding deur middel van grafieke en trajekte nodig gehad, en terselfdertyd 'n biblioteek wat tipiese ontlederroetines vereenvoudig, as 'n manier om gereelde produkontledingstake te beskryf wat vir beide mense en robotte verstaanbaar sal wees. Die biblioteek bied die vermoë om gebruikersgedrag te beskryf en te koppel aan produkbesigheidsmaatstawwe in so 'n formele en duidelike taal om die roetinetake van ontwikkelaars en ontleders te vereenvoudig en te outomatiseer, en hul kommunikasie met die besigheid te vergemaklik.

Retentioneering is 'n metode en analitiese sagteware-instrumente wat aangepas en geïntegreer kan word in enige digitale (en nie net) produk.

Ons het in 2015 aan die produk begin werk. Nou is dit 'n klaargemaakte, alhoewel nog nie ideale stel gereedskap om met data in Python en Pandas te werk nie, masjienleermodelle met sklearn-agtige API, gereedskap vir die interpretasie van die resultate van eli5 en Shap-masjienleermodelle.

Dit is alles toegedraai in 'n gerieflike oopbron-biblioteek in die oop Github-bewaarplek - retentioneering-nutsgoed. Die gebruik van die biblioteek is nie moeilik nie, byna almal wat van produkontleding hou, maar nog nie voorheen kode geskryf het nie, kan ons ontledingsmetodes op hul eie toepas en sonder om baie tyd te spandeer.

Wel, 'n programmeerder, toepassingskepper of 'n lid van 'n ontwikkeling- of toetsspan wat nog nooit analise gedoen het nie, kan met hierdie kode begin speel en patrone sien in die gebruik van hul toepassing sonder hulp van buite.

Gebruikersbaan as 'n basiese element van analise en metodes vir die verwerking daarvan

Gebruikertrajek is 'n volgorde van gebruikertoestande op sekere tydpunte. Boonop kan gebeurtenisse van verskillende databronne wees, beide aanlyn en vanlyn. Die gebeure wat met die gebruiker gebeur het, is deel van sy trajek. Voorbeelde:
• het die knoppie gedruk
• 'n prentjie gesien
• druk die skerm
• 'n e-pos ontvang
• het die produk by 'n vriend aanbeveel
• die vorm ingevul het
• het die skerm getik
• gerol
• het die betaalpunt genader
• 'n burrito bestel het
• 'n burrito geëet het
• vergiftig deur die burrito wat hy geëet het
• het die kafee vanaf die agteringang binnegegaan
• vanaf die hoofingang binnegegaan
• die toepassing geminimaliseer het
• het 'n stootkennisgewing ontvang
• dom in die skerm vir langer tyd Х
• betaal vir die bestelling
• het die bestelling afgelos
• 'n lening geweier is

As jy die baandata van 'n groep gebruikers neem en bestudeer hoe die oorgange werk, kan jy presies sien hoe hul gedrag in die toepassing gebou is. Dit is gerieflik om dit te doen deur middel van 'n grafiek waarin die toestande nodusse is en die oorgange tussen toestande rande is:

Retentioneering: hoe ons oopbron-produkanalise-instrumente in Python en Pandas geskryf het

"Trajek" is 'n baie gerieflike konsep - dit bevat gedetailleerde inligting oor alle gebruikersaksies, met die vermoë om enige bykomende data by die beskrywing van hierdie aksies te voeg. Dit maak dit 'n generiese voorwerp. As jy pragtige en gerieflike gereedskap het wat jou toelaat om met trajekte te werk, dan kan jy ooreenkomste vind en dit segmenteer.

Trajeksegmentering kan aanvanklik baie ingewikkeld lyk. In 'n normale situasie is dit waar - jy moet 'n vergelyking van verbindingsmatrikse of belyning van rye gebruik. Ons het daarin geslaag om 'n makliker manier te vind - om 'n groot aantal bane te bestudeer en dit deur groepering te segmenteer.

Soos dit geblyk het, is dit moontlik om 'n trajek in 'n punt te verander deur deurlopende voorstellings, byvoorbeeld, TF-IDF. Na die transformasie word die trajek 'n punt in die ruimte, waar die genormaliseerde voorkoms in die trajek van verskeie gebeurtenisse en oorgange tussen hulle langs die asse geplot word. Hierdie ding uit 'n groot duisend- en meer-dimensionele ruimte (dimS=som(gebeurtenistipes)+som(ngrams_2 tipes)), kan op 'n vliegtuig geprojekteer word deur gebruik te maak van TSNE. TSNE - transformasie, verminder die dimensie van ruimte tot 2 asse en, indien moontlik, behou die relatiewe afstande tussen punte. Gevolglik word dit op 'n plat kaart, 'n figuurlike projeksiekaart van trajekte, moontlik om te bestudeer hoe die punte van verskillende trajekte onder mekaar geleë was. Dit word ontleed hoe naby of verskillend hulle aan mekaar was, of hulle trosse gevorm het of oor die kaart versprei is, ens.:

Retentioneering: hoe ons oopbron-produkanalise-instrumente in Python en Pandas geskryf het

Retensie-analise-instrumente bied die vermoë om komplekse data en trajekte te omskep in 'n voorstelling wat met mekaar vergelyk kan word, en dan die resultaat van die transformasie te verken en te interpreteer.

Praat van standaard trajekverwerkingsmetodes, ons bedoel drie hoofinstrumente wat ons in Retentioneering geïmplementeer het - grafieke, stapmatrikse en trajekprojeksiekaarte.

Om met Google Analytics, Firebase en soortgelyke ontledingstelsels te werk is redelik ingewikkeld en nie 100% doeltreffend nie. Die probleem is 'n aantal beperkings vir die gebruiker, as gevolg waarvan die werk van die ontleder in sulke stelsels berus op muisklikke en seleksie van skywe. Retentioneering maak dit moontlik om met gebruikerstrajekte te werk, en nie net met tregters nie, soos in Google Analytics, waar die vlak van detail dikwels tot 'n tregter verminder word, al is dit vir 'n sekere segment gebou.

Retensie en gevallestudies

As 'n voorbeeld van die gebruik van die ontwikkelde hulpmiddel, kan ons die geval van 'n groot nisdiens in Rusland noem. Hierdie maatskappy het 'n Android-mobiele toepassing wat gewild is onder kliënte. Die jaarlikse omset van die mobiele toepassing was ongeveer 7 miljoen roebels, seisoenale skommelinge was binne 60-130 duisend. Dieselfde maatskappy het ook 'n toepassing vir iOS, en die gemiddelde tjek van die gebruiker van die "appel" toepassing was hoër as die gemiddelde tjek van die kliënt met behulp van die Android-toepassing - 1080 vryf. teen 1300 roebels.

Die maatskappy het besluit om die doeltreffendheid van die Android-toepassing te verhoog, waarvoor dit 'n deeglike ontleding gedoen het. Verskeie dosyn hipoteses is gevorm om die doeltreffendheid van die toepassing te verhoog. Nadat Retentionneering gebruik is, het dit geblyk dat die probleem in die boodskappe was wat aan nuwe gebruikers gewys is. Hulle het inligting oor die handelsmerk, maatskappyvoordele en pryse ontvang. Maar, soos dit geblyk het, was die boodskappe veronderstel om die gebruiker te help leer hoe om in die toepassing te werk.

Retentioneering: hoe ons oopbron-produkanalise-instrumente in Python en Pandas geskryf het

Dit is gedoen, waardeur die aansoek minder uitgevee begin word het, en die toename in omskakeling na bestelling was 23%. Aanvanklik is 20 persent van die inkomende verkeer aan die toets gegee, maar na 'n paar dae, nadat hulle die eerste resultate ontleed en die tendens geëvalueer het, het hulle die proporsies omgekeer en, omgekeerd, 20 persent vir die kontrolegroep gelaat, en tagtig persent geplaas in die toets. 'n Week later is besluit om die toetsing van nog twee hipoteses opeenvolgend by te voeg. In net sewe weke het die omset van die Android-toepassing een en 'n half keer toegeneem vergeleke met die vorige vlak.

Hoe om met Retentioneering te werk?

Die eerste stappe is redelik eenvoudig - ons laai die biblioteek met die pip install retentioneering-opdrag. Die bewaarplek self bevat klaargemaakte voorbeelde en dataverwerkingsake vir sommige produkontledingstake. Die stel word voortdurend opgedateer totdat dit genoeg is vir die eerste kennismaking. Almal kan klaargemaakte modules neem en dadelik op hul take aansoek doen - dit laat jou toe om die proses van meer gedetailleerde ontleding en optimalisering van gebruikerstrajek onmiddellik so vinnig en doeltreffend moontlik op te stel. Dit alles maak dit moontlik om toepassingsgebruikpatrone deur verstaanbare kode te vind en hierdie ervaring met kollegas te deel.

Retentioneering is 'n instrument wat die moeite werd is om gedurende die leeftyd van 'n toepassing te gebruik, en dit is hoekom:

  • Retentioneering is effektief vir die dop en deurlopend optimalisering van gebruikerstrajekte en die verbetering van besigheidsprestasie. Nuwe kenmerke word dus dikwels by e-handelstoepassings gevoeg, waarvan die impak op die produk nie altyd korrek voorspel kan word nie. In sommige gevalle is daar versoenbaarheidskwessies tussen nuwe en ou kenmerke - byvoorbeeld nuwes "kannibaliseer" bestaandes. En in hierdie situasie is 'n konstante ontleding van trajekte nodig.
  • Die situasie is soortgelyk in die werk met advertensiekanale: nuwe verkeersbronne en advertensiekreatiewe word voortdurend getoets, dit is nodig om seisoenaliteit, neigings en die impak van ander gebeurtenisse te monitor, wat lei tot die opkoms van nuwe klasse probleme. Dit vereis ook konstante monitering en interpretasie van gebruikersmeganika.
  • Daar is 'n aantal faktore wat voortdurend die werking van die toepassing beïnvloed. Byvoorbeeld, nuwe vrystellings van ontwikkelaars: deur 'n werklike probleem te sluit, gee hulle onbewustelik die ou een terug of skep 'n heeltemal nuwe een. Met verloop van tyd neem die aantal nuwe vrystellings toe, en die proses om foute op te spoor, moet geoutomatiseer word, insluitend deur die ontleding van gebruikersbane.

Oor die algemeen is retensie 'n doeltreffende hulpmiddel. Maar daar is geen beperking op perfeksie nie - dit kan en moet verbeter, ontwikkel en nuwe koel produkte op die basis daarvan gebou word. Hoe meer aktief die projekgemeenskap is, hoe meer vurke sal daar wees, nuwe interessante opsies vir die gebruik daarvan sal verskyn.

Meer inligting oor Retentioneering-nutsgoed:

Bron: will.com

Voeg 'n opmerking