Вы когда-нибудь задумывались, почему товары размещаются таким образом в ваших местных продуктовых магазинах или супермаркетах? Основываясь на товарах, купленных в вашей корзине, как интернет-магазины предлагают другие товары, делающие ваш опыт покупок в Интернете доступным? Как интернет-магазины увеличивают продажи, предлагая акции / скидки и купоны?
Что ж, мы можем получить все эти сведения с помощью анализа корзины рынка с помощью алгоритма Apriori, который внутренне работает с логикой интеллектуального анализа правил ассоциации.
Каковы эти правила ассоциации?
Правила ассоциации - это комбинации элементов, которые часто встречаются вместе в транзакциях. Вкратце, это позволяет розничным торговцам отслеживать отношения между товарами, покупаемыми людьми. Правило обычно можно сформировать, как показано ниже.
Приведенное выше правило показывает, что клиенты, купившие масло и джем вместе, с большей вероятностью купят и хлеб. Можно подумать, что приведенное выше правило достаточно очевидно и зачем использовать эти алгоритмы для отслеживания. В реальной жизни транзакционные данные могут быть огромными, и становится чрезвычайно сложно получить понимание с помощью регулярного мониторинга. Нам нужно запускать эти алгоритмы несколько раз, пока мы не обнаружим более строгие правила, которые выгодны для продавца.
Типы правил ассоциации
Полезные правила - ›Это те правила, которые нам нужно отфильтровать, чтобы получить полезную информацию высокого качества.
Простые правила - ›Они будут известны любому, кто знаком с этим бизнесом.
Необъяснимые правила - ›Они не имеют какого-либо относительного объяснения и не предполагают каких-либо действий.
Не существует жесткого способа автоматической идентификации или разделения транзакций в соответствии с вышеупомянутыми правилами. Это происходит вместе со знанием предметной области, которое применяется на практике.
В этой статье мы рассмотрим все шаги по получению правил ассоциации с алгоритмом Apriori вместе с кодом R и визуализациями.
Предположим, у вас на столе 1000 квитанций, и мы обсудим, как ответить на следующие вопросы.
✦ Какие товары продавались чаще всего?
✦ Какие товары покупатели покупают вместе?
✦ Какие товары покупатели покупают вместе с конкретным товаром (например, йогурт)?
Чтобы получить набор данных, нажмите здесь
Каждая строка представляет собой транзакцию, а каждая ячейка представляет собой элемент.
Установите и загрузите следующие библиотеки.
install.packages(“arules”) install.packages(“arulesViz”) library(arules) library(arulesViz)
Считайте данные как объект транзакции.
groceries_data<-read.transactions(choose.files(),format = 'basket',sep=',') summary(groceries_data)
Из сводки мы можем увидеть следующий результат.
Давайте углубимся в подробности приведенного выше итогового вывода.
Общее количество проданных единиц товара = количество транзакций * количество единиц товара * плотность. 9835 * 169 * 0,0260 = 43215.
Мы видим, что цельное молоко имеет наибольшее количество транзакций, за ним следуют другие овощи. Распределение длины элемента сообщает нам, сколько транзакций существует с одним элементом, двумя установленными элементами и т. Д. Есть 2159 транзакций для одной позиции и 1643 транзакции для двух позиций и так далее. Поскольку среднее значение немного выше медианы, мы наблюдаем положительный перекос в распределении данных.
Теперь мы нанесем на график 20 наиболее часто встречающихся элементов из набора данных.
library(RColorBrewer) itemFrequencyPlot(groceries_data,topN=20,type=”absolute”,col=brewer.pal(9,’Set3'),main=’Items Frequency Plot’)
Цельное молоко занимает первое место с наибольшим количеством продаж, за ним следуют другие овощи, булочки и т. Д. Этот график помогает нам определить правила анализа корзины.
Как работает алгоритм априори?
Есть три статистических показателя, о которых следует знать, прежде чем применять эту модель.
➤ Поддержка - ›Измеряет частоту элемента A или комбинацию частоты элементов A и B вместе в общем количестве транзакций.
Очевидно, что ItemSet 1 будет иметь большую поддержку по сравнению с ItemSet2, потому что сочетание покупки Bread и Pen встречается редко.
➤ Уверенность - ›Этот показатель показывает, как часто элементы A и B встречаются вместе, учитывая, сколько раз встречается A.
Здесь следует отметить, что ☟
Уверенность ({Хлеб} - ›{Масло}) ≠ Уверенность ({Масло} -› {Хлеб})
Поддержка и уверенность - это два параметра гиперпонастройки в алгоритме Apriori, которые необходимо настраивать до тех пор, пока мы не получим более строгие правила.
➤ Рост - ›Этот показатель контролирует поддержку (частоту) последующего элемента при вычислении условной вероятности появления для {Масло} данного {Хлеба}.
Реализация модели со значениями параметров по умолчанию
association.rules <- apriori(groceries_data)
По умолчанию алгоритм Apriori будет рассматривать Поддержка как 0,1, а уверенность как 0,8. Из вышеприведенного вывода видно, что правила не были написаны. Теперь пришло время настроить параметры, чтобы получить некоторые правила.
Реализация модели с разными значениями параметров
association.rules <- apriori(groceries_data, parameter = list(supp=0.001, conf=0.8,maxlen=10))
summary(association.rules)
Из сводки правил ассоциации мы видим, что 29 правил генерируются с 3 элементами (lhs + rhs), а длина 4 элементов (lhs + rhs) имеет наибольшее количество правил, т.е. 229.
Все 410 правил (включая избыточные) имеют минимальную подъемную силу 3,131 , а максимальную - 11,235. Теоретически правила с подъемником ›1 считаются хорошими правилами. Но мы проверим 15 лучших правил, в которых поднимается ›1, для дальнейшего анализа после удаления повторяющихся правил.
Удаление повторяющихся правил
subset.rules<-which(colSums(is.subset(association.rules,association.rules))>1) length(subset.rules) subset.asso.rules<-association.rules[-subset.rules] summary(subset.asso.rules)
Длина повторяющихся правил - 91. Эти 91 правило можно удалить из 410 правил. После удаления повторяющихся правил остается 319 правил.
Проверка первых 15 правил из 319
inspect(subset.asso.rules[1:15])
Для 10-го правила достоверность равна 1, и мы можем сказать, что 100% покупателей, купивших рис и сахар, также купили цельное молоко.
Мы также можем создавать правила для конкретного элемента. Для Ex. Ниже приведен код для генерации правил только для йогурта.
yogurt.asso.rules<- apriori(groceries_data, parameter = list(supp=0.001, conf=0.8,maxlen=10),appearance = list(default = “lhs”,rhs = “yogurt”)) inspect(head(yogurt.asso.rules))
Правила визуализации
Для эффективного понимания правил и ценностей поддержки, уверенности и подъема давайте создадим несколько графиков. Здесь мы рассматриваем достоверность ›0,4 и отсортированы по параметру достоверности.
inspect(top10subRules[1:10]subRules<-subset.asso.rules[quality(subset.asso.rules)$confidence>0.4] top10subRules <- head(subRules, n=10, by= “confidence”) plot(top10subRules, method = “graph”, html = “htmlwidget”)
На приведенном выше графике размер узлов основан на наивысшей поддержке, а цвет означает наивысший подъем. Входящие линии представляют левую, а исходящие линии - правую.
Ниже представлен график параллельных координат.
subRules1<-head(subRules,n=10,by=”lift”) plot(subRules1, method = “paracoord”)
Таким образом, если у покупателя есть красное вино и ликер в корзине, есть 11,23 (подъем) шансов, что он / она тоже купит пиво.
Резюме
Эта статья написана для ознакомления с подходом к выполнению анализа рыночной корзины с использованием выборочных данных. Среди всех правил некоторые могут оказаться бесполезными. Следовательно, необходимо проявлять особую осторожность при выборе значений поддержки и уверенности, чтобы получить более строгие правила.
Интеллектуальный анализ ассоциативных правил не ограничивается только областью маркетинга, но то же самое можно использовать и в других областях, таких как здравоохранение, определенная комбинация условий риска для здоровья может привести к другим сложным заболеваниям. Операции по кредитной карте, чтобы узнать вероятность покупки следующего товара на основе предыдущих покупок клиента и т. Д.
Вы можете получить код R из моего профиля на Github здесь.
Спасибо за чтение и удачного обучения ☺