Расчет Monthly Recurring Revenue (MRR) в Python

Что такое Monthly Recurring Revenue?

Monthly Recurring Revenue — регулярный месячный доход. Эта метрика применяется в основном в подписных моделях. При этом сам доход нужно привести к месяцам.

Почему это ценно?

Если у нас есть подписной сервис мы имеем регулярныее или периодические платежи, то мы можем понять сколько денег мы заработаем и насколько наш бизнес эффективен. Далее, мы можем увеличить MRR за счет перехода клиентов на более дорогой тариф или попробовать снизить отток клиентов.

Читать далее

Когортный анализ в Python

Когортный анализ
Когортный анализ

Что такое когортный анализ?

Когортный анализ заключается в исследовании характеристик когорт/винтажей/поколений, объединенных по общим временным признакам.

Когорта/винтаж/поколение — это группа, сформированная особым образом по временному признаку: например, месяцу регистрации, месяцу первой транзакции или первого посещения сайта. Когорты очень похожи на сегменты с тем отличием, что когорта объединяет группы определенного промежутка времени, в то время как сегмент может быть основан на любых других характеристиках.

Почему это ценно?

Такой анализ может быть полезен, когда речь заходит о понимании здоровья вашего бизнеса и «липкости» — лояльности ваших клиентов. «Липкость» имеет решающее значение, так как гораздо дешевле и проще удерживать клиента, чем приобретать новых. Кроме того, ваш продукт развивается с течением времени. Новые функции добавляются и удаляются, измененяется дизайн и т. д. Наблюдение отдельных групп с течением времени является отправной точкой для понимания того, как эти изменения влияют на поведение пользователя/группы.

Читать далее

RFM анализ в Python

В моём телеграм канале я запустил новую рубрику — task. Суть рубрики — Я публикую задание каждый вторник с постановкой задачи и ссылкой на данные. Код с описанием хода решения задачи я размещаю в четверг. Задачи сделаны так, что бы на их решение нужно потратить не более пары часов. Подробный пост — https://t.me/renat_alimbekov/71

Постановка задачи

Первая задача — сделать RFM-анализ. Он делит пользователей на сегменты в зависимости от давности (Recency), частоты (Frequency) и общей суммы платежей (Monetary).

  • Recency — разница между текущей датой и датой последнего платежа
  • Frequency — количество транзакций
  • Monetary — сумма покупок

Эти три показателя нужно рассчитать отдельно для каждого покупателя. После чего поставить оценки от 1-3 или 1-5. Чем шире диапазон, тем более узкие сегменты у нас получатся.

Баллы можно выставить с использованием квантилей. Сортируем данные по одному из критериев и делим на равныегруппы.

Для этой задачи используем публичный датасет: https://www.kaggle.com/olistbr/brazilian-ecommerce и файлы olist_orders_dataset.csv и olist_order_payments_dataset.csv. Соединить их можно по order_id.

Читать далее

Выбираем логирование в Python: logging vs loguru

В этой заметке мы попробуем выбрать библиотеку для логирования в Python. Логи помогают зафиксировать и понять, что пошло не так в работе вашего микросервиса. Так же в логи часто пишут информационные сообщения. Например: параметры, метрики качества и ход обучения модели. Пример куска лога обучения модели:

Пример куска лога обучения модели
Пример куска лога обучения модели

Читать далее

Machine learning в продакшн — Flask REST API

Обученная модель машинного обучения сама по себе пользу бизнесу не принесет. Модель должна быть интегрирована в IT инфраструктуру компании. Рассмотрим реализацию REST API микросервиса на примере задачи классификации цветов Ирисов. Набор данных состоит из длины и ширины двух типов лепестков Ириса: sepal и petal. Целевая переменная — это сорт Ириса: 0 — Setosa, 1 — Versicolor, 2 — Virginica.

Сохранение и загрузка модели

Прежде чем переходить к реализации нашего API надо обучить и сохранить модель. Возьмем модель RandomForestClassifier. Теперь сохраним модель в файл и загрузим, чтобы делать прогнозы. Это можно сделать с помощью pickle или joblib. Рассмотрим pickle, вариант с joblib останется для самостоятельного разбора.

import pickle filename = 'model.pkl' 
pickle.dump(clf, open(filename, 'wb'))

Для загрузки и проверки модели воспользуемся pickle.load

loaded_model = pickle.load(open(filename, 'rb')) 
result = loaded_model.score(X_test, y_test)
print(result)

Код обучения, сохранения и загрузки модели доступен в репозитории — ссылка

Читать далее