Анализ и визуализация данных на языке R

Алгоритм ассоциативных правил. Практика

В лекции рассматривается практическая реализация алгоритма поиска ассоциативных правил (Apriori) на языке R. Слушатель знакомится с процессом подготовки данных для работы с «транзакционными» (разреженными) данными, где количество покупок в каждой строке различно. Описаны шаги: установка и загрузка библиотек (arules, Matrix), чтение данных специальной функцией (read.transactions), первичный анализ через summary и inspect, визуализация частоты товаров (itemFrequencyPlot). Основное внимание уделяется настройке параметров алгоритма Apriori (support, confidence, minlen) и интерпретации полученных правил (по лифту). В конце анонсируется перенос этого же подхода в среду Power BI.

Основные мысли

1. Особенность данных: Транзакционные данные (списки покупок) не являются «плоской» таблицей, так как строки имеют разную длину и произвольный порядок товаров. Для их обработки требуется пакет Matrix и функция read.transactions.
2. Ключевые метрики: Для оценки популярности товаров используется support (доля транзакций с товаром). Для качества правил — confidence (достоверность) и lift (лифт — насколько правило лучше случайного угадывания).
3. Работа с алгоритмом: Алгоритм Apriori в R вызывается с параметрами: минимальный support (например, 0.006 = 0.6%), минимальный confidence (0.25) и минимальная длина правила (2, чтобы исключить одиночные товары).
4. Интерпретация результатов: Наиболее ценным критерием сортировки правил является lift (чем выше, тем сильнее связь). Пример: покупка «зелени» сильно повышает вероятность покупки «корнеплодов» (lift ~ 4).
Показывать лекцию целиком
Краткое изложение

1. Настройка среды: Устанавливается рабочая папка, в которой лежит файл Groceries.csv.
2. Установка и загрузка пакетов:
o Нужны пакеты: arules (основной для правил) и Matrix (для разреженных матриц).
o arules автоматически подгружает Matrix при вызове.
3. Чтение транзакционных данных:
o Обычный read.csv не подходит.
o Используется read.transactions() — функция, созданная для чтения списков покупок (разная длина строк).
4. Первичный анализ (summary и inspect):
o Итог: 9 835 транзакций, 169 уникальных товаров.
o Топ товаров: Цельное молоко (2 513 раз), другие овощи, булочки.
o Длина корзины: 2 159 человек купили 1 товар, а 3 человека купили по 32 товара.
o inspect(groceries[1:5]) — просмотр первых 5 покупок.
5. Визуализация частоты:
o itemFrequencyPlot(groceries, support = 0.1) — показывает товары, встречающиеся минимум в 10% покупок (их 8 штук).
o itemFrequencyPlot(groceries, topN = 20) — топ-20 популярных товаров без жесткого порога.
6. Построение правил (Apriori):
o Команда: rules <- apriori(groceries, parameter = list(support = 0.006, confidence = 0.25, minlen = 2)).
o Результат: получено 463 правила.
7. Анализ правил:
o summary(rules): 150 правил длины 2, 297 длины 3, 16 длины 4. Максимальный лифт = 3.95.
o inspect(sort(rules, by="lift")[1:20]) — вывод топ-20 правил, отсортированных по лифту.
o Пример лучшего правила: {herbs} → {root vegetables} (зелень → корнеплоды).

Выводы

Транзакционные данные требуют специального подхода: Обычные методы чтения таблиц (CSV) не работают с переменной длиной записей. Необходимо использовать пакет arules и функцию read.transactions.
Параметры Apriori критически важны: Выбор значений support и confidence напрямую влияет на количество и качество полученных правил. Слишком высокий support (например, 0.1) даст мало связей, слишком низкий — создаст много «шума». В лекции использован компромиссный support = 0.006.
Лифт — главный критерий качества: Support и confidence могут вводить в заблуждение (популярные товары часто дают высокий confidence, но не сильную связь). Лифт показывает реальную силу ассоциации (чем больше 1, тем лучше).
Практическая ценность: Полученные правила (например, «зелень → корнеплоды») могут быть использованы для рекомендательных систем, оптимизации расположения товаров на полках или формирования кросс-скидок в маркетинге.

Вопросы для самопроверки

1. Почему для загрузки файла с покупками нельзя использовать стандартную функцию read.csv? Какая функция используется вместо нее?
2. Что означает термин «разреженная матрица» в контексте данной лекции?
3. Какие три основных параметра передаются в функцию apriori для контроля алгоритма? Что означает параметр minlen = 2?
4. Какой показатель (support, confidence или lift) используется для сортировки правил с целью найти самые сильные ассоциации и почему?
5. Если установить support = 0.01, а в данных 10 000 транзакций, сколько минимально раз должен встретиться товар (или набор товаров), чтобы попасть в анализ?
6. Судя по выводу summary, существуют ли правила длины 5 в полученном результате? Если нет, то какая причина (какой параметр «отсек» длинные правила)?
7. Что видит аналитик, выполнив команду inspect(rules[1:3])? (Без сортировки по лифту).
Вернуться к учебному плану