Кластеризация транзакций

В основе кластеризации транзакций лежит алгоритм CLOPE, применение которого позволяет обрабатывать огромные массивы транзакционных данных: чеки в супермаркетах, логи посещений веб-ресурсов и другие. Задача состоит в получении такого разбиения всего множества транзакций, чтобы похожие транзакции оказались в одном кластере, а отличающиеся друг от друга — в разных кластерах.

В данном демопримере рассматривается задача по определению кластеров, описывающих съедобные и ядовитые грибы.

Запустить демо

Установить локально

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

1. Импорт данных

Импорт исходных данных

Исходный набор данных включает в себя 8124 записи с описанием 22 характеристик грибов. 4208 грибов являются съедобными, 3916 — несъедобными. Количество уникальных характеристик — 116.

Имя Метка
 class Класс
 cap_shape Форма шапки
 cap_surface Поверхность шляпки
 cap_color Цвет шляпки
 blue_spots Синие пятна
 smell Запах
 gill_attachment Форма крепления гименофора к ножке
 gill_spacing Частота гименофора
 gill_size Размер гименофора
 gill_color Цвет гименофора
 stalk_shape Форма ножки
 stalk_root Корень ножки
 stalk_surface_above_ring Поверхность ножки выше кольца
 stalk_surface_below_ring Поверхность ножки ниже кольца
 stalk_color_above_ring Цвет ножки выше кольца
 stalk_color_below_ring Цвет ножки ниже кольца
 veil_type Тип покрывала
 vei_color Цвет покрывала
 ring_number Количество колец
 ring_type Остатки частного покрывала
 spore_print_color Цвет спор
 population Частота грибницы
 habitat Место обитания

2. Подготовка данных

Исходный набор данных не пригоден для использования в узле Кластеризация транзакций — его нужно привести к транзакционному виду (Транзакция — Элемент). Узлы, с помощью которых производится трансформация, объединены в подмодель Подготовка данных.

а) Добавление ID

С помощью узла Добавление ID добавлено новое поле — ID, которое необходимо для того, чтобы каждая запись набора имела уникальный идентификатор. Идентификаторы начинаются с 1:

RowNum() + 1

б) Транспонирование

Установлены следующие настройки для узла Свертка столбцов:

  • в группу Информационные добавлено поле ID
  • в группу Транспонируемые — все остальные поля
Целый тип ID Строковый тип Метки Строковый тип Значения
1 Класс ядовитый
... ... ...
1 Цвет гименофора черный
в) Формирование свойства

В узле Формирование свойства сформировано новое поле property(Свойство) из названия характеристик и их значений с помощью функции Concat:

Concat(display_names, " — ", values)

Итоговый набор данных:

Строковый тип Свойство Строковый тип Метки Строковый тип Значения Целый тип ID
Класс - ядовитый Класс ядовитый 1
... ... ... ...
Цвет гименофора - черный Цвет гименофора черный 1

3. Кластеризация транзакций

Настройка Кластеризации транзакций

На странице Мастера настройки входных полей установлены следующие назначения:

Имя Метка Вид данных Назначение
 number ID Дискретный Транзакция
 property Свойство Дискретный Элемент
 display_names Метки Дискретный Не задано
 values Значения Дискретный Не задано

Остальные настройки оставлены по умолчанию.

При изменении настроек переобучите модель.

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

Для представления результатов используются визуализаторы Таблица и Куб:

а) Настройка Таблицы

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

Таблица отражает информацию о параметрах разбиения и позволяет оценить кластеры по различным характеристикам:

  • Количество транзакций (N)
  • Ширина кластера (W)
  • Мощность кластера (S)

Можно сортировать кластеры по данным показателям. Например, можно выбрать самые мощные кластеры:

Целый тип Номер кластера Целый тип N Целый тип W Целый тип S
17 1728 35 39744
6 1296 35 29808
9 1296 35 29808
2 768 34 17664
1 512 33 11776
б) Формирование данных для Куба

С помощью узла Слияние сопоставлены полученные кластеры и характеристики грибов.

Настройки узла:

в) Настройка Куба

Критерием качества работы алгоритма служит количество «грязных» кластеров, т.е. таких, в которых присутствуют как съедобные, так и несъедобные грибы. Чем меньше таких кластеров, тем лучше.

Настроим Куб следующим образом:

  • в область Измерений добавлено поле Номер кластера
  • в область Факты добавлено поле Свойство
  • настроен фильтр для поля Свойство — отображать только значения Класс — съедобный и Класс — ядовитый

Из Куба видно, что в результате кластеризации не получилось ни одного «грязного» кластера, что говорит о качественном разбиении.

Разбиение на кластеры (Куб)
Рисунок 1. Разбиение на кластеры (Куб)

Скачайте и откройте файл в программе Loginom, которую при необходимости можно скачать бесплатно

Скачать демопример

Минимальные требования к системе:

  • Операционная система: Windows 10 и выше
  • CPU x64: 2 core 1
  • Оперативная память: 4 GB
  • Жесткий диск: 10 GB

1 Поддерживается работа на x64 процессорах Intel Core, AMD FX и более новых, содержащих инструкции SSE4.2 (POPCNT, LZCNT).