Советник

Юридические услуги по корпоративному праву

Генерация ассоциативных правил

Поиск ассоциативных правил

Одной из наиболее распространённых задач анализа данных является определение часто встречающихся
наборов объектов в большом множестве наборов.
Впервые это задача была предложена поиска ассоциативных правил для нахождения типичных шаблонов покупок,
совершаемых в супермаркетах, поэтому иногда ее еще называют анализом рыночной корзины (market basket analysis).

Формальная постановка задачи

Пусть имеется база данных, состоящая из покупательских транзакций.
Каждая транзакция – это набор товаров, купленных покупателем за один визит. Такую транзакцию еще называют рыночной корзиной.

Пусть I = <ii,i2. ij. in> – множество (набор) товаров (объектов) общим числом n.
Пусть D – множество транзакций D = <T1,T2,Tr. Tm> , где каждая транзакция T – это набор элементов из I. .

В сфере торговли, например, такими объектами являются товары, представленные в прайс-листе:

Они соответствуют следующему множеству объектов: I=<шоколад, хлеб, масло, вода, молоко, орехи>.
Примерами транзакций могут быть T1 = < хлеб, масло, молоко >, T2 = < шоколад, вода, орехи >.
Множество транзакций, в которые входит объект ij , обозначим следующим образом:
.
Множество D может быть представлено следующим образом:

В данном примере, множеством транзакций, содержащим объект «Вода», является следующее множество:

Некоторый произвольный набор объектов (itemset) обозначим следующим образом:
, например F = <хлеб, масло>.
Набор, состоящий из k элементов, называется k-элементным набором.
Множество транзакций, в которые входит набор F, обозначим следующим образом:
.
В данном примере:

Отношение количества транзакций, в которое входит набор F, к общему количеству транзакций
называется поддержкой (support) набора F и обозначается Supp(F):
.
Для набора < масло, вода >поддержка будет равна 0,5, т.к. данный набор входит в две транзакции
с номерами 1 и 2, а всего транзакций четыре.
При поиске аналитик может указать минимальное значение поддержки интересующих его наборов Suppmin .
Набор называется частым (large itemset), если значение его поддержки больше минимального значения поддержки,
заданного пользователем: Supp(F) > Suppmin .
Таким образом, при поиске ассоциативных правил требуется найти множество всех частых наборов:
L = <F | Supp(F) > Suppmin> .
В данном примере частыми наборами при Suppmin = 0,5 являются следующие:

Представление результатов

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

  • нахождение всех частых наборов объектов:
  • генерация ассоциативных правил из найденных частых наборов объектов.

Ассоциативные правила имеют следующий вид:

где условие — обычно не логическое выражение (как в классификационных правилах),
а набор объектов из множества I, с которым связаны (ассоциированы) объекты, включенные
в результат данного правила.
Например, ассоциативное правило: «если (молоко, масло), то (хлеб)» означает, что если
потребитель покупает молоко и масло, то он покупает и хлеб.
Основным достоинством ассоциативных правил является их лёгкое восприятие человеком и
простая интерпретация языками программирования. Однако, они не всегда полезны.
Выделяют три вида правил:

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

Ассоциативные правила строятся на основе частых наборов. Так правила, построенные на основании набора F,
являются возможными комбинациями объектов, входящих в него.
Например, для набора <масло, вода, орехи>, могут быть построены следующие правила:

Таким образом, количество ассоциативных правил может быть очень большим и трудновоспринимаемым для человека.
К тому же, не все из построенных правил несут в себе полезную информацию.
Для оценки их полезности вводятся следующие величины:
Поддержка(support) — показывает, какой процент транзакций поддерживает данное правило.
Так как правило строится на основании набора, то, значит, правило X=>Y имеет поддержку, равную поддержке набора F,
который составляют X и Y:
Y> = Supp_F = \frac<|D_|><|D|>» src=»http://bourabai.kz/tpoi/analysis/15850347eb2e7f0d58b68b436079549f.png»>.
Очевидно, что правила, построенные на основании одного и того же набора, имеют одинаковую поддержку,
например, поддержка Supp(если (вода, масло), то (орехи) = Supp(вода, масло, орехи) = 0,5.

Достоверность(confidence) — показывает вероятность того, что из наличия в транзакции набора X следует наличие в ней набора Y.
Достоверностью правила X=>Y является отношение числа транзакций, содержащих X и Y, к числу транзакций, содержащих набор Х:
Y> = \frac<|D_|> <|D_X|>= \frac>» src=»http://bourabai.kz/tpoi/analysis/536eb0f797741ab5b4d153fce8250cbc.png»>.
Очевидно, что чем больше достоверность, тем правило лучше, причем у правил, построенных на основании одного и того же набора,
достоверность будет разная, например:

К сожалению, достоверность не позволяет определить полезность правила. Если процент наличия в транзакциях набора Y
при условии наличия в нем набора Х меньше, чем процент безусловного наличия набора Y, т.е.:
Y> = \frac> .
Это значит, что вероятность случайно угадать наличие в транзакции набора Y больше, чем предсказать это с помощью правила X=>Y.
Для исправления такой ситуации вводится мера — улучшение.
Улучшение(improvement) — показывает, полезнее ли правило случайного угадывания. Улучшение правила является отношением
числа транзакций, содержащих наборы X и Y, к произведению количества транзакций, содержащих набор Х, и количества транзакций,
содержащих набор Y:
Y> = \frac<|D_|> <|D_X||D_Y|>= \frac>» src=»http://bourabai.kz/tpoi/analysis/99a045ac0a4e9c95363f4dd2b1509483.png»>.
Например, impr(если (вода, масло), то (орехи) = 0,5/(0,5*0,5) = 2.
Если улучшение больше единицы, то это значит, что с помощью правила предсказать наличие набора Y вероятнее, чем случайное угадывание,
если меньше единицы, то наоборот.
В последнем случае можно использовать отрицательное правило, т.е. правило, которое предсказывает отсутствие набор Y:
X => не Y.
Правда, на практике такие правила мало применимы. Например, правило: «если (вода, масло), то не (молоко)» мало полезно,
т.к. слабо выражает поведение покупателя.
Данные оценки используются при генерации правил. Аналитик при поиске ассоциативных правил
задает минимальные значения перечисленных величин. В результате те правила, которые не удовлетворяют этим условиям,
отбрасываются и не включаются в решение задачи. С этой точки зрения нельзя объединять разные правила, хотя и имеющие
общую смысловую нагрузку.
Например, следующие правила:

нельзя объединить в одно:

т.к. достоверности их будут разные, следовательно, некоторые из них могут быть исключены, а некоторые — нет.

Алгоритм Apriori

Свойство анти-монотонности

Выявление часто встречающихся наборов элементов – операция, требующая много вычислительных ресурсов и, соответственно, времени.
Примитивный подход к решению данной задачи – простой перебор всех возможных наборов элементов.
Это потребует O(2 | I | ) операций, где |I| – количество элементов.
Apriori использует одно из свойств поддержки, гласящее: поддержка любого набора элементов не может превышать
минимальной поддержки любого из его подмножеств. Например, поддержка 3-элементного набора <Хлеб, Масло, Молоко>
будет всегда меньше или равна поддержке 2-элементных наборов <Хлеб, Масло>, <Хлеб, Молоко>, <Масло, Молоко>.
Дело в том, что любая транзакция, содержащая <Хлеб, Масло, Молоко>, также должна содержать <Хлеб, Масло>, <Хлеб, Молоко>, <Масло, Молоко>,
причем обратное не верно.

Это свойство носит название анти-монотонности и служит для снижения размерности пространства поиска.
Не имей мы в наличии такого свойства, нахождение многоэлементных наборов было бы практически невыполнимой задачей
в связи с экспоненциальным ростом вычислений.

Свойству анти-монотонности можно дать и другую формулировку: с ростом размера набора элементов поддержка уменьшается,
либо остается такой же. Из всего вышесказанного следует, что любой k-элементный набор будет часто встречающимся тогда и только тогда,
когда все его (k-1)-элементные подмножества будут часто встречающимися.

Все возможные наборы элементов из I можно представить в виде решетки, начинающейся с пустого множества, затем
на 1 уровне 1-элементные наборы, на 2-м – 2-элементные и т.д. На k уровне представлены k-элементные наборы,
связанные со всеми своими (k-1)-элементными подмножествами.

Рассмотрим рисунок, иллюстрирующий набор элементов I – .
Предположим, что набор из элементов имеет поддержку ниже заданного порога и, соответственно, не является часто встречающимся.
Тогда, согласно свойству анти-монотонности, все его супермножества также не являются часто встречающимися и отбрасываются.
Вся эта ветвь, начиная с , выделена фоном. Использование этой эвристики позволяет существенно сократить пространство поиска.

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

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

  1. формирование кандидатов (candidate generation);
  2. подсчет поддержки кандидатов (candidate counting).

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

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

  • Lk — множество k-элементных наборов, чья поддержка не меньше заданной пользователем. Каждый член множества имеет набор упорядоченных ( ijSuppmin :


    Ck — множество кандидатов k-элементных наборов потенциально частых. Каждый член множества имеет набор упорядоченных ( ijТПОИк оглавлениюк дискретной математикетехнологии программирования

Выступление Юрия Болдырева на II Съезде ПДС НПСР (21.12.2017)

Дело в том, что в его постановке и выводах произведена подмена, аналогичная подмене в школьной шуточной задачке на сообразительность, в которой спрашивается:
— Cколько яблок на березе, если на одной ветке их 5, на другой ветке — 10 и так далее
При этом внимание учеников намеренно отвлекается от того основополагающего факта, что на березе яблоки не растут, в принципе.

В эксперименте Майкельсона ставится вопрос о движении эфира относительно покоящегося в лабораторной системе интерферометра. Однако, если мы ищем эфир, как базовую материю, из которой состоит всё вещество интерферометра, лаборатории, да и Земли в целом, то, естественно, эфир тоже будет неподвижен, так как земное вещество есть всего навсего определенным образом структурированный эфир, и никак не может двигаться относительно самого себя.

Удивительно, что этот цирковой трюк овладел на 120 лет умами физиков на полном серьезе, хотя его прототипы есть в сказках-небылицах всех народов всех времен, включая барона Мюнхаузена, вытащившего себя за волосы из болота, и призванных показать детям возможные жульничества и тем защитить их во взрослой жизни. Подробнее читайте в FAQ по эфирной физике.

Глядя на эти бесконечные попытки Роскомнадзора и ФСБ обуздать или заблокировать телегу, мы почти поверили ему. Теперь стало понятно, почему Дуров последнее время зачастил с публикациями про попытки спецслужб подкупить сотрудников телегам. Это отличный способ защитить свою репутацию. Этакий либерал, которого никто не может сломить, но на самом деле он с ними заодно.

А вскрылся Ваш сговор после последней пиаракции телеги в СМИ. Сначала было непонятно, почему он сразу не опубликовал письмо? Отправлено оно ему было 14 сентября, написал Дуров о нем только в конце месяца. Не почтой России же его отправляли?

Какое совпадение! 26 сентября иранская прокуратура завела дело против Павла Дурова. А 27 сентября многие российские СМИ написали, что «Дуров готов закрыть телеграм в России.»

Самой зашкварной эта новость смотрелась на Роскомсвободе, которая специализируется на блокировках в интернете. Это их профиль. По идее, они должны были расписать, как есть, но почему-то написали новость с таким же заголовком, как и большинство других СМИ. То есть заголовок абсолютно не соответствует содержимому.
https://t.me/roskomsvoboda/1405

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

Не заставил себя долго ждать пример «неточного перевода» моих сообщений российскими СМИ. Вчера в своем англоязычном канале я рассказал о том, что Telegram продолжит предоставлять сервис безопасного общения на проблемных рынках вроде России и Ирана, несмотря на давление регуляторов и угрозу блокировки («we’ll continue providing secure messaging to users in these markets…»).
А в пятницу утром российские СМИ вышли с прямо противоположными заголовками: «Дуров сообщил о готовности закрыть Telegram», «Дуров пригрозил закрыть Telegram в России», «Павел Дуров пригрозил оставить Россию без Telegram» – и тому подобные примеры дезинформации.

Не думаю, что Дуров слоупок. Он выждал сутки, чтобы появился еще один инфоповод для пиара телеги в сми. 3 дня подряд! Очень странно, что никто даже вскользь не упомянул о функции использования прокси. Та же самая Роскомсвобода промолчала, хотя у них есть целая статья об этом. https://t.me/roskomsvoboda/1111

В этой теме не обойтись без технических подробностей. Так как телеграм — приложение с открытым исходным кодом, то оно есть в каталоге F-Droid, который собирает такие приложения и является аналогом Google Play.

После скандала со слежкой АНБ через популярное приложение Angry Birds каталог F-Droid стал очень популярен. Он позволяет скачивать приложения без регистрации. В каталог добавляются приложения только с открытым исходным кодом и после тщательной проверки.

Модераторы каталога F-Droid пишут, что оригинальный исходный код последних версий Телеграм не является полностью свободным. Чтобы добавить приложение в каталог, из исходного кода удалены компоненты Google Play для определения местоположения, HockeySDK для самообновления и push-уведомления через Google Cloud Messaging.

На основе этого уже можно сказать, что Телеграм в Google Play и App Store не такой уж и анонимный и при желании можно идентифицировать нужного пользователя через упомянутые выше сервисы.

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

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

Со стороны это смотрелось, будто братья Дуровы заигрались в шпионов и добавили этих фитч с удалением данных. Позже мне пришла в голову мысль, что это вполне мог быть заказ от госорганов для привлечения в телегу иностранных агентов и шпионов. А что? Это очень удобно. Раскрутить «либеральный» Телеграм, а потом мониторить идиотов, которые думают, что могут безнаказанно писать в этом мессенджере все что угодно.

Пока мы лишь можем констатировать факт стимуляции интереса к Телеграму. Сначала его хотели заблокировать. Чего только стоят эти бесконечные переписки Жарова с Дуровым, за которыми с интересом наблюдали во всем мире. Стоит вспомнить про черный пиар по федеральным каналам. До сих пор улыбаюсь, глядя на ролик, где парнишка на камеру рассказывает заученный текст.

И знаете что? Это сработало.
Возможно, именно благодаря Телеграму удалось вычислить и задержать членов ячейки ИГ, планировавшие теракты в людных местах Москвы.

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

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

Вывод один: [RB]блокировать этот мессенджер никто не собирается. На него возлагают большие надежды.

[center][RB]Кремлевская хата с краю?! Каталония — российский позор // Виолетта Крымская [/center]]

Не хотят каталонцы жить в Испании. Их, каталонцев, более семи миллионов, они хотят жить сами по себе без Испании, говорить на своем языке, они сами зарабатывают деньги. хотят сами собирать налоги и сами их тратить на развитие своей Родины. нормальные желания, нормальных людей, все почти так как на Донбассе.
Кто только не завоевывал несчастную Каталонию в XII она вошла в состав Королевства Арагон а в 1714 году была захвачена Испанией. И с тех пор пытается отделится от неё. Причины две — экономическая и культурная. Ну не хотят каталонцы жить в одном государстве с испанцами.

Так какого лешего навязываться?
Евродемократы, уважайте волю народа, отстаньте от Каталонии, отпустите её.
Нееее, не пускают.
Каталонцы не хотят войны в 2010 году они провели неофициальные опросы о независимости Каталонии (результат — 90 % проголосовавших были за независимость). В 2012 году более миллиона человек вышли на улицу под лозунгом «Каталония — новое государство Европы». Абсолютное большинство депутатов местного в парламента — сторонники независимости в 2013 году парламент Каталонии провозгласил Декларацию о суверенитете «Каталония — суверенный политический и правовой субъект в составе Испании».

Что еще надо? Референдум? Но почему-то власти Испании в 2014 году запретили его проводить.
Любому терпению приходит конец — 1 октября 2017 года власти Каталонии в одностороннем порядке провели референдум о независимости. Испанские власти пытались сорвать его.
В ходе голосования были спроцированы беспорядки, испанские полицейские, только по официальным данным, более 6 тысяч человек.
Полиция стреляла в желающих проголосовать резиновыми пулями.

Не смотря на всё это ЗА отделение Каталонии от Испании высказались 90% проголосовавших. Мадрид уже объявил референдум незаконным, мол ни было ничего. Думаю что теперь власти Каталонии объявят о своей независимости. Что будет дальше сложно прогнозировать.

Президент Каталонии Карлес Пучдемон готов к диалогу с Мадридом:
[Quote]
«Мы открыты к предложениям диалога, который будет полезен, только если будет вестись с уважением каталонского народа. И мы открыты к предложениям о посредничестве, которое могло бы помочь нам на этом пути».

Центральны власти Испании похоже не хотят ни чего слышать. А власти региона обещали провозгласят независимость в течение 48 часов после референдума.

Вам ни чего не напоминает? А у меня дежавю 2014. Украина. Юго-Восток. Крым.

Казалось бы Россия первая должна поддержать каталонцев, но что не так.

Пресс-секретарь президента России Дмитрий Песков:
[Quote]
«Последовательная позиция Москвы заключается в том, что это внутреннее дело королевства».

Официальный представитель МИД РФ Мария Захарова:
[Quote]
«Мы считаем ситуацию в Каталонии внутренним делом Испании. Полагаем, что развитие событий вокруг каталонского сюжета должно проходить строго в русле действующего испанского законодательства».

И это все?! Моя хата с краю, ни чего не вижу не скажу, меня это не касается? Что за мерзкая, трусливая, двурушная позиция? Ах, западные сволочи, не признают Приднестровье, Абхазию, Южную Осетию и крымский референдум. Вот негодяи. А мы хорошие, мы не признаем референдум в Каталонии. Милые законные власти Испании вы срывайте референдум, а этих сепаров бейте дубинками, особо упрямых садите в тюрьму. Вы правы, да не забутьте признать крымский референдум и поддержать ЛДНР. Так что ли?!

[b]Позор.
[BB]Полный провал российской дипломатии.[/BB]
[RB]Мерзкие двойные стандарты.

Позор.
Что я не права?
Вот, как-то так.

[b]К теме: https://vk.com/video-110749015_456252666 — Цинизм и лицемерие жидоразводилы Старикова
Стариков рассуждает принципами своего тезки Макиавелли http://bourabai.ru/makiavelli/
Всё, что хорошо для государя — хорошо для народа.
У государств нет друзей, но есть только интересы.
При этом, понятно, что когда власть узурпирована ворами типа Медведева и жидоолигархами,
убийцами и людоедами, то речь идет только об их интересах, а не интересах народа.
Г-н Стариков рассчитывает на то, что простой народ, кторый он разводит, не сможет отделить интересы власти и интересы народа, что государство и правительство есть производное от народа, надстройка над ним, а не наоборот.
Целостность государства только тогда имеет право на существование, когда оно является защитой народа, а не его тюрьмой.
К сожалению, история человечества показывает, что прав тот, у кого больше прав, то есть тот, кто захватил власть.
Как правило — это уголовники, ведущие себя с народом, как тюремные охранники с заключенными.

Мой покойный отец говорил: «[i][b]Власти ровно настолько волки, насколько народ — бараны [/i].»

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

Apriori — масштабируемый алгоритм поиска ассоциативных правил

Современные базы данных имеют очень большие размеры, достигающие гига- и терабайтов, и тенденцию к дальнейшему увеличению. И поэтому, для нахождения ассоциативных правил требуются эффективные масштабируемые алгоритмы, позволяющие решить задачу за приемлемое время. Об одном из таких алгоритмов и пойдет речь в данной статье. Мы опишем алгоритм Apriori. Терминология и обозначения, которыми мы будем пользоваться, даны в статье «Введение в анализ ассоциативных правил».

Для того, чтобы было возможно применить алгоритм, необходимо провести предобработку данных: во-первых, привести все данные к бинарному виду; во-вторых, изменить структуру данных.

Таблица 1. Обычный вид базы данных транзакций:

Таблица 2. Нормализованный вид:

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

Более того, как видно из таблицы, все элементы упорядочены в алфавитном порядке (если это числа, они должны быть упорядочены в числовом порядке). Как вы, наверное, уже догадались, это сделано неслучайно. Но, не будем забегать вперед, всему свое время.

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

Свойство анти-монотонности

Выявление часто встречающихся наборов элементов – операция, требующая много вычислительных ресурсов и, соответственно, времени. Примитивный подход к решению данной задачи – простой перебор всех возможных наборов элементов. Это потребует O(2 |I| ) операций, где |I| – количество элементов. Apriori использует одно из свойств поддержки, гласящее: поддержка любого набора элементов не может превышать минимальной поддержки любого из его подмножеств. Например, поддержка 3-элементного набора <Хлеб, Масло, Молоко>будет всегда меньше или равна поддержке 2-элементных наборов <Хлеб, Масло>, <Хлеб, Молоко>, <Масло, Молоко>. Дело в том, что любая транзакция, содержащая <Хлеб, Масло, Молоко>, также должна содержать <Хлеб, Масло>, <Хлеб, Молоко>, <Масло, Молоко>, причем обратное не верно.

Это свойство носит название анти-монотонности и служит для снижения размерности пространства поиска. Не имей мы в наличии такого свойства, нахождение многоэлементных наборов было бы практически невыполнимой задачей в связи с экспоненциальным ростом вычислений.

Свойству анти-монотонности можно дать и другую формулировку: с ростом размера набора элементов поддержка уменьшается, либо остается такой же. Из всего вышесказанного следует, что любой k-элементный набор будет часто встречающимся тогда и только тогда, когда все его (k-1)-элементные подмножества будут часто встречающимися.

Все возможные наборы элементов из I можно представить в виде решетки, начинающейся с пустого множества, затем на 1 уровне 1-элементные наборы, на 2-м – 2-элементные и т.д. На k уровне представлены k-элементные наборы, связанные со всеми своими (k-1)-элементными подмножествами.

Рассмотрим рисунок 1, иллюстрирующий набор элементов I – . Предположим, что набор из элементов имеет поддержку ниже заданного порога и, соответственно, не является часто встречающимся. Тогда, согласно свойству анти-монотонности, все его супермножества также не являются часто встречающимися и отбрасываются. Вся эта ветвь, начиная с , выделена фоном. Использование этой эвристики позволяет существенно сократить пространство поиска.

Алгоритм Apriori

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

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

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

  1. F1 =
  2. для (k=2; Fk-1<> $\oslash$; k++) <
  3. Ck = Apriorigen(Fk-1) // генерация кандидатов
  4. для всех транзакций t $\epsilon$ T <
  5. Ct = subset(Ck, t) // удаление избыточных правил
  6. для всех кандидатов c $\epsilon$ Ct
  7. c.count ++
  8. >
  9. Fk = < c $\epsilon$ Ck | c.count >= minsupport> // отбор кандидатов
  10. >
  11. Результат $\cup$ Fk

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

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

  1. Объединение. Каждый кандидат Ck будет формироваться путем расширения часто встречающегося набора размера (k-1) добавлением элемента из другого (k-1)- элементного набора.
    Приведем алгоритм этой функции Apriorigen в виде небольшого SQL-подобного запроса.
    insert into Ck
    select p.item1, p.item2, …, p.itemk-1, q.itemk-1
    From Fk-1 p, Fk-1 q
    where p.item1= q.item1, p.item2 = q.item2, … , p.itemk-2 = q.itemk-2, p.itemk-1
  2. Удаление избыточных правил. На основании свойства анти-монотонности, следует удалить все наборы c $\epsilon$ Ck если хотя бы одно из его (k-1) подмножеств не является часто встречающимся.

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

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

Хэш-дерево с кандидатами-наборами построено, теперь, используя хэш-дерево, легко подсчитать поддержку для каждого кандидата. Для этого нужно «пропустить» каждую транзакцию через дерево и увеличить счетчики для тех кандидатов, чьи элементы также содержатся и в транзакции, т.е. Ck $\cap$ Ti = Ck. На корневом уровне хэш-функция применяется к каждому элементу из транзакции. Далее, на втором уровне, хэш-функция применяется ко вторым элементам и т.д. На k-уровне хэшируется k-элемент. И так до тех пор, пока не достигнем листа. Если кандидат, хранящийся в листе, является подмножеством рассматриваемой транзакции, тогда увеличиваем счетчик поддержки этого кандидата на единицу.

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

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

Извлечение правил – менее трудоемкая задача. Во-первых, для подсчета достоверности правила достаточно знать поддержку самого набора и множества, лежащего в условии правила. Например, имеется часто встречающийся набор и требуется подсчитать достоверность для правила AB $\Rightarrow$ C. Поддержка самого набора нам известна, но и его множество , лежащее в условии правила, также является часто встречающимся в силу свойства анти-монотонности, и значит его поддержка нам известна. Тогда мы легко сможем подсчитать достоверность. Это избавляет нас от нежелательного просмотра базы транзакций, который потребовался в том случае если бы это поддержка была неизвестна.

Чтобы извлечь правило из часто встречающегося набора F, следует найти все его непустые подмножества. И для каждого подмножества s мы сможем сформулировать правило s $\Rightarrow$ (F – s), если достоверность правила conf(s $\Rightarrow$ (F – s)) = supp(F)/supp(s) не меньше порога minconf.

Заметим, что числитель остается постоянным. Тогда достоверность имеет минимальное значение, если знаменатель имеет максимальное значение, а это происходит в том случае, когда в условии правила имеется набор, состоящий из одного элемента. Все супермножества данного множества имеют меньшую или равную поддержку и, соответственно, большее значение достоверности. Это свойство может быть использовано при извлечении правил. Если мы начнем извлекать правила, рассматривая сначала только один элемент в условии правила, и это правило имеет необходимую поддержку, тогда все правила, где в условии стоят супермножества этого элемента, также имеют значение достоверности выше заданного порога. Например, если правило A $\Rightarrow$ BCDE удовлетворяет минимальному порогу достоверности minconf, тогда AB $\Rightarrow$ CDE также удовлетворяет. Для того, чтобы извлечь все правила используется рекурсивная процедура. Важное замечание: любое правило, составленное из часто встречающегося набора, должно содержать все элементы набора. Например, если набор состоит из элементов , то правило A $\Rightarrow$ B не должно рассматриваться.

Это интересно:

  • Похож на линкольн для адвоката Похож на линкольн для адвоката Год: 2011 Страна: США Студия: Lionsgate / Stone Village Productions Жанр: драма, криминал, . Бюджет: $40 000 000 Сборы в США: $47 569 661 Сборы в мире: + $4 900 000 = $52 469 661 Премьера (мир): 10 марта 2011 Премьера (РФ): 14 апреля 2011, «Люксор» Релиз […]
  • 111 центр судебно-медицинских и криминалистических экспертиз мо рф Главный государственный центр судебно-медицинских и криминалистических экспертиз министерства обороны Российской Федерации 195229, Госпитальная пл., 3 тел.: (495) 263-06-66 факс: (495) 263-02-65 Колкутин Виктор Викторович* Начальник Главный судебно-медицинский эксперт МО РФ (1997). […]
  • Льготы пенсионерам по транспортному налогу в санкт-петербурге 2018 Льготы по транспортному налогу в Санкт-Петербурге Как уплатить налоги через интернет Транспортный налог является региональным - это означает, что льготы по нему могут быть установлены как главой 28 Налогового кодекса РФ, так и законами субъектов РФ о транспортном налоге. В […]
  • Инвалид 3 группы облагается налогом Льготы для инвалидов предпринимателей в 2018 году Какие существуют льготы инвалидам-предпринимателям — этим вопросом задаются лица с ограниченными возможностями, которые хотят открыть свой бизнес. Законодатель предусмотрел некоторые особенности оформления индивидуального […]
  • Как написать заявление на работу учителем Образец заявления на работу в школу Неплохой шаблон документа послужит, чтобы сохранить время для тщательной обработки бумаги. Важные документы имеют критичные поля для данных. Чтобы заполнить их правильно требуется рассмотреть принцип. Проще всего сделать это прочитав шаблон, […]
  • Оформить инвалидность 3 группы Перечень заболеваний, при которых устанавливается 3 группа инвалидности Одним из наиболее актуальных вопросов для людей, страдающих тяжелыми заболеваниями, является получение инвалидности. Многие люди не осведомлены об условиях её получения, а также льготах, предоставляемых при […]
  • Пенсия 3 группа инвалидности 2018 Пенсия по инвалидности 3 группы в 2018 году Те граждане, кто в силу состояния своего здоровья, не может боле трудиться по своей профессии, но способен выполнять другую, более простую работу либо работать по своей первоначальной специальности, но в облегченном режиме, относятся к III […]
  • Правило написания рун Руны — письменность древних германцев. Употреблялась с I—II по XII век на территории современных Дании, Швеции и Норвегии, по X—XIII век в Исландии и Гренландии, а в шведской провинции Даларна вплоть до XIX века. Также, предполагаемая письменность русов до IX века. После принятия […]
Все права защищены. 2018