Примечание. Все содержимое изображений, включая таблицы, расчеты и коды, было исследовано мной, и нет необходимости ссылаться на них в каких-либо ссылках.

Введение

Существует несколько методов машинного обучения, таких как ассоциация, корреляция, классификация и кластеризация, в этом руководстве основное внимание уделяется обучению с использованием правил ассоциации. По правилам ассоциации мы идентифицируем набор элементов или атрибутов, которые встречаются вместе в таблице[1].

Изучение правил ассоциации

Изучение правила ассоциации — одна из очень важных концепций машинного обучения, и оно используется в анализе рыночной корзины, изучении использования Интернета, непрерывном производстве и т. д. Здесь анализ рыночной корзины — это метод, используемый различными крупными розничными торговцами для обнаружения ассоциаций между товарами. Мы можем понять это на примере супермаркета, так как в супермаркете все продукты, которые покупаются вместе, собираются вместе[2].

Изучение правил ассоциации можно разделить на три типа алгоритмов[2]:

  1. Априори
  2. Эклат
  3. Алгоритм роста F-P

Введение в АПРИОРИ

Априори — это алгоритм, используемый для изучения правила ассоциации. Он ищет ряд часто встречающихся наборов элементов в наборах данных. Он строится на ассоциациях и корреляциях между наборами элементов. Это алгоритм Вам также может понравиться, который вы часто видели на рекомендательных платформах[3].

Что такое априорный алгоритм?

Априорный алгоритм предполагает, что любое подмножество часто встречающегося набора должно быть частым. Скажем, транзакция, содержащая {молоко, яйца, хлеб}, также содержит {яйца, хлеб}. Так, по принципу Априори, если {молоко, яйца, хлеб} часто, то и {яйца, хлеб} должны быть часты [4].

Как работает априорный алгоритм?

Чтобы выбрать интересные правила из множества возможных правил в этом сценарии для малого бизнеса, мы будем использовать следующие меры[4]:

  • Поддержка
  • Уверенность
  • Поднять
  • Осуждение

Поддерживать

Поддержка элемента x — это не что иное, как отношение количества транзакций, в которых появляется элемент x, к общему количеству транзакций.

Уверенность

Достоверность (x =› y) означает вероятность того, что товар y будет куплен при покупке товара x. Этот метод учитывает популярность элемента x.

Поднимать

Подъем (x => y) — это не что иное, как «интересность» или вероятность того, что товар y будет куплен, когда товар x продано. В отличие от достоверности (x =› y), этот метод учитывает популярность элемента y.

  • Подъем (x=› y) = 1 означает, что внутри набора элементов нет корреляции.
  • Подъем (x =› y) › 1 означает наличие положительной корреляции внутри набора элементов, т. е. продуктов в наборе элементов, x и y, скорее всего, будут куплены вместе.
  • Подъем (x =› y) ‹ 1 означает, что внутри набора товаров существует отрицательная корреляция, т. е. продукты в наборе товаров, x и y вряд ли можно купить вместе.

Убеждение

Убеждение правила может быть определено следующим образом:

Его диапазон значений составляет [0, +∞].

  • Conv(x =› y) = 1 означает, что x не имеет отношения к y.
  • Чем больше убеждение, тем выше интерес к правилу.

Теперь мы хотим решить проблему априорного алгоритма простым способом:

Часть (а): Примените априорный алгоритм к следующему набору данных:

Шаг 1:

На первом этапе мы индексируем данные, а затем вычисляем поддержку для каждого из них, если поддержка была меньше минимального значения, мы удаляем ее из таблицы.

Шаг 2:

Рассчитать поддержку для каждого

Шаг 3:

Продолжить расчет поддержки и выбрать лучший ответ

Часть (b): Покажите два правила с доверительной вероятностью 70 % или выше для набора элементов, содержащего три элемента из части a.

Шаг 1:

Рассчитайте достоверность и следуйте правилам вопроса в части (b)

Шаг 2:

Помимо вышеперечисленных правил, можно учитывать и следующие, но в вопросе для расчета требуется только два правила.

Практическое занятие: априорный алгоритм в Python — анализ рыночной корзины

Постановка задачи:

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

Менеджер розничного магазина пытается найти правило ассоциации между товарами, чтобы выяснить, какие товары чаще всего покупают вместе, чтобы он мог хранить товары вместе, чтобы увеличить продажи.
Набор данных содержит 7500 записей. . Ссылка на диск для скачивания набора данных[4][6].

Настройка среды:

Прежде чем двигаться дальше, нам нужно сначала установить пакет «apyori» в командной строке.

Реализация анализа рыночной корзины в Python

С помощью пакета apyori мы будем реализовывать алгоритм Apriori, чтобы помочь менеджеру в анализе потребительской корзины [4].

Шаг-1: Мы импортируем необходимые библиотеки, необходимые для реализации

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

Шаг 2: Загрузите набор данных

Теперь нам нужно продолжить чтение имеющегося у нас набора данных в формате csv. Мы делаем это, используя функцию read_csv модуля pandas [6].

dataset = pd.read_csv("Market_Basket_Optimisation.csv")

Шаг 3: Взгляните на записи

dataset

Шаг 4: Посмотрите на форму

dataset.shape

Шаг 5: преобразовать Pandas DataFrame в список списков

transactions = []
for i in range(0, 7501):
 transactions.append([str(dataset.values[i,j]) for j in range(0,20)])

Шаг 6: Создайте априорную модель

Мы импортируем априорную функцию из модуля apyori. Мы сохраняем результат работы априорной функции в переменной rules.
В априорную функцию мы передаем 6 параметров:

  1. Список транзакций в качестве основных входов
  2. Минимальная поддержка, которую мы установили равной 0,003. Мы получаем это значение, учитывая, что продукт должен появляться как минимум в 3 транзакциях в день. Наши данные собираются в течение недели. Следовательно, значение поддержки должно быть 3*7/7500 = 0,0028.
  3. Минимальная достоверность, которую мы выбрали равной 0,2 (получена путем чрезмерного анализа различных результатов)
  4. Минимальный подъем, который мы установили на 3
  5. Минимальная длина установлена ​​на 2, так как мы рассчитываем значения подъема для покупки предмета B при покупке другого предмета A, поэтому мы принимаем во внимание 2 предмета.
  6. Минимальная длина устанавливается равной 2 с использованием той же логики[6].
from apyori import apriori
rules = apriori(transactions = transactions, min_support = 0.003, min_cinfidence = 0.2, min_lift = 3, min_length = 2, max_length = 2)

Шаг 7: Распечатайте количество правил в виде списка

results = list(rules)

Шаг 8: Взгляните на правила

results

Шаг 9: Визуализация результатов

В переменной LHS мы сохраняем первый товар из всех результатов, из которого получаем второй товар, купленный после того, как этот товар уже куплен, который теперь хранится в RHS переменная.
Поддержки, уверенности и подъемы хранят все значения поддержки, уверенности и подъема из результатов [6].

def inspect(results):
    lhs         =[tuple(result[2][0][0])[0] for result in results]
    rhs         =[tuple(result[2][0][1])[0] for result in results]
    supports    =[result[1] for result in results]
    confidences =[result[2][0][2] for result in results]
    lifts        =[result[2][0][3] for result in results]
    return list (zip(lhs, rhs, supports, confidences, lifts))
resultsinDataFrame = pd.DataFrame(inspect(results), columns = ["Left hand side", "Right hand side", "Support", "Confidence", "Lift"])

Наконец, мы храним эти переменные в одном фрейме данных, чтобы их было легче визуализировать.

resultsinDataFrame

Теперь мы сортируем эти окончательные результаты в порядке убывания подъемов.

resultsinDataFrame.nlargest(n = 10, columns = "Lift")

Это окончательный результат нашей априорной реализации на питоне. SuperMarket будет использовать эти данные для увеличения своих продаж и определения приоритетности предложений по паре товаров с более высокими значениями Lift [6].

Почему Априори?

  1. Это простой в реализации и понятный алгоритм.
  2. Это может быть легко реализовано на больших наборах данных.

Ограничения априорного алгоритма

Несмотря на простоту, априорные алгоритмы имеют некоторые ограничения, в том числе:

  • Пустая трата времени, когда дело доходит до обработки большого количества кандидатов с частыми наборами элементов.
  • Эффективность этого алгоритма снижается, когда большое количество транзакций выполняется через ограниченный объем памяти.
  • Требуется высокая вычислительная мощность и необходимость сканирования всей базы данных[4].

Краткое содержание

Изучение правил ассоциации — это тип метода обучения без учителя, который проверяет зависимость одного элемента данных от другого элемента данных и соответствующим образом отображает его, чтобы он мог быть более выгодным. Он пытается найти интересные отношения или ассоциации между переменными набора данных. Он основан на различных правилах для обнаружения интересных отношений между переменными в базе данных. Приведенная выше блок-схема поможет обобщить всю работу алгоритма[2].

Репозиторий Github для целых кодов

Использованная литература:

[1] https://www.softwaretestinghelp.com/apriori-algorithm/

[2] https://www.javatpoint.com/association-rule-learning

[3] https://towardsdatascience.com/underrated-machine-learning- algorithms-apriori-1b1d7a8b7bc

[4] https://intellipaat.com/blog/data-science-apriori-algorithm/

[5] Модели вовлечения пользователей в экспериментальную разработку программного обеспечения, авторы (С. Яман), (Ф. Фагерхольм), (М. Мунезеро), (Т. Мэннистё). Декабрь 2019 г., https://www. Journals.elsevier.com/information-and-software-technology

[6] https://djinit-ai.github.io/2020/09/22/apriori-algorithm.html#understanding-our-used-case

[7] https://www.datacamp.com/tutorial/market-basket-analysis-r

[8] https://www.researchgate.net/figure/Flowchart-of-Apriori-algorithm_fig2_351361530https://www.researchgate.net/figure/Flowchart-of-Apriori-algorithm_fig2_351361530

Сценарист: Парисан Ахмади

Контакты: Medium, Github, Kaggle