Кластеризація: розкажи мені, що ти купуєш, і я скажу хто ти



Завдання Datawiz.io: провести кластеризацію клієнтів програми лояльності в ритейлі.

Кластеризація — це метод пошуку закономірностей, призначений для розбиття сукупності об'єктів на однорідні групи (кластери) або пошуку існуючих структур даних.

Метою кластеризації є отримання нових знань. Це як «знайти скарб у власному підвалі».

Для чого це потрібно компаніям? Щоб краще пізнати своїх клієнтів. Щоб знайти індивідуальний підхід до кожного клієнта, а не працювати з усіма однаково.

Незважаючи на те, що багато компаній використовують програми лояльності і володіють колосальними даними, їх аналітики спочатку визначають персону покупця, а вже потім аналізують її поведінку.

Рішення: Machine Learning дозволяє піти від зворотного, від особистих переваг — до персони. Ми в Datawiz.io використовуємо кластеризацію як метод групування клієнтів за даними про їх поведінці — покупках, банківських транзакціях, кредитних історіях.

Для кластеризації масиву даних (чеки, дані по програмах лояльності) ми використовуємо алгоритм K-means. Він добре масштабується і оптимізується під Hadoop.

Також як альтернативу можна використовувати алгоритм Affinity Propagation. Звичайно, у нього є ряд істотних недоліків: він повільний і погано масштабується. Але в окремих випадках, за бажання та наявності вільного часу, можна використовувати його для кластеризації на коротких проміжках часу.

Отже, покроково.

1. Clean Datа.
Перш ніж формувати матрицю — в обов'язковому порядку чистимо інформацію. Прибираємо те, що не впливає на поведінку покупців і є інформаційним шумом. Для рітейлерів, наприклад, можна виключити рекламну продукцію, видані дисконтні картки, скретч-картки, тару і пакети, що купуються на касі. Після того як дані очищені приступаємо до формування матриці.

2. Формуємо матрицю з вхідними даними.
Важливо: Результати кластеризації дуже залежать від періоду часу, на якому вона проводиться. Якщо виберемо лагідний період — побачимо поточні тренди.

Наприклад, провівши кластеризацію перед Новим роком, побачимо кластери, які не видно на тривалому проміжку часу. (Скажімо, кластер «Любителі „Олів'є“ та „Оселедця під шубою“). Кластеризація за тривалий період дозволить побачити картину в цілому, тобто клієнтів зі стабільною поведінкою (»лайфстайл"). «Студенти», «Домогосподарки», «Пенсіонери» і т. д.

Наприклад, рітейлер хоче провести кластеризацію за програмою лояльності за півроку.
Біля магазину є чеки Васі, який за півроку купив 1 хліб, 2 молока і 1 батон; і чеки Олі — вона купила 3 хліба, 5 молока і 2 батона за півроку і т. д.

Значить матриця для цього рітейлера буде виглядати так:


Для рітейлера в середньому, features = 15 тис. SKU, а samples = 60 тис. клієнтів.

Візьмемо кожного клієнта окремо, наприклад Васю з усіма його чеками за півроку. В залежності від кількості входжень всіх товарів по всіх чеках, розмістимо Васю (та інших) на графіку, де:

кількість осей = кількістю товарів (features),

кількість точок = кількістю клієнтів (samples), які беруть участь у програмі лояльності.

Наочне (і дуже схематичне:) зображення:


Але виглядати результат алгоритмом кластеризації k-means буде так:


Також можна проводити кластеризацію на різних рівнях категоризації товарів (feature reduction), тоді матриця буде виглядати так:


Після того, як матриця сформована, можна переходити до вибору кількості кластерів.

3. Вибираємо оптимальну кількість кластерів.
Кількість кластерів ми вибираємо експериментальним шляхом, виходячи з власного досвіду. Мала кількість кластерів буде малоефективно і не інформативно, тому що в такому разі ми отримуємо один-два «мегакластера», куди буде входити 98% клієнтів і кілька даремних маленьких кластерів.

При великій кількості кластерів вийде занадто багато маленьких груп. До того ж ніхто не хоче аналізувати 5000 окремих дрібних кластерів. Для кожного окремого випадку повинен бути свій індивідуальний підхід.

Для тривалих періодів і великої кількості кластерів використовуємо K-means.

4. Проводимо кластеризацію.
Вибираємо алгоритм K-means (або Affinity Propagation), використовуємо бібліотеку Python scikit-learn, на вхід даємо отриману матрицю, запускаємо кластеризацію.

5. Аналізуємо результати кластеризації.
Результатом роботи алгоритму є маркування всіх клієнтів програми лояльності, в залежності від їх поведінки/покупки. Клієнти з однаковими поведінковими характеристиками потрапляють в один кластер.

Якщо ви проводите кластеризацію за весь період роботи, то в ній беруть участь всі клієнти програми лояльності. Якщо за певний період (рік, місяць), то в кластеризації беруть участь тільки ті клієнти, які зробили покупки в заданий період.

Отже, ми провели кластеризацію за програмою лояльності для рітейлера за півроку, з кількістю кластерів 75. Розглянемо, як розподілилися по кластерам покупці, й які товари краще в тих чи інших кластерах:


— У «Кластер 1» потрапило 45% клієнтів за цей період. Лідерами продажів за товарами тут стали: масло, банани, яйця, молоко, батон, сметана.

— У «Кластері 2» виявилося 12% клієнтів. Тут популярніше інших вже декілька видів хліба і сметани, банани і непродовольчі товари.

— П'ять наступних кластерів вже не такі великі, кожен з них входять лише по 2-3% клієнтів. (В загальній складності в ці кластери потрапили 12% клієнтів за обраний період). Тут уподобання клієнтів вельми цікаві, наприклад: молочні продукти+фрукти, печиво+йогурти\сирки, йогурти\десерти+пластівці, курка+пиво+корм для кішок.

— Решта 31% покупців розсіяні по 68 кластерів. в які входять 0,1-2% клієнтів. Також кластер може бути дуже маленьким і складатися з 1-2 чоловік. Чим може бути цікавий такий кластер? Читайте в кейсах в кінці статті.

При кластеризації алгоритм виявляє нестандартна поведінка клієнта. Виявити така поведінка допоможе аналіз окремих «фіч»(характеристик і особливостей кожного окремого кластера.

6. Аналізуємо характеристики кожного кластера.
  • Назва кластера. Можна просто пронумерувати кластери, а можна присвоїти їм назви, в залежності від поведінкових особливостей усередині кожного кластера — від «Домогосподарок», «Холостяків», «Бізнесменів» до «Клубу любителів кішок»:)
  • Оборот кластера. Дозволяє визначити кластери, що приносять найбільший дохід.
  • Частка кластера в обороті. У процентному співвідношенні від загального обороту по кластеризації за вибраний період.
  • Кількість клієнтів в кластері.
  • Кількість нових клієнтів у кластері. (Вперше скористалися дисконтною карткою за вибраний період кластеризації).
  • Кількість чоловіків і жінок у кластері в процентному співвідношенні. Дозволяє виявити типові чоловічі та типові жіночі покупки, крім очевидних.
  • Загальна кількість чеків в кластері.
  • Кількість чеків на одного клієнта в кластері. Дозволяє відстежити скільки разів повертався клієнт за вибраний період кластеризації.
  • Середня кількість товарів у чеку.
  • Середня вартість чека. Дозволяє визначити, в якому кластері продаються найдорожчі товари.
Проаналізувавши характеристики кожного кластера і з їх допомогою визначивши особу покупця, можна переходити до персоніфікованої розсилці.

7. Проводимо персоналізовану розсилку по кожному кластеру.

Використовуючи кластеризацію клієнтів, можна отримати чітку систему рекомендацій для персоналу — який товар, якому клієнту і в який час пропонувати.

Знаючи, що і якої групи людей пропонувати, компанії зможуть уникнути методу «килимового бомбардування» при sms або e-mail розсилці. Пропонуючи клієнтам тільки потрібні їм товари (не забуваючи про супутні), можна домогтися набагато більшого відгуку і конверсії в покупку.

Розглянемо кілька кейсів від Datawiz.io.

Підвищення ефективності промо-розсилок з допомогою кластеризації.
В результаті кластеризації клієнтів однієї з мережі магазинів ми отримали 75 кластерів. Для прикладу розглянемо три з них: «молода сім'я», «студент» і «пенсіонер».
— Клієнти кластера «молода сім'я» були найбільш сприйнятливі до пропозицій щодо купівлі підгузників, дитячого харчування, фруктів і молока;
— «студентам» запропонували знижки на продукти групи фастфуд і пиво;
— а «пенсіонерам» на крупи та овочі.
Внаслідок такої розсилки конверсія в купівлю збільшилася на 14,5 %.

Просування нового продукту.
Варіант 1. Щоб дізнатися кому буде цікавий новий продукт, ми зробили розсилку по всіх клієнтах програми лояльності. По результатах відгуку дізналися особу покупця, якій необхідно маркувати новий продукт. Далі, відстежили потрібних нам покупців у кластерах. Провели розсилку вже тільки по нас цікавлять кластерах.

Варіант 2. Компанія не захотіла проводити розсилання по всіх клієнтах, так як база досить широка. Тому ми створили гіпотезу, яким кластерам клієнтів цей продукт цікавий. З усіх цікавлять нас кластерів ми взяли рандомно по 1% клієнтів і провели з ним тестову розсилку. З тими кластерами, які показали найвищу конверсію в купівлю після тестової розсилки, і працювали в подальшому, пропонуючи новий продукт всьому кластеру.

Нестандартна поведінка клієнта.
Ми провели кластеризацію для магазину однією з мережі. Алгоритм видав кластер, в якому було всього 2 клієнта. Але увагу привернула сума обороту по цьому кластеру за невеликий період. Здавалося б, ну купують люди багато різноманітних продуктів і товарів.

Ще однією цікавою деталлю було те, що багато чеків проводилися з різницею в кілька хвилин. Коли ж відстежили цих клієнтів у базі програми лояльності, виявилося, що власниками двох дисконтних карт були співробітники магазину.

Питання: чи може співробітники таким чином схиляли клієнтів до покупки? або заробляли собі дисконтні бали? або продавали товар за повною вартістю, а різницю привласнювали, тобто, шахраювали?

Замість висновку.
Використання кластеризації дозволить компаніям вибудувати з клієнтами особисті відносини і працювати з ними по-новому. Індивідуальний підхід до кожного клієнта підвищить лояльність споживачів, і, безсумнівно, приведе до збільшення прибутку.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.