Метка: ML

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

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

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

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

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

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

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

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

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

  1. Facets Overview
    image3
  2. Facets Dive
    image1

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

 

Моделирование конверсий на данных из Adobe Analytics

Моделирование конверсий на данных из Adobe Analytics

Простой пример  от Trevor Paulsen (Adobe Data Science + Adobe Analytics) как смоделировать вероятность конверсии потребителя в целевое действие. Фактически, статья состоит из двух (на самом деле не сильно связаных) частей. Первая — собственно моделирование логистической регресии на языке R на данных из веб статистики. Вторая — использование функции Segment Compare пакет Adobe Analytics для понимания чем «сконвертировавшиеся» потребители отличаются от «не-сконвертировавшихся».

На мой взгляд, статья в которой баланс «простота vs достоверность» уверенно скатился в простоту. Пройдемся по примеру  Продолжить чтение «Моделирование конверсий на данных из Adobe Analytics»

Как выбрать метод машинного обучения?

Как выбрать метод машинного обучения?

Программное обеспечение и вычислительные мощности для машинного обучения сегодня недороги и общедоступны. Однако на первом же шаге возникает проблема — как выбрать правильный для вашей задачи метод?

Есть довольное больше количество статей и обсуждений на эту тему, однако начать можно с простой картинки в заголовке статьи. Названия конкретных методов/пакетов могут содержать некоторую специфику библиотеки Scikit для языка Pyton, но в целом универсальны

Аналогичная картинка от компании Microsoft содержит несколько больше деталей

machine-learning-algorithm-cheat-sheet-small_v_0_6-01

Любителям языка R имеет смысл посмотреть на пакет Caret , который в том числе позволяет легко комбинировать имеющиеся в его распоряжении 233 метода машинного обучения, сравнивать их эффективность на ваших данных, и выбирать лучший.