Мы уже рассматривали модель экспоненциального распределения, где я рассказал о возможностях его применения для аналитики спортивных тренировок в QlikView, но сегодня я хочу рассказать, как использовать ее для аналитики потребительского поведения. Итак, все подробности ниже.
Отток клиентов: статистическая модель
Предположим ситуацию, что клиент ничего не купил в последние пять дней, а вероятность того, что он совершит покупка в пять дней или меньше варьируется от 70% и 95%, тогда мы можем классифицировать его как рискового клиента, которого можем вскоре потерять. Если по вероятности он должен сделать покупку через 8 дней или меньше, то вероятность равна 95% и, клиент продолжает отсутствовать, тогда мы определяем его как потерянный клиент через 8 дней. Я использовал в этом примере дни, но мы можем также использовать минуты, часы, недели или месяцы.
Выполнить аналитику частоты покупок можно проще, если мы создадим поле в модели данных, которое рассчитывает временной интервал между активностью клиента. Для этого примера я использую файл Excel. В скрипте я загружаю данные из файла Excel и создаю новое поле, которое содержит количество дней, которое прошло с последнего момента покупки. Для этого я использую функцию Peek(), чтобы добавить новые данные в поле с данными о потребительской активности. Здесь пока рассмотрю на примере прошлых данных по моим привычкам и частоте физических нагрузок.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Habits_tmp: LOAD Date, Activity FROM Daily_Habits_Data.xlsx (ooxml, embedded labels, table is Sheet1); Habits: Load Date, Activity, if(Peek(Activity)=Activity,Date - Peek(Date)) as [Days Between Activity] Resident Habits_tmp order by Activity, Date; DROP Table Habits_tmp; |
Так, у меня есть несколько привычек, таких как чтение и физ. нагрузки. Посчитаем дни между одинаковым видом деятельности. Сортирую таблицу по полю активность. Аналогичную процедуру можно выполнить по аналитике потребительского поведения и частоты покупок.
График
Построим гистограмму, где по оси 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, если мы только создавали гистограмму по актуальным данным. Однако мы будем рассчитывать и экспоненциальное распределение.
Сглаживание кривых реализуем с помощью функции valueloop() на .01.
Выражение – Часть 1
Активность представлена столбцами гистограммы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
sum( if([Days Between Activity] = Ceil( ValueLoop(0, $(=max([Days Between Activity])) + 2, .01) ) ,1) ) / count([Days Between Activity]) |
Функция ValueLoop() делает восприятия скрипта более сложным, чем он есть на самом деле. Вычисляемое измерение не имеет поля с названием, поэтому ссылаемся на него с помощью того же выражения, которое мы использовали, чтобы определить его
Мы определили для valueloop() шаг в .01. Поскольку количество дней между активность у нас всегда целое, мы используем в функции valueloop() ближайшее целое значение ceil().
Оси
Далее настроим отображение осей гистограммы на беспрерывную во вкладке оси в настройках представления визуализации данных.
В итоге у нас получится такая гистограмма:
.
Выражения – Часть 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))
Вот, что мы получим на выходе:
Скачать файл Excel и файл с решением QlikView.
Дэшборд по продажам
Для оценки рисковых клиентов мы будем использовать кумулятивное распределение.
=if(1 — exp(-1/avg([Days Between Purchases])
* [Days Since Last Purchase]) > .75
, red()
)
Так, для аналитики оттока клиентов принцип создания гистограммы, аналогичен принципу анализа личных привычек и активности. Лишь один момент, который хочется добавить, который стоит подчеркнуть в аналитики клиентов на дэшболрде. Для выборки рисковых клиентов воспользуемся выделением цветом ячеек.
Вот и все на сегодня! Отличных вам разработок Qlik.
Свежие комментарии