Правило ассоциации (ассоциация) – это метод определения взаимосвязи элементов друг с другом. В отличие от Корреляции (Correlation), где отыскиваются взаимосвязи между Признаками (Feature) Датасета (Dataset), здесь идет речь о взаимосвязях внутри признака, например, дополняющие друг друга покупки в гипермаркете.
Ассоциацию можно измерить тремя распространенными способами. Для простоты адаптируем концепцию к тем же покупкам в гипермаркете.
- Поддержка (Support) – мера популярности набора товаров, если судить по доле транзакций, в которых он появляется. Он измеряется следующим образом:
- Уверенность (Confidence) – степень уверенности в приобретении товара M2 при покупке товара M1. Рассчитывается так:
- Подъем (Lift) говорит о том, насколько вероятно, что предмет M2 будет куплен, когда приобретен предмет M1, при этом контролируется, насколько популярным является предмет M2. Он измеряется следующим образом:
Ассоциация и Apriori
Для демонстрации выделения ассоциаций мы используем готовый датасет покупок и специальную библиотеку Apriori. Для начала импортируем все необходимые компоненты:
Мы используем готовый датасет с историей покупок, содержащий идентификатор покупателя, дату покупки и купленные товары. Посмотрим, какого размера наш набор:
Датасет состоит из 38+ тысяч записей с тремя признаками:
Создадим несколько вспомогательных признаков. С помощью сочетания методов groupby() и nunique() мы сможем, например, сгруппировать покупки по покупателям и подсчитать количество посещений гипермаркета:
Теперь понятно, сколько за раз купил каждый пришедший:
Нас интересует перечень покупок, потому мы выделим этот признак в отдельный список:
Теперь применим функцию apriori. Зададим функции параметры по умолчанию – какой объект рассматривать (transactions), минимальный уровень поддержки и уверенности, форма выдачи результата. Ко всему прочему нам понадобится вспомогательная функция inspect(), которая сформирует Датафрейм (DataFrame) из обнаруженных ассоциативных пар:
Мы получили обширный список из 242 ассоциаций – настоящая кладезь для маркетолога! Посетитель гипермаркета и не поймет, почему в отделе с кухонными принадлежностями звучит ненавящевая реклама мужской косметики:
Посмотрим, какие ассоциации самые ярковыраженные, отсортировав результирующий датафрейм resultsDataFrame от большего к меньшему:
Наш Топ-10 выглядит весьма и весьма неожиданно:
Ликер и консервы! Вот это сочетание. Кухонные принадлежности и просекко – весьма вероятно и обыденно, впрочем, на перебор таких "очевидных" сочетаний может уйти много времени и рекламного бюджета, не так ли? В топ-3 попала пара "Кухонные принадлежности и Мужская косметика". Да, удивительное рядом. Так реклама становится гораздо точнее и эффективнее, а ведь это сокращает и баннерную нагрузку на конечных пользователей ритейла, что само по себе замечательно.
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь.
Автор оригинальной статьи: Gaurav Chopra
Фото: @montylov