Retentioneering: як ми open-source інструменти для продуктової аналітики на Python і Pandas написали

Привіт Хабр. Ця стаття присвячена підсумкам чотирирічної розробки набору методів та інструментів обробки траєкторій руху користувачів у додатку або на сайті. Автор розробки - Максим Годзі, який стоїть на чолі команди авторів товару, він же - автор статті. Сам продукт отримав назву Retentioneering, зараз він перетворений на open-source бібліотеку і розміщений на Github, щоб кожен бажаючий міг ним скористатися. Все це може бути цікаво тим, хто пов'язаний з продуктовим та маркетинговим аналізом, просуванням та розвитком продукту. До речі, на Хабрі вже публікувалася стаття про один із кейсів роботи з Retentioneering. У новому матеріалі розповідається про те, на що здатний продукт та як його можна використовувати.

Прочитавши статтю, ви самі зможете написати свій Retentioneering, ним може стати будь-який стандартизований метод обробки траєкторій користувачів у додатку і за його межами, що дозволяє детально побачити особливості поведінки і витягти з цього інсайти для зростання бізнес-метрик.

Що таке Retentioneering та навіщо це потрібно?

Спочатку нашою метою було перевести Growth Hacking зі світу «цифрового знахарства» у світ цифр, аналітики та прогнозів. Як наслідок — зведення продуктової аналітики до чистої математики та програмування для тих, хто замість фантастичних історій віддає перевагу цифрам, а формулам — розумним слівцям на кшталт «ребрендинг», «репозиціонування» тощо, які гарно звучать, але на практиці допомагають мало.

Для вирішення зазначених завдань знадобився фреймворк для аналітики через графи та траєкторії, і водночас бібліотека, що спрощує типові рутини аналітика, як спосіб опису регулярних завдань продуктової аналітики, який був би зрозумілий як людям, так і роботам. Бібліотека надає можливість описувати поведінку користувачів та пов'язувати його з бізнес-метриками продукту такою формальною та ясною мовою, щоб спростити та автоматизувати рутинні завдання розробників та аналітиків, та полегшити їх комунікацію з бізнесом.

Retentioneering — метод та аналітичні програмні інструменти, які можна адаптувати та інтегрувати у будь-який цифровий (і не тільки) продукт.

Ми розпочали роботу над продуктом у 2015 році. Зараз це вже готовий, хоча поки що не ідеальний набір інструментів на Python і Pandas для роботи з даними, моделі машинного навчання з sklearn-like api, інструменти інтерпретації результатів моделей машинного навчання eli5 та shap.

Все це загорнуте у зручну open-source бібліотеку у відкритому репозиторії Github — retentioneering-tools. Використовувати бібліотеку нескладно, практично будь-яка людина, яка любить продуктову аналітику, але не писала раніше код, може застосувати наші методи аналітики до своїх даних самостійно і без значних витрат часу.

Ну а програміст, творець програми або член команди розробки або тестування, який ніколи раніше не займався аналітикою, може почати грати з цим кодом і побачити патерни використання свого додатка без сторонньої допомоги.

Траєкторія користувача як базовий елемент аналізу та методи її обробки

Траєкторія користувача – послідовність станів користувача у певних часових точках. Причому події можуть бути з різних джерел даних, як онлайн, так і офлайн. Події, що трапилися з користувачем, є частиною його траєкторії. Приклади:
• натиснув кнопку
• побачив картинку
• потрапив на екран
• отримав мейл
• порадив продукт другові
• заповнив форму
• топнув екран
• проскролив
• підійшов до каси
• замовив буріто
• з'їв буріто
• отруївся з'їденим буріто
• зайшов у кафе з чорного входу
• зайшов із парадного входу
• згорнув програму
• отримав пуш повідомлення
• тупив на екрані довше часу Х
• сплатив замовлення
• викупив замовлення
• отримав відмову у кредиті

Якщо взяти дані траєкторій групи користувачів і вивчити, як влаштовані переходи, можна простежити, як будується їх поведінка в додатку. Це зручно зробити через граф, у якому стани – вузли, а переходи між станами – ребра:

Retentioneering: як ми open-source інструменти для продуктової аналітики на Python і Pandas написали

"Траєкторія" дуже зручне поняття - вона містить детальну інформацію про всі дії користувача, з можливістю додавання будь-яких додаткових даних в опис цих дій. Це робить його універсальним об'єктом. Якщо у вас є гарні та зручні інструменти, які дозволяють працювати з траєкторіями, то можна знаходити подоби, сегментувати їх.

Сегментація траєкторій спочатку може здатися чимось складним. У звичайній ситуації так і є – потрібно використовувати порівняння матриць зв'язності чи вирівнювання послідовностей. Нам вдалося знайти простіший спосіб — вивчати велику кількість траєкторій та сегментувати їх через кластеризацію.

Як виявилося, можна перетворювати траєкторію на точку за допомогою безперервних уявлень, наприклад, TF-IDF. Після перетворення траєкторія стає точкою в просторі, де по осях відкладено нормовану зустрічальність у траєкторії різних подій і переходів між ними. Цю штуку з величезного тисячо-і більш мірного простору (dimS = sum (event types) + sum (ngrams_2 types)), можна спроектувати на площину за допомогою ЦНЕ. TSNE - перетворення, знижує розмірність простору до 2 осей і наскільки можна зберігає відносні відстані між точками. Відповідно, стає можливим на плоскій карті, образній проекційній карті траєкторій, вивчати як розташовувалися між собою точки різних траєкторій. Аналізується, наскільки вони були близькими чи різними між собою, чи утворювали кластери чи розсіювалися по карті тощо:

Retentioneering: як ми open-source інструменти для продуктової аналітики на Python і Pandas написали

Аналітичні інструменти Retentioneering дають можливість перетворити масив складних даних та траєкторій на уявлення, яке можна порівняти між собою, а потім дослідити та інтерпретувати результат перетворення.

Говорячи про стандартні методи обробки траєкторії, маються на увазі три основні інструменти, які ми реалізували в Retentioneering - графи, step матриці та карти проекцій траєкторій.

Робота з Google Analytics, Firebase та подібними системами аналітики досить складна та не на 100% ефективна. Проблема в ряді обмежень для користувача, в результаті чого робота аналітика впирається в таких системах у кліки мишкою та вибір зрізів. Retentioneering дає можливість працювати з траєкторіями користувачів, а не тільки з лійками, як у Google Analytics, де рівень деталізації часто зводиться до лійки, нехай і побудованої для якогось сегменту.

Retentioneering та кейси

Як приклад використання розробленого інструменту можна навести кейс великого нішевого сервісу Росії. Ця компанія має мобільний додаток для Android, який користується популярністю у клієнтів. Щорічний оборот з мобільного додатка становив близько 7 млн ​​руб., сезонні флуктуації в рамках 60-130 тис. У цієї ж компанії є і додаток для iOS, і середній чек користувача «яблучного» додатка був вищим за середній чека клієнта, що використовує Android-додаток. 1080 руб. проти 1300 руб.

Компанія вирішила збільшити ефективність Android-програми, для чого провела його ретельний аналіз. Було сформовано кілька десятків гіпотез збільшення результативності докладання. Після використання Retentionneering виявилося, що проблема в повідомленнях, які демонструвалися новим користувачам. Вони отримували інформацію про бренд, переваги компанії та ціни. Але, як виявилося, повідомлення повинні допомогти користувачеві навчитися працювати в додатку.

Retentioneering: як ми open-source інструменти для продуктової аналітики на Python і Pandas написали

Це і було зроблено, в результаті чого додаток стали менше видаляти, а зростання конверсії на замовлення склало 23%. Спочатку на тест віддали 20 відсотків вхідного трафіку, але за кілька днів, проаналізувавши перші результати і оцінивши тренд — дзеркально змінили пропорції і, навпаки, залишили 20 відсотків контрольної групи, а вісімдесят помістили в тест. Ще за тиждень було ухвалено рішення послідовно додати тестування ще двох гіпотез. Усього через сім тижнів оборот з Android-додатку збільшився у півтора рази щодо минулого рівня.

Як працювати з Retentioneering?

Перші кроки досить прості – завантажуємо бібліотеку командою pip install retentioneering. У репозиторії лежать готові приклади і кейси обробки даних деяких завдань продуктової аналітики. Набір постійно поповнюється, поки його достатньо першого знайомства. Кожен може взяти готові модулі і одночасно застосувати до своїх завдань - це дозволяє відразу налаштувати процес більш детального аналізу та оптимізації користувальницьких траєкторій максимально швидко та ефективно. Все це дає можливість знаходити патерни використання програми через зрозумілий код та передавати цей досвід колегам.

Retentioneering - інструмент, який варто використовувати протягом усього терміну життя програми, і ось чому:

  • Retentioneering ефективний для відстеження та безперервної оптимізації користувальницьких траєкторій та покращення бізнес-показників. Так, в ecommerce програми часто додаються нові функції, вплив яких на продукт не завжди можна передбачити правильно. У деяких випадках виникають проблеми сумісності нових і старих функцій - наприклад, нові "канібалізують" вже існуючі. І в цій ситуації потрібний постійний аналіз траєкторій.
  • Аналогічна ситуація і в роботі з рекламними каналами: постійно тестуються нові джерела трафіку та рекламні креативи, необхідно відстежувати сезонність, тренди та вплив інших подій, що призводить до появи нових класів проблем. Тут теж потрібне постійне відстеження та інтерпретація користувальницьких механік.
  • Є ціла низка факторів, які постійно впливають на роботу програми. Наприклад, нові релізи від розробників: закриваючи актуальну проблему, вони мимоволі повертають стару чи створюють нову. Згодом кількість нових релізів зростає, і процес відстеження помилок необхідно автоматизувати, зокрема, за допомогою аналізу траєкторій користувачів.

Загалом, Retentioneering – ефективний інструмент. Але межі досконалості немає — її можна і потрібно покращувати, розвивати, будувати на її основі нові класні продукти. Чим активніше комьюніті проекту, тим більше буде форків, з'являться нові цікаві варіанти його використання.

Додаткова інформація про інструменти Retentioneering:

Джерело: habr.com

Додати коментар або відгук