Мы уже рассматривали модель экспоненциального распределения, где я рассказал о возможностях его применения для аналитики спортивных тренировок в QlikView, но сегодня я хочу рассказать, как использовать ее для аналитики потребительского поведения. Итак, все подробности ниже.

Отток клиентов: статистическая модель

Предположим ситуацию, что клиент ничего не купил в последние пять дней, а вероятность того, что он совершит покупка в пять дней или меньше варьируется от 70% и 95%, тогда мы можем классифицировать его как рискового клиента, которого можем вскоре потерять. Если по вероятности он должен сделать покупку через 8 дней или меньше, то вероятность равна 95% и, клиент продолжает отсутствовать, тогда мы определяем его как потерянный клиент через 8 дней. Я использовал в этом примере дни, но мы можем также использовать минуты, часы, недели или месяцы.

Выполнить аналитику частоты покупок можно проще, если мы создадим поле в модели данных, которое рассчитывает временной интервал между активностью клиента. Для этого примера я использую файл Excel. В скрипте я загружаю данные из файла Excel и создаю новое поле, которое содержит количество дней, которое прошло с последнего момента покупки. Для этого я использую функцию Peek(), чтобы добавить новые данные в поле с данными о потребительской активности. Здесь пока рассмотрю на примере прошлых данных по моим привычкам и частоте физических нагрузок.

 

Так, у меня есть несколько привычек, таких как чтение и физ. нагрузки. Посчитаем дни между одинаковым видом деятельности. Сортирую таблицу по полю активность. Аналогичную процедуру можно выполнить по аналитике потребительского поведения и частоты покупок.

График

Построим гистограмму, где по оси X будет показано актуальное поведение. Если вы создали гистограмму в QlikView, вы использовали для вычисляемого измерения функции class() или round(). Рекомендую использовать именно такую простую гистограмму для этого примера. Далее мы добавим два распределения, поэтому создадим вычисляемое измерение с функцией valueloop().

Также как valuelist(), функция valueloop() используется для спонтанного создания значений данных в объекте QlikView.

Функция valuelist() создает набор дискретных элементов, а функция valueloop() создает непрерывный числовой ряд. Он состоит из трех параметров. Первые два определяют начальное и конечное значение набор значений. Последний параметр определяет размер шага между немимическими значениями. Например, valueloop(1, 10, 1) создает такой набор чисел {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Valueloop(1, 2, .1) создает такой набор {1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2}.

В нашем графике используется следующее вычисляемое измерение:

=ValueLoop(0, $(=max([Days Between Activity])) + 2, .01)

Начальное значение всегда 0. При этом конечное значение динамическое и всегда меняется, согласно максимальному количеству дней между активностью.  ValueLoop() не позволяет использовать функции агрегирования в качестве параметра, поэтому мы будем использовать значок доллара внутри статичное значение до того как QlikView обработает функцию valueloop().

Также у нас есть два части, которые помогут нам визуализировать выражения экспоненциального распределения. В первой части мы добавляем 2 к конечному значению, чтобы экстраполировать экспоненциальное распределение к высшему значению точки данных.  Шаг вы можете изменить, на любое другое значение.

Во второй части мы определяем шаг в .01 в функции valueloop(). Количество дней между активностями всегда будет целым (ie. 1, 2, 3, …). Мы могли бы определить шаг в 1, если мы только создавали гистограмму по актуальным данным. Однако мы будем рассчитывать и экспоненциальное распределение. http://poverconsulting.com/wp-content/uploads/2017/03/_d_improd_/Example_Exponential_Curve_Clunky_f_improf_550x323.jpg

Сглаживание кривых реализуем с помощью функции valueloop() на .01.

Выражение – Часть 1

Активность представлена столбцами гистограммы.

 

Функция ValueLoop() делает восприятия скрипта более сложным, чем он есть на самом деле. Вычисляемое измерение не имеет поля с названием, поэтому ссылаемся на него с помощью того же выражения, которое мы использовали, чтобы определить его

Мы определили для valueloop() шаг в .01. Поскольку количество дней между активность у нас всегда целое, мы используем в функции valueloop() ближайшее целое значение ceil().

Оси

Далее настроим отображение осей гистограммы на беспрерывную во вкладке оси в настройках представления визуализации данных.

http://poverconsulting.com/wp-content/uploads/2017/03/_d_improd_/ContinuousX_f_improf_519x242.jpg

В итоге у нас получится такая гистограмма:

.

http://poverconsulting.com/wp-content/uploads/2017/03/_d_improd_/Example_Histogram_f_improf_550x328.jpg

Выражения – Часть 2

Добавляет экспоненциальное распределение.

Формула в QlikView примет вид: 

1/avg([Days Between Activity])

* exp(-1/avg([Days Between Activity])

* ValueLoop(0, $(=max([Days Between Activity])) + 2, .01))

Второе выражение имеет такой формат:

=1 – exp(-1/avg([Days Between Activity])

* ValueLoop(0, $(=max([Days Between Activity])) + 2, .01))

Вот, что мы получим на выходе:

https://i0.wp.com/poverconsulting.com/wp-content/uploads/2017/02/Example_Exponential_Curve.jpg?zoom=1.25&resize=438%2C258

Скачать файл Excel и файл с решением QlikView.

Дэшборд по продажам

Для оценки рисковых клиентов мы будем использовать кумулятивное распределение.

=if(1 – exp(-1/avg([Days Between Purchases])

* [Days Since Last Purchase]) > .75

, red()

)

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

http://poverconsulting.com/wp-content/uploads/2017/03/_d_improd_/At-Risk_Customers_f_improf_298x172.png

Вот и все на сегодня! Отличных вам разработок Qlik.