Retentioneering: kung paano kami sumulat ng mga open-source na tool para sa analytics ng produkto sa Python at Pandas

Hello, Habr. Ang artikulong ito ay nakatuon sa mga resulta ng apat na taon ng pagbuo ng isang hanay ng mga pamamaraan at tool para sa pagproseso ng mga trajectory ng paggalaw ng user sa isang application o website. May-akda ng pag-unlad - Maxim Godzi, na namumuno sa pangkat ng mga tagalikha ng produkto at siya rin ang may-akda ng artikulo. Ang produkto mismo ay tinatawag na Retentioneering; ito ay na-convert na ngayon sa isang open-source na library at nai-post sa Github upang magamit ito ng sinuman. Ang lahat ng ito ay maaaring maging interesado sa mga kasangkot sa pagsusuri ng produkto at marketing, promosyon at pagbuo ng produkto. Sa pamamagitan ng paraan, sa HabrΓ© ang isang artikulo ay nai-publish na tungkol sa isa sa mga kaso ng pagtatrabaho sa Retentioneering. Ipinapaliwanag ng bagong materyal kung ano ang magagawa ng produkto at kung paano ito magagamit.

Pagkatapos basahin ang artikulo, ikaw mismo ay makakasulat ng iyong sariling Retentioneering; maaari itong maging anumang standardized na paraan para sa pagproseso ng mga trajectory ng user sa application at higit pa, na nagbibigay-daan sa iyong makita nang detalyado ang mga katangian ng pag-uugali at kumuha ng mga insight mula dito para sa paglago ng mga sukatan ng negosyo.

Ano ang Retentioneering at bakit ito kailangan?

Ang aming unang layunin ay ilipat ang Growth Hacking mula sa mundo ng "digital witchcraft" patungo sa mundo ng mga numero, analytics at mga hula. Bilang kinahinatnan, ang analytics ng produkto ay ginawang purong matematika at programming para sa mga mas gusto ang mga numero sa halip na mga kamangha-manghang kwento, at mga formula sa mga buzzword tulad ng "rebranding", "repositioning", atbp., na mukhang maganda, ngunit sa pagsasanay ay hindi gaanong nakakatulong.

Upang malutas ang mga problemang ito, kailangan namin ng isang framework para sa analytics sa pamamagitan ng mga graph at trajectory, at kasabay nito ay isang library na nagpapasimple sa mga karaniwang gawain ng analyst, bilang isang paraan upang ilarawan ang mga regular na gawain sa analytics ng produkto na mauunawaan ng mga tao at mga robot. Nagbibigay ang library ng kakayahang ilarawan ang gawi ng user at i-link ito sa mga sukatan ng negosyo ng produkto sa ganoong pormal at malinaw na wika na pinapasimple at ino-automate nito ang mga nakagawiang gawain ng mga developer at analyst, at pinapadali ang kanilang komunikasyon sa negosyo.

Ang retentioneering ay isang paraan at analytical software tool na maaaring iakma at isama sa anumang digital (at hindi lamang) na produkto.

Nagsimula kaming magtrabaho sa produkto noong 2015. Ngayon ito ay isang handa na, bagama't hindi pa perpekto, hanay ng mga tool sa Python at Panda para sa pagtatrabaho sa data, mga modelo ng machine learning na may sklearn-like api, mga tool para sa pagbibigay-kahulugan sa mga resulta ng mga modelo ng machine learning na eli5 at shap.

Nakabalot na lahat sa isang maginhawang open-source na library sa bukas na Github repository - retentioneering-tools. Ang paggamit ng library ay hindi mahirap; halos sinumang mahilig sa analytics ng produkto, ngunit hindi pa nakakasulat ng code dati, ay maaaring ilapat ang aming mga pamamaraan ng analytics sa kanilang data nang nakapag-iisa at nang walang makabuluhang puhunan sa oras.

Well, ang isang programmer, isang application creator, o isang miyembro ng isang development o testing team na hindi pa nakakagawa ng analytics bago ay maaaring magsimulang maglaro gamit ang code na ito at makita ang mga pattern ng paggamit ng kanilang application nang walang tulong mula sa labas.

Ang tilapon ng gumagamit bilang pangunahing elemento ng pagsusuri at mga pamamaraan para sa pagproseso nito

Ang trajectory ng user ay isang sequence ng mga status ng user sa ilang partikular na time point. Bukod dito, ang mga kaganapan ay maaaring magmula sa iba't ibang data source, parehong online at offline. Ang mga kaganapang nangyayari sa user ay bahagi ng kanyang trajectory. Mga halimbawa:
β€’ pinindot ang button
β€’ nakita ang larawan
β€’ pindutin ang screen
β€’ nakatanggap ng email
β€’ inirerekomenda ang produkto sa isang kaibigan
β€’ pinunan ang form
β€’ tinapik ang screen
β€’ nag-scroll
β€’ pumunta sa cash register
β€’ nag-order ng burrito
β€’ kumain ng burrito
β€’ nalason sa pamamagitan ng pagkain ng burrito
β€’ pumasok sa cafe mula sa likod na pasukan
β€’ pumasok mula sa front entrance
β€’ pinaliit ang aplikasyon
β€’ nakatanggap ng push notification
β€’ ay na-stuck sa screen na mas mahaba kaysa sa X
β€’ binayaran ang order
β€’ binili ang order
β€’ ay tinanggihan ng pautang

Kung kukunin mo ang data ng trajectory ng isang pangkat ng mga user at pag-aralan kung paano nakaayos ang mga transition, masusubaybayan mo nang eksakto kung paano nakabalangkas ang kanilang gawi sa application. Maginhawang gawin ito sa pamamagitan ng isang graph kung saan ang mga estado ay mga node, at ang mga paglipat sa pagitan ng mga estado ay mga gilid:

Retentioneering: kung paano kami sumulat ng mga open-source na tool para sa analytics ng produkto sa Python at Pandas

Ang "Trajectory" ay isang napaka-maginhawang konsepto - naglalaman ito ng detalyadong impormasyon tungkol sa lahat ng mga aksyon ng user, na may kakayahang magdagdag ng anumang karagdagang data sa paglalarawan ng mga pagkilos na ito. Ginagawa nitong isang unibersal na bagay. Kung mayroon kang maganda at maginhawang mga tool na nagbibigay-daan sa iyo upang gumana sa mga tilapon, pagkatapos ay makakahanap ka ng mga pagkakatulad at i-segment ang mga ito.

Ang pagse-segment ng trajectory ay maaaring mukhang napakakumplikado sa simula. Sa isang normal na sitwasyon, ito ang kaso - kailangan mong gumamit ng paghahambing ng matrix ng pagkakakonekta o pagkakahanay ng pagkakasunud-sunod. Nakahanap kami ng isang mas simpleng paraan - upang pag-aralan ang isang malaking bilang ng mga trajectory at i-segment ang mga ito sa pamamagitan ng clustering.

Tulad ng nangyari, posible na gawing isang punto ang isang tilapon gamit ang tuluy-tuloy na mga representasyon, halimbawa, TF-IDF. Matapos ang pagbabagong-anyo, ang tilapon ay nagiging isang punto sa espasyo kung saan ang normalized na paglitaw ng iba't ibang mga kaganapan at mga paglipat sa pagitan ng mga ito sa tilapon ay naka-plot kasama ang mga palakol. Ang bagay na ito mula sa isang malaking libo o higit pang dimensional na espasyo (dimS=sum(mga uri ng kaganapan)+sum(ngrams_2 na uri)) ay maaaring i-project sa isang eroplano gamit ang TSNE. Ang TSNE ay isang pagbabagong-anyo na binabawasan ang dimensyon ng espasyo sa 2 axes at, kung maaari, pinapanatili ang mga kaugnay na distansya sa pagitan ng mga punto. Alinsunod dito, nagiging posible sa isang patag na mapa, isang makasagisag na mapa ng projection ng mga tilapon, upang pag-aralan kung paano matatagpuan ang mga punto ng iba't ibang mga tilapon sa kanilang mga sarili. Sinusuri nito kung gaano sila kalapit o pagkakaiba sa isa't isa, kung sila ay bumuo ng mga kumpol o nakakalat sa mapa, atbp.:

Retentioneering: kung paano kami sumulat ng mga open-source na tool para sa analytics ng produkto sa Python at Pandas

Ang mga tool sa retentioneering analytics ay nagbibigay ng kakayahang gawing view ang kumplikadong data at mga trajectory na maihahambing sa isa't isa, at pagkatapos ay masusuri at mabibigyang-kahulugan ang resulta ng pagbabago.

Sa pagsasalita tungkol sa mga karaniwang pamamaraan para sa pagproseso ng mga trajectory, ang ibig naming sabihin ay tatlong pangunahing tool na ipinatupad namin sa Retentioneering - mga graph, step matrice at mga mapa ng projection ng trajectory.

Ang pagtatrabaho sa Google Analytics, Firebase at mga katulad na analytics system ay medyo kumplikado at hindi 100% epektibo. Ang problema ay isang bilang ng mga paghihigpit para sa gumagamit, bilang isang resulta kung saan ang trabaho ng analyst sa naturang mga system ay nakasalalay sa mga pag-click ng mouse at pagpili ng mga hiwa. Ginagawang posible ng retentioneering na magtrabaho kasama ang mga trajectory ng user, at hindi lamang sa mga funnel, tulad ng sa Google Analytics, kung saan ang antas ng detalye ay kadalasang binabawasan sa isang funnel, kahit na binuo para sa isang partikular na segment.

Retentioneering at mga kaso

Bilang isang halimbawa ng paggamit ng binuo na tool, maaari naming banggitin ang kaso ng isang malaking serbisyo sa angkop na lugar sa Russia. Ang kumpanyang ito ay may Android mobile application na sikat sa mga customer. Ang taunang turnover mula sa mobile application ay humigit-kumulang 7 milyong rubles, ang mga pana-panahong pagbabagu-bago ay mula 60-130 libo. Ang parehong kumpanya ay mayroon ding aplikasyon para sa iOS, at ang average na bill ng isang gumagamit ng Apple application ay mas mataas kaysa sa average na bill ng isang kliyente na gumagamit ng Android application - 1080 rub. kumpara sa 1300 kuskusin.

Nagpasya ang kumpanya na dagdagan ang kahusayan ng Android application, kung saan nagsagawa ito ng masusing pagsusuri. Ilang dosenang hypotheses ang nabuo tungkol sa pagtaas ng pagiging epektibo ng aplikasyon. Matapos gamitin ang Retentionneering, lumabas na ang problema ay nasa mga mensaheng ipinakita sa mga bagong user. Nakatanggap sila ng impormasyon tungkol sa tatak, mga benepisyo ng kumpanya at mga presyo. Ngunit, tulad ng nangyari, ang mga mensahe ay dapat na tulungan ang gumagamit na malaman kung paano magtrabaho sa application.

Retentioneering: kung paano kami sumulat ng mga open-source na tool para sa analytics ng produkto sa Python at Pandas

Ginawa ito, bilang isang resulta kung saan ang application ay naging hindi gaanong na-uninstall, at ang pagtaas ng conversion sa order ay 23%. Sa una, 20 porsyento ng papasok na trapiko ang ibinigay sa pagsubok, ngunit pagkaraan ng ilang araw, pagkatapos na pag-aralan ang mga unang resulta at pagtatasa ng trend, binaligtad nila ang mga proporsyon at, sa kabaligtaran, nag-iwan ng 20 porsyento para sa control group, at walumpung porsyento ang nailagay sa pagsusulit. Pagkalipas ng isang linggo, napagpasyahan na sunud-sunod na magdagdag ng pagsubok ng dalawa pang hypotheses. Sa loob lamang ng pitong linggo, ang turnover mula sa Android application ay tumaas ng isa at kalahating beses kumpara sa nakaraang antas.

Paano magtrabaho sa Retentioneering?

Ang mga unang hakbang ay medyo simple - i-download ang library gamit ang pip install retentioneering command. Ang repositoryo mismo ay naglalaman ng mga handa na halimbawa at mga kaso ng pagpoproseso ng data para sa ilang mga gawain sa analytics ng produkto. Ang set ay patuloy na ina-update hanggang sa ito ay sapat na para sa isang unang kakilala. Sinuman ay maaaring kumuha ng mga yari na module at agad na ilapat ang mga ito sa kanilang mga gawain - nagbibigay-daan ito sa kanila na agad na i-set up ang proseso ng mas detalyadong pagsusuri at pag-optimize ng mga trajectory ng user nang mabilis at mahusay hangga't maaari. Ginagawang posible ng lahat ng ito na makahanap ng mga pattern ng paggamit ng application sa pamamagitan ng malinaw na code at ibahagi ang karanasang ito sa mga kasamahan.

Ang pagpapanatili ay isang tool na sulit gamitin sa buong buhay ng iyong aplikasyon, at narito kung bakit:

  • Ang retentioneering ay epektibo para sa pagsubaybay at patuloy na pag-optimize ng mga trajectory ng user at pagpapabuti ng performance ng negosyo. Kaya, ang mga bagong feature ay madalas na idinaragdag sa mga application ng ecommerce, na ang epekto nito sa produkto ay hindi palaging mahuhulaan nang tama. Sa ilang mga kaso, ang mga problema sa pagiging tugma ay lumitaw sa pagitan ng bago at lumang mga pag-andar - halimbawa, ang mga bago ay "cannibalize" ang mga umiiral na. At sa sitwasyong ito, ang patuloy na pagsusuri ng mga tilapon ay tiyak kung ano ang kinakailangan.
  • Ang sitwasyon ay katulad kapag nagtatrabaho sa mga channel ng advertising: ang mga bagong pinagmumulan ng trapiko at mga creative ng advertising ay patuloy na sinusubok, kinakailangan na subaybayan ang seasonality, mga uso at ang impluwensya ng iba pang mga kaganapan, na humahantong sa paglitaw ng parami nang parami ng mga bagong klase ng mga problema. Nangangailangan din ito ng patuloy na pagsubaybay at interpretasyon ng mga mekanika ng gumagamit.
  • Mayroong ilang mga kadahilanan na patuloy na nakakaapekto sa pagganap ng isang application. Halimbawa, ang mga bagong release mula sa mga developer: pagsasara ng kasalukuyang problema, hindi nila sinasadyang ibalik ang luma o lumikha ng isang ganap na bago. Sa paglipas ng panahon, dumarami ang bilang ng mga bagong release, at kailangang awtomatiko ang proseso ng pagsubaybay sa mga error, kasama ang pagsusuri sa mga trajectory ng user.

Sa pangkalahatan, ang Retentioneering ay isang epektibong tool. Ngunit walang limitasyon sa pagiging perpekto - maaari at dapat itong pagbutihin, binuo, at mga bagong cool na produkto na binuo sa batayan nito. Kung mas aktibo ang komunidad ng proyekto, mas maraming mga tinidor ang magkakaroon, at lalabas ang mga bagong kawili-wiling opsyon para sa paggamit nito.

Higit pang impormasyon tungkol sa mga tool sa Retentioneering:

Pinagmulan: www.habr.com

Magdagdag ng komento