Найти в Дзене

Ассоциации в Машинном обучении

Правило ассоциации (ассоциация) – это метод определения взаимосвязи элементов друг с другом. В отличие от Корреляции (Correlation), где отыскиваются взаимосвязи между Признаками (Feature) Датасета (Dataset), здесь идет речь о взаимосвязях внутри признака, например, дополняющие друг друга покупки в гипермаркете.

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

- Поддержка (Support) – мера популярности набора товаров, если судить по доле транзакций, в которых он появляется. Он измеряется следующим образом:

-2

- Уверенность (Confidence) – степень уверенности в приобретении товара M2 при покупке товара M1. Рассчитывается так:

-3

- Подъем (Lift) говорит о том, насколько вероятно, что предмет M2 будет куплен, когда приобретен предмет M1, при этом контролируется, насколько популярным является предмет M2. Он измеряется следующим образом:

-4

Ассоциация и Apriori

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

-5

Мы используем готовый датасет с историей покупок, содержащий идентификатор покупателя, дату покупки и купленные товары. Посмотрим, какого размера наш набор:

-6

Датасет состоит из 38+ тысяч записей с тремя признаками:

-7

Создадим несколько вспомогательных признаков. С помощью сочетания методов groupby() и nunique() мы сможем, например, сгруппировать покупки по покупателям и подсчитать количество посещений гипермаркета:

-8

Теперь понятно, сколько за раз купил каждый пришедший:

-9

Нас интересует перечень покупок, потому мы выделим этот признак в отдельный список:

-10

Теперь применим функцию apriori. Зададим функции параметры по умолчанию – какой объект рассматривать (transactions), минимальный уровень поддержки и уверенности, форма выдачи результата. Ко всему прочему нам понадобится вспомогательная функция inspect(), которая сформирует Датафрейм (DataFrame) из обнаруженных ассоциативных пар:

-11

Мы получили обширный список из 242 ассоциаций – настоящая кладезь для маркетолога! Посетитель гипермаркета и не поймет, почему в отделе с кухонными принадлежностями звучит ненавящевая реклама мужской косметики:

-12

Посмотрим, какие ассоциации самые ярковыраженные, отсортировав результирующий датафрейм resultsDataFrame от большего к меньшему:

-13

Наш Топ-10 выглядит весьма и весьма неожиданно:

-14

Ликер и консервы! Вот это сочетание. Кухонные принадлежности и просекко – весьма вероятно и обыденно, впрочем, на перебор таких "очевидных" сочетаний может уйти много времени и рекламного бюджета, не так ли? В топ-3 попала пара "Кухонные принадлежности и Мужская косметика". Да, удивительное рядом. Так реклама становится гораздо точнее и эффективнее, а ведь это сокращает и баннерную нагрузку на конечных пользователей ритейла, что само по себе замечательно.

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

Автор оригинальной статьи: Gaurav Chopra

Фото: @montylov