- •Многомерная модель данных.
- •Концептуальное многомерное представление
- •3. Тест fasmi
- •4. Архитектура olap-систем
- •Интеллектуальный анализ данных
- •Интеллектуальный анализ данных
- •1. Добыча данных — Data Mining
- •2 Задачи Data Mining
- •2.1. Классификация задач Data Mining
- •2.2. Задача классификации и регрессии
- •2..3. Задача поиска ассоциативных правил.
- •2.4. Задача кластеризации
- •Классификация и регрессия
- •1. Постановка задачи
- •Представление результатов
- •1. Правила классификации
- •2. Деревья решений
- •3. Математические функции
- •3. Методы построения правил классификации
- •3.1. Алгоритм построения 1Rправил
- •5.3.2. Метод Naive Bayes
- •4. Методы построения деревьев решений
- •4.1. Методика "разделяй и властвуй"
- •4.2. Алгоритм покрытия
- •5. Методы построения математических функций
- •5.1. Общий вид
- •5.2. Линейные методы. Метод наименьших квадратов
- •Карта Кохонена
- •Поиск ассоциативных правил.
- •1. Постановка задачи 6.1.1. Формальная постановка задачи
- •6.2. Сиквенциальный анализ
- •3.1. Алгоритм Apriori
- •6.3.2. Разновидности алгоритма Apriori
- •Глава 7. Кластеризация.
- •7.1. Постановка задачи кластеризации
- •7.1.1. Формальная постановка задачи
- •7.1.2. Меры близости, основанные на расстояниях, используемые в алгоритмах кластеризации
- •7.2. Представление результатов
- •7.3. Базовые алгоритмы кластеризации
- •7.3.1. Классификация алгоритмов
- •7.3.2. Иерархические алгоритмы гломеративные алгоритмы
- •Дивизимные алгоритмы
- •7.3.3. Неиерархические алгоритмы
- •Алгоритм k-means (Hard-c-means)
- •Алгоритм Fuzzy c-Means
- •Кластеризация по Гюстафсону-Кесселю
- •7.4. Кластеризация данных при помощи нечетких отношений
- •7.4.1. Анализ свойств нечетких бинарных отношений применительно к анализу данных
- •Сравнение данных
- •Отношение альфа-толерантности
- •7.4.2. Отношение альфа-квазиэквивалентности
- •Построение шкалы отношения а-квазиэквивалентности как алгоритм анализа данных
- •Об использовании шкалы а-квазиэквивалентности для анализа данных
- •Примеры анализа данных при помощи шкалы а-квазиэквивалентности
3.1. Алгоритм Apriori
Выявление частых наборов объектов — операция, требующая большого количества вычислений, а следовательно, и времени. Алгоритм Apriori описан в 1994 г. Срикантом Рамакришнан (Ramakrishnan Srikant) и Ракешом Агравалом (Rakesh Agrawal). Он использует одно из свойств поддержки, гласящее: поддержка любого набора объектов не может превышать минимальной поддержки любого из его подмножеств:
![]()
Например, поддержка 3-объектного набора {пиво, вода, чипсы} будет всегда Меньше или равна поддержке 2-объектных наборов {пиво, вода}, {вода, чипсы}, {пиво, чипсы}. Это объясняется тем, что любая транзакция, содержащая {пиво, вода, чипсы}, содержит также и наборы {пиво, вода}, {вода, чипсы}, {пиво, чипсы}, причем обратное неверно.
Алгоритм Apriori определяет часто встречающиеся наборы за несколько этапов. На i-м этапе определяются все часто встречающиеся i-элементные наборы. Каждый этап состоит из двух шагов: формирования кандидатов (candidate generation) и подсчета поддержки кандидатов (candidate counting).
Рассмотрим i-й этап. На шаге формирования кандидатов алгоритм создает множество кандидатов из i-элементных наборов, чья поддержка пока не вычисляется. На шаге подсчета кандидатов алгоритм сканирует множество транзакций, вычисляя поддержку наборов-кандидатов. После сканирования отбрасываются кандидаты, поддержка которых меньше определенного пользователем минимума, и сохраняются только часто встречающиеся i-элементные наборы. Во время 1-го этапа выбранное множество наборов-кандидатов содержит все i-элементные частые наборы. Алгоритм вычисляет их поддержку во время шага подсчета кандидатов.
Описанный алгоритм можно записать в виде следующего псевдокода:
Опишем обозначения,
используемые в алгоритме:
Опишем данный
алгоритм по шагам.
Шаг 1. Присвоить к= 1 и выполнить отбор всех 1-элементных наборов, у которых поддержка больше минимально заданной пользователем Suppmin.
Шаг2.к = к+ 1.
Шаг 3. Если не удается создавать k-элементные наборы, то завершить алгоритм, иначе выполнить следующий шаг.
Шаг 6.
Для каждого кандидата из множества Ск
увеличить
значение поддержки на единицу.
Шаг 7. Выбрать только кандидатов Lk из множества Ск, у которых значение поддержки больше заданной пользователем Suppmin Вернуться к шагу 2.
Результатом работы алгоритма является объединение всех множеств Lk для всех к.
Рассмотрим работу алгоритма на примере, приведенном в табл. 6.1, при - Suppmin = 0,5. На первом шаге имеем следующее множество кандидатов С1(указываются идентификаторы товаров) (табл. 6.5).
Таблица 5.5
|
№ |
Набор |
Supp |
|
1 |
{0} |
0 |
|
2 |
{1} |
0,5 |
|
3 |
{2} |
0,75 |
|
4 |
{4} |
0,25 |
|
5 |
{3} |
0,75 |
|
6 |
{5} |
0,75 |

Таблица 5.6.
|
№ |
Набор |
Supp |
|
1 |
{1,2} |
0,25 |
|
2 |
{1,3} |
0,5 |
|
3 |
{1,5} |
0,25 |
|
4 |
{2,3} |
0,5 |
|
5 |
{2,5} |
0,75 |
|
6 |
{3,5} |
0,5 |
Из построенных кандидатов заданной минимальной поддержке удовлетворяют только кандидаты 2, 4, 5 и 6, следовательно:

На третьем шаге перейдем к созданию 3-элементных кандидатов и подсчету их поддержки. В результате получим следующее множество С3 (табл. 6.7).
Таблица 5.7
|
№ |
Набор |
Supp |
|
1 |
{2,3,5} |
0,5 |
Данный набор удовлетворяет минимальной поддержке, следовательно:
L3= {{2,3,5}}.
Так как 4-элементные наборы создать не удастся, то результатом работы алгоритма является множество:
Для
подсчета поддержки кандидатов нужно
сравнить каждую транзакцию с каждым
кандидатом. Очевидно, что количество
кандидатов может быть очень
большим и нужен эффективный способ
подсчета. Гораздо быстрее и эффективнее
использовать подход, основанный на
хранении кандидатов в хэш-дереве.
Внутренние узлы дерева содержат
хэш-таблицы с указателями на у
потомков, а листья - на кандидатов. Это
дерево используется при быстром .подсчете
поддержки для кандидатов.
Хэш-дерево строится каждый раз, когда формируются кандидаты. Первоначально дерево состоит только из корня, который является листом, и не содержит никаких кандидатов-наборов. Каждый раз, когда формируется новый кандидат, он заносится в корень дерева, и так до тех пор, пока количество i кандидатов в корне-листе не превысит некоего порога. Как только это происходит, корень преобразуется в хэш-таблицу, т. е. становится внутренним узлом, и для него создаются потомки-листья. Все кандидаты распределяются по «узлам-потомкам согласно хэш-значениям элементов, входящих в набор. Каждый новый кандидат хэшируется на внутренних узлах, пока не достигнет первого узла-листа, где он и будет храниться, пока количество наборов опять же не превысит порога.
После того как хэш-дерево с кандидатами-наборами построено, легко подсчитать поддержку для каждого кандидата. Для этого нужно "пропустить" каждую транзакцию через дерево и увеличить счетчики для тех кандидатов; чьи элементы также содержатся и в транзакции, Ckn T, = Ск. На корневом уровне хэш-функция применяется к каждому объекту из транзакции. Далее, на втором уровне, хэш-функция применяется ко вторым объектам и т. д. На к-м уровне хэшируется k-элемент, и так до тех пор, пока не достигнем листа. Если кандидат, хранящийся в листе, является подмножеством рассматриваемой транзакции, увеличиваем счетчик поддержки этого кандидата на единицу. После того, как каждая транзакция из исходного набора данных "пропущена" через дерево, можно проверить, удовлетворяют ли значения поддержки кандидатов минимальному порогу. Кандидаты, для которых это условие выполняется, переносятся в разряд часто встречающихся. Кроме того, следует запомнить и поддержку набора, которая пригодится при извлечении правил.
Эти же действия применяются для нахождения (к + 1)-элементных наборов и т. д.
