Метод Apriori для поиска связей между переменными в большой базе данных | Статья в журнале «Молодой ученый»

Отправьте статью сегодня! Журнал выйдет 26 октября, печатный экземпляр отправим 30 октября.

Опубликовать статью в журнале

Автор:

Рубрика: Информационные технологии

Опубликовано в Молодой учёный №21 (311) май 2020 г.

Дата публикации: 25.05.2020

Статья просмотрена: 290 раз

Библиографическое описание:

Афанасьев, А. И. Метод Apriori для поиска связей между переменными в большой базе данных / А. И. Афанасьев. — Текст : непосредственный // Молодой ученый. — 2020. — № 21 (311). — С. 41-44. — URL: https://moluch.ru/archive/311/70549/ (дата обращения: 16.10.2024).



В статье автором рассматривается метод Apriori для поиска ассоциативных правил между переменными в большой базе данных

Ключевые слова: база данных, набор элементов, Apriori, набор, правило, транзакция.

Связи — это очень важная тема для понимания при проектировании базы данных. Современные базы данных очень большие, достигают ГБ и терабайт и имеют тенденцию к дальнейшему увеличению. Поэтому для нахождения ассоциативных правил требуются эффективные масштабируемые алгоритмы, которые позволяют решить проблему за разумное время. Один из таких алгоритмов будет обсуждаться в этой статье. Опишем алгоритм Apriori.

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

Вот пример использования алгоритма Apriori. Допустим, у нас есть база данных о транзакциях в супермаркетах. Вы можете рассматривать базу данных как огромную таблицу, в которой каждая строка представляет собой номер транзакции, а каждый столбец — отдельную покупку [4]. Проиллюстрируем это на рис. 1.

Рис. 1. База данных транзакций супермаркета

С помощью алгоритма Apriori мы можем идентифицировать приобретенные продукты, то есть устанавливать ассоциативные правила.

Что это дает нам:

Вы можете определить продукты, которые часто покупаются вместе. Основная задача маркетинга — заставить клиентов покупать больше. Сопутствующие товары называются наборами. Пример:

Вы можете заметить, что чипсы, чипсы с соусом и сода часто стоят на прилавках поблизости. Это называется двухэлементным набором. Когда база данных достаточно велика, будет гораздо сложнее «увидеть» взаимосвязь, особенно при работе с трехэлементными или более крупными наборами. Для этого был создан алгоритм Apriori.

Как работает алгоритм Apriori? Прежде чем перейти к сути алгоритма, необходимо определить 3 параметра [1]:

  1. Сначала необходимо установить заданный размер. Хотите определить двухэлементный, трехэлементный набор или любой другой?
  2. Во-вторых, поддержка коммутатора — это количество транзакций, включенных в сумму, деленное на общее количество транзакций. Набор для немедленной поддержки — самая распространенная тенденция.
  3. В-третьих, определите надежность, то есть условную вероятность того, что конкретный товар окажется в корзине с другими товарами. Пример: фишки в вашем наборе с вероятностью 67 % окажутся в одной корзине с газировкой.

Простой алгоритм Apriori состоит из трех этапов:

  1. Ассоциация. Посмотрите на базу данных и определите частоту отдельных продуктов.
  2. Отсечение. Настройки, которые удовлетворяют поддержке и надежности, переходят к следующей итерации с двухкомпонентными наборами,
  3. Повторение. Предыдущие два шага повторяются для каждого заданного значения, пока не будет получен ранее определенный размер.

Если говорить о переменных — это то, что можно измерить, контролировать или манипулировать в исследованиях (от английского корня var).Переменные очень разные по своим свойствам переменные, и, следовательно, мы можем сказать, что эти переменные отличаются по характеристикам, особенно от роли, которую они играют в исследованиях, типу измерений и т. д.

Но вернемся к Apriori, который обычно рассматривается как алгоритм самообучения, поэтому его часто используют для поиска интересных закономерностей и отношений. Это модификация алгоритма Apriori, которая может классифицировать отмеченные данные. Кстати, Apriori прост, понятен в реализации и имеет множество модификаций. При этом алгоритм может быть довольно ресурсоемким- его расчеты могут занять много времени. Имеется огромное количество реализаций данного алгоритма и одни из самых популярных это ARtool, Weka и Orange.

Apriori — один из самых популярных алгоритмов поиска ассоциативных правил. Благодаря использованию антимонотонных свойств можно обрабатывать большие объемы данных в разумные сроки. Чтобы применить этот алгоритм, необходимо обработать данные: обратить внимание на все данные в двоичном виде; изменить структуру данных (табл.1–2) [5].

Таблица 1

Обычный вид базы данных транзакций

Номер транзакции

Наименование элемента

Количество

1001

А

2

1001

D

3

1001

E

1

1002

А

2

1002

F

1

1003

B

2

1003

А

2

1003

C

2

...

...

...

Таблица 2

Нормализованный вид

TID

A

B

C

D

E

F

G

H

I

K

...

1001

1

0

0

1

1

0

0

0

0

0

...

1002

1

0

0

0

0

1

0

0

0

0

...

1003

1

1

1

0

0

0

0

0

1

0

...

Количество столбцов в таблице равно количеству элементов, присутствующих в большом количестве транзакций. Обратите внимание, что первоначальная форма таблицы не может быть описана в таблице 1. Главное, чтобы данные были преобразованы в стандартизированное представление, в противном случае применяется алгоритм. Все элементы этой таблицы расположены в алфавитном порядке (если они являются числами, они должны быть расположены в числовом порядке). Это не случайно.

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

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

Например, поддержка трехэлементного набора { Хлеб, Масло, Молоко } будет всегда меньше или равна поддержке 2-элементных наборов { Хлеб, Масло }, { Хлеб, Молоко }, { Масло, Молоко }. Дело в том, что любая транзакция, содержащая { Хлеб, Масло, Молоко }, также должна содержать { Хлеб, Масло }, { Хлеб, Молоко }, { Масло, Молоко }, причем обратное не верно. Это свойство называется анти-монотонностью и служит для уменьшения размерности пространства поиска. Если у нас нет такого свойства, поиск компонентов может быть практически невозможен.

Вот функция генерации кандидатов. На этот раз нет необходимости снова обращаться к базе данных. Чтобы получить наборы k-элементов, мы используем (k-1) (k-1) — наборы элементов, которые были определены на предыдущем шаге и являются общими. Напомним, что наш начальный набор хранится в упорядоченном виде. Поколение кандидатов также будет состоять из двух этапов. Каждый кандидат k будет создан путем расширения общего набора размеров (k-1) (k-1) путем добавления элемента другого (k-1) (k-1) — набора элементов. Основываясь на свойстве анти-монотонности, все наборы k должны быть удалены, если хотя бы одно из (k-1) (k-1) подмножеств не является общим. После генерации кандидатов следующая задача — рассчитать поддержку каждого кандидата [3].

Гораздо быстрее и эффективнее использовать подход, основанный на хранении кандидатов в хэш-дереве. Внутренние узлы дерева содержат хеш-таблицы с сообщениями потомкам, а страницы — кандидатам. Дерево нам пригодится для быстрого расчета поддержки кандидатов. Хэш-дерево создается каждый раз, когда формируются кандидаты. Как только число кандидатов становится больше порогового значения, корень становится хеш-таблицей, то есть становится внутренним узлом, и для него создаются потомки. И все примеры распространяются на узлы-потомки в соответствии со значениями хеш-функции элементов, включенных в набор, и т. Д. Каждый новый кандидат хэшируется на внутренних узлах, пока не достигнет страницы первого узла, где он будет храниться до числа из наборов снова превышать порог.

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

Затем на втором уровне хэш-функция применяется ко вторым элементам и т. д. На k-уровне k-элемент отключается.

После того, как каждая транзакция исходной базы данных «пропущена» через дерево, вы можете проверить, соответствуют ли значения поддержки кандидата минимальному порогу. Кандидаты, для которых выполняется условие, переводятся в общую категорию. Кроме того, мы должны помнить о поддержке набора, это будет полезно для нас, когда вы получите правила. Эти же шаги используются для поиска (k + 1) (k + 1) наборов элементов и т. д.

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

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

Литература:

1. Голицына О. Л. Базы данных. — М.: Форум, 2016. — 400 c.

2. Илюшечкин В. М. Основы использования и проектирования баз данных. — М.: Юрайт, 2016. — 516 c.

3. Кнут Д. Искусство программирования. Т. З. Сортировка и поиск. — М.: Издательский дом «Вильямс», 2019–801 с.

4. Макконнелл Дж. Основы современных алгоритмов. 2-е дополненное издание / Пер. с англ. под ред. С. К. Ландо, дополнение М. В. Ульянова. — М.: Техносфера, 2016. — 368 с.

5. Угринович Н. Д. Информатика. — М.: БИНОМ, 2018. — 183 с.

Основные термины (генерируются автоматически): баз данных, набор элементов, алгоритм, набор, правило, база данных, кандидат, транзакция, общий набор элементов, трехэлементный набор.


Ключевые слова

база данных, транзакция, правило, набор, набор элементов, Apriori

Похожие статьи

Нормализация данных в реляционных базах данных

В статье автор рассматривает рассматривается процесс нормализации данных в реляционных базах данных, направленный на уменьшение избыточности и зависимостей, с описанием пяти нормальных форм.

ER-моделирование. Особенности семантического моделирования

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

Анализ нечетких методов сравнения при работе с несколькими источниками данных

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

Метод извлечения SAO-структур из текстовых источников

В данной работе предлагается метод для извлечения SAO структур из текстовых данных на основе семантических правил. Предложен алгоритм, который адаптирован для русского языка.

Метод желаемой логарифмической частотной характеристики для синтеза регулятора в системе управления

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

Сравнительный анализ методологий проектирования хранилищ данных

Цель данной статьи — сравнительный анализ методологий проектирования хранилищ данных. Формирование критериев сравнения. Описание архитектур, используемых в каждой методологии.

Применение векторизации слов для нечеткого поиска

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

Транзакции в базах данных

Статья посвящена группам последовательных операций, которые совершаются с базами данных, а именно — транзакциям.

Определение предпочтительного числа кластеров. Момент остановки метода одиночной связи

Кластерный анализ является одним из основных методов предварительной классификации большого количества информации. Актуальной задачей остаётся определение момента остановки процесса кластеризации. Можно рассмотреть кластерный анализ данных методом «о...

Использование функциональных зависимостей и нормализации при проектировании баз данных

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

Похожие статьи

Нормализация данных в реляционных базах данных

В статье автор рассматривает рассматривается процесс нормализации данных в реляционных базах данных, направленный на уменьшение избыточности и зависимостей, с описанием пяти нормальных форм.

ER-моделирование. Особенности семантического моделирования

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

Анализ нечетких методов сравнения при работе с несколькими источниками данных

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

Метод извлечения SAO-структур из текстовых источников

В данной работе предлагается метод для извлечения SAO структур из текстовых данных на основе семантических правил. Предложен алгоритм, который адаптирован для русского языка.

Метод желаемой логарифмической частотной характеристики для синтеза регулятора в системе управления

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

Сравнительный анализ методологий проектирования хранилищ данных

Цель данной статьи — сравнительный анализ методологий проектирования хранилищ данных. Формирование критериев сравнения. Описание архитектур, используемых в каждой методологии.

Применение векторизации слов для нечеткого поиска

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

Транзакции в базах данных

Статья посвящена группам последовательных операций, которые совершаются с базами данных, а именно — транзакциям.

Определение предпочтительного числа кластеров. Момент остановки метода одиночной связи

Кластерный анализ является одним из основных методов предварительной классификации большого количества информации. Актуальной задачей остаётся определение момента остановки процесса кластеризации. Можно рассмотреть кластерный анализ данных методом «о...

Использование функциональных зависимостей и нормализации при проектировании баз данных

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

Задать вопрос