Месяц: Август 2017

Log-трансформация денежных переменных

Log-трансформация денежных переменных

Данные, имеющие денежную природу, оставляют существенную часть маркетинговых датасетов — это покупки, доходы, траты, остатки, LTV и прочее. При том работать с этими данными часто не очень удобно — у них как правило ассиметричное (ненормальное) распределение с невыровненной вариацией, сильно скошенное вправо, и явно нелинейно (мультипликативно) по своей природе. Это сразу усложняет использование таких популярных интерпретируемых моделей как линейная и логистическая регрессия, затрудняет визуализацию.

В работе с такого рода данными обычно применяют трансформации, т.е. преобразования данных, в результате которых они становятся «нормально»-распределенными. Обобщая, можно выделить два базовых подхода:

  1. Двух-параметрическая трансформация Box-Cox, частными случаями которой являются популярные транформации логарифм и квадратный корень
  2. Гиперболический арксинус (IHS, inverse hyperbolic sine)

Эти транформации кратко но емко (применительно к нашей задаче) описаны например тут.

Для работы с денежными данными логично выбрать лог-трансформацию вида log10(1+x).

  • Десятка в основании логарифма используется для удобства, деньги привыкли округлять степенями 10-ки (тысячи, миллионы, кому как удобней).
  • добавляя единицу к переменной мы решаем пробему нулевых данных (0 рублей), как известтно логарифм нуля = минус бесконечность. Добавив же единичку, мы не сильно испортили «вид» трансформированных данных, но преобразование 0 по такой формуле приводит к нулю, логарифм 1 = 0.

Итак, мы решили задачу «нормализации», разобрались как корректно учесть 0, а как быть с отрицательными велиинами, например отрицательный денежный поток или убыток или овердрафт на счете? Помочь нам может так называемый «логарифм со знаком» или signed log. Все очень просто — мы «вытаскиваем» знак наружу из-под логарифма, [т.е. буквально log(-5) -> -log(5)], не забывая при этом корректно обрабатывать ноль. Итого мы получаем итогое преобразование вида:

sign(x) * log10(1+abs(x))

которое можно копировать например в R и начинать новую жизнь с денежными переменными

i_hate_math_will_make_you_mad2

Моделирование маркетинг микса: начинаем с оптимизации бюджета

Моделирование маркетинг микса: начинаем с оптимизации бюджета

Jessica Langford из Adobe Global Consulting рассказывает как оптимизировать бюджет на рекламную активность в простом случае — имейл рассылки, один канал,  прозрачные затраты и доходы. На всякий случай — оптимизировать означает не уменьшить, а именно оптимизировать, что совсем не одно и то же, как мы убедимся.

Из интересного:

  • Почему не стоит использовать линейную регрессию на линейно выглядящих данных в данном случае? Например потому что эффективность маркетинга не может расти бесконечно )
  • Как учесть другие реалии маркетинга типа насыщения рынка, падения эффективности рекламы и пр.? Использовать модели убывающей доходности (diminishing return), например в случае рекламы (для стабильных рынков) часто используют нелинейную модель ADBUDG
  • Использование оптимизационных возможностей R, как класса, на примере простой функции nlminb() встроенного пакета {stats}

 

 

Как вычислить ботов в трафике сайта

Как вычислить ботов в трафике сайта

Уже знакомый нам Тревор Полсен из Адобе Маркетинг Клауд проделал упражнения на идентификацию ботов для фильтрации из базовой аналитики сайтов.

Проблема ботов, на самом деле, чрезвычайно актуальна везде, включая Россию. Согласно отчету за 2016 год  Imperva Incapsula, для сайтов с дневным трафиком от 100K пользователей, около трети этого трафика на самом деле формируют боты.

Ботов автор в свою очередь подразделяет на:

  1. Простых и тупых, которые просто сгружают контент веб-страниц, даже не выполняя скрипты (java script) на странице, и кстати таким образом не попадающие в некоторые системы аналитики.
  2. Хороших, например поисковые машины, мониторинги сайтов, агрегаторы и др. Эти боты умные, скрипты выполняют, и честно про себя рассказыват — т.е. отдают в идентификаторах UA (user agent, человеко-читаемая строка идентификатора браузера) информацию про себя.
  3. Плохих. Эти шифруются, прячут идентификаторы включая айпишники, ну или просто нагло врут. Большая часть таких ботов — это имперсонаторы, используются для наркуток рекламы или DDoS атак, кроме того это спаммеры, воришки контента, хакерские радары и пр.

Большинство индустриальных (платных) систем аналитики позволяют автоматически отфильтровывать таких роботов, есть специализированные сервисы в том числе в России, а например IAB поддерживает актуальный список индетификаторов ботов, на который можно подписаться за какие-то $14,000 в год.

В общем, если пользоваться сильно-платными опциями не хочется, или нужно самостоятельно поработать с трафиком за пределами функционала традиционной веб-аналитики, можно начать с подхода, описанного в статье.

Из интересного —  забавное использование линейной регресии, в частности праметра R2 (r squared) для вычисления «нечеловечески линейной регулярности» в данных. А также уже упоминавшееся использование R библиотеки sparklyr, которая позволяет из R управлять работой SPARK кластера, что безусловно понадобится если работу в ботами ставить в продакшен. Кстати, такой кластер можно так же просто поднимать в облаке Google Cloud Dataproc, что в совокупности с размещением RStudio в Google Could позволяют создать замечательную масштабируемую под задачи архитектуру data science в облаке, с минимизацией DevOps (если понятно сильно меньше 50% слов, обращайтесь в Brand Mobile, поможем)

Алгоритмы машинного обучения с высоты птичьего полета

Алгоритмы машинного обучения с высоты птичьего полета

Неплохой обзор основных инструментов, сгруппированный по типам, с указанием плюсов, минусов, и особенностей примерения, опубликован в паре статей на сайте со странным названием elitedatascience.com. Актуальность такого рода публикаций четко задатся картинкой (выше) с того же сайта, озаглавленной «Теорема No Free Lunch»: не существует алгоритма, одинаково подходящего для разных задач, на разных наборах данных, решаемых с разными целями. Про цели — например может потребоваться интерпретируемость модели, т.е. надо понимать как она работает, какие факторы на что влияют, а это сильно сокращает возможный набор алгоритмов. Кроме того есть довольно много технических особенностей — какие-то алгоритмы плохо масштабируются по производительности или требуемому объема пямяти с ростом количества данных или их размерности, или плохо работают в условиях разреженных данных (когда много пропусков по некоторым переменным) и пр.

В общем, выбор и настройка алгоритма — отдельная задача, тем более что один только пакет CARET языка R предоставляет доступ к 232 вариантам алгоритмических моделей. Начать в ней разбираться можно с этой статьи. Продолжить чтение «Алгоритмы машинного обучения с высоты птичьего полета»

Метрики: формулы vs смысл на примере LTV:CAC

Метрики: формулы vs смысл на примере LTV:CAC

Никогда не бойтесь спрашивать «а как вы считаете LTV?»,  это же применимо ко многим другим метрикам.

На всякий случай — LTV, оно же CLV, customer lifetime value — пожизненная стоимость клиента, сколько мы рассчитываем на нем заработать за все время; CAC это Customer Acquisition Cost, стоимость привлечения клиента.

Сложные метрики, как правило, транслируют некоторый смысл, обычно завёрнутый в определенную методологию. А реализация данного смысла согласно методологии, в разных индустриях и способах организации бизнеса (маркетинга, продаж), — может быть выполнена абсолютно по разному. Соответственно формулы получаются разные. Поэтому взять формулу расчета LTV из Википедии и начать все по ней считать налево и направо — вредно! И когда вам показывают цифру — обязательно спросите как ее посчитали. Не стесняйтесь.

Товарищи из lab.openview (около-венчурная история) рассказывают почему неправильно всегда пользоваться правилом 3x LTV:CAC и как устроен LTV в бизнесах по контрактной подписке (SaaS), что вполне обобщается на другие бизнес модели. Почему все в конечном итоге скатывается к работе в рамках когорт (на самом деле — фиксация параметров модели),  как выглядит отток (churn) в реальной жизни (подсказка — у него скорость уменьшается, пока не уйдет в ноль, и останутся только ваши пожизненные клиенты, т.н. lifer-ы), и таки как стоит сравнивать LTV с CAC

 

McKinsey’s State Of Machine Learning And AI, 2017

McKinsey’s State Of Machine Learning And AI, 2017

McKinsey опубликовал объемное исследование Artificial Intelligence, The Next Digital Frontier в котором оценил уровень развития AI и машинного обучения, а также их влияние на те или иные индустрии.

В таблице ниже собран уровень применения различных прикладных реаизаций AI в разных индустриях (по веритикали), с декомпозицией на бизнес-составляющие (по горизонтали). Две колонки справа, Promote и отчасти Provide, можно отнести к маркетингу.

1

А дальше самое интересное, какой экономический эффект можно получить при исопльзовании AI. Строчки и колонки те же.

10-50%% эффект в отдельных индустриях. $10 триллионов в Healthcare.

+1 год средней продложительности жизни, как это оценить в деньгах?

1

 

Визуализация многомерных ML-данных c помощью Facets

Визуализация многомерных ML-данных c помощью Facets

Вообще задача визуализации многомерных данных — большая и важная сама по себе. В случае работы с данными для машинного моделирования есть дополнительные требования, например выявление разреженных матриц или переменных, отсутсвующие или нулевые значения, квази-постоянные значения и прочее, влияющее на эффективность, а иногда и принципиальную работоспособность ML-алгоритмов.

Товарищи из Google Research выпустили в исходных кодах инструмент Facets, состоящий из двух частей:

  1. Facets Overview
    image3
  2. Facets Dive
    image1

По картинкам более-менее понятно что инструмент делает. Полезно. Может использоваться внутри Jupyter ноутбуков.