Скачиваний:
39
Добавлен:
01.05.2014
Размер:
370.18 Кб
Скачать

Санкт-Петербургский Государственный

Электротехнический Университет

ФКТИ

Кафедра МОЭВМ

Дисциплина: Базы знаний и экспертные системы

Пояснительная записка

к курсовой работе на тему

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

Выполнили:

Руководитель:

Санкт-Петербург

2007 г.

Содержание

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

Используя среду разработки программных приложений Delphi7.0 и заданные классы, написать модуль экспертной системы, реализующий алгоритмApriori. Программа должна иметь удобный пользовательский интерфейс и обеспечивать действия пользователя в отдельном окне.

Данные для анализа должны храниться в объекте класса TDMInstances.

Работа с данными, выбор переменных и их значений осуществляются в окне, отдельном от окна главной формы экспертной системы.

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

Алгоритм Aprioriопределяет часто встречающиеся наборы за несколько этапов. Наi-м этапе определяются все часто встречающиесяi-элементные наборы. Каждый этап состоит из двух шагов: формирование кандидатов и подсчета поддержки кандидатов.

Рассмотрим i-й этап. На шаге формирования кандидатов алгоритм создает множество кандидатов изi-элементных наборов, чья поддержка пока не вычисляется. На шаге подсчета кандидатов алгоритм сканирует множество транзакций, вычисляя поддержку наборов-кандидатов. После сканирования отбрасываются кандидаты, поддержка которых меньше определенного пользователем минимума, и сохраняются только часто встречающиесяi-элементные наборы. Во время 1-го этапа выбранное множество наборов кандидатов содержит все 1-элементные частые наборы. Алгоритм вычисляет их поддержку во время шага подсчета кандидатов.

Описанный алгоритм можно записать в виде следующего псевдокода:

Опишем обозначения используемые в алгоритме:

  • Lk– множествоk-элементных частых наборов, чья поддержка не менье заданной пользователем. Каждый член множества имеет набор упорядоченных (ij<ip, еслиj<p) элементовFи значение поддержки набораSuppF >Suppmin:

  • Ck– множество кандидатовk-элементных наборов потенциально частых. Каждый член множества имеет набор упорядоченных (ij<ip, еслиj<p) элементовFи значение поддержки набораSupp.

Опишем данный алгоритм по шагам:

Шаг 1.Присвоитьk=1 и выполнить отбор всех 1-элементных наборов, у которых поддержка больше минимально заданной пользователем.

Шаг 2.k = k+1.

Шаг 3.Если не удается создаватьk-элементные наборы, то завершить алгоритм, иначе выполнить следующий шаг.

Шаг 4.Создать множествоk-элементных наборов кандидатов в частые наборы. Для этого необходимо объединить вk-элементные кандидаты (k-1) – элементные частые наборы. Каждый кандидат сСkбудет формироваться путем добавления к (k-1)- элементному частому набору –pэлемента из другого (k-1)- элементного частого набора –q. Причем добавляется последний элемент набораq, который по порядку выше, чем последний элемент набораp(p.itemk-1<q.itemk-1). При этом первые всеk-2 элемента обоих наборов одинаковы (p.item1=q.item1,p.item2=q.item2, …,

p.itemk-2=q.itemk-2).

Это может быть записано в виде следующего SQL-подобного запроса.

Шаг 5. Для каждой транзакции Т из множестваDвыбрать кандидатов С1из множества Сk, присутствующих в транзакции Т. Для каждого набора из построенного множества Сk удалить набор, если хотя бы одно из его (k-1) множеств не является часто встречающимся, т.е. отсутствует во множествеLk-1. Это можно записать в виде следующего псевдокода:

Шаг 6. Для каждого кандидата из множестваCk увеличить значение поддержки на единицу.

Шаг 7.Выбрать только кандидатовLkиз множества Сk, у которых значение поддержки больше заданной пользователемSuppmin. Вернуться к шагу 2.

Результатом работы алгоритма является объединение всех множеств Lk для всехk.