<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; алгоритм apriori</title>
	<atom:link href="http://web.snauka.ru/issues/tag/algoritm-apriori/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Разработка программной системы поиска ассоциативных правил на основе алгоритма apriori</title>
		<link>https://web.snauka.ru/issues/2014/10/38733</link>
		<comments>https://web.snauka.ru/issues/2014/10/38733#comments</comments>
		<pubDate>Thu, 02 Oct 2014 08:39:57 +0000</pubDate>
		<dc:creator>Баженов Руслан Иванович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[apriori algorithm]]></category>
		<category><![CDATA[association rules]]></category>
		<category><![CDATA[data mining]]></category>
		<category><![CDATA[алгоритм apriori]]></category>
		<category><![CDATA[ассоциативные правила]]></category>
		<category><![CDATA[интеллектуальный анализ данных]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/?p=38733</guid>
		<description><![CDATA[Интеллектуальный анализ данных (data mining) является одним из приоритетных направлений современных исследований. Огромное количество информации в современных учетных информационных системах требует осмысления и извлечения из них знаний, позволяющих разработать рекомендации для улучшения бизнеса. Методом решения описываемой проблемы может служить поиск ассоциативных правил, результаты которого используются для оптимального планирования закупок, расходов на рекламу и др.  Проблемами [...]]]></description>
			<content:encoded><![CDATA[<p><span>Интеллектуальный анализ данных (data mining) является одним из приоритетных направлений современных исследований. Огромное количество информации в современных учетных информационных системах требует осмысления и извлечения из них знаний, позволяющих разработать рекомендации для улучшения бизнеса. Методом решения описываемой проблемы может служить поиск ассоциативных правил, результаты которого используются для оптимального планирования закупок, расходов на рекламу и др. </span></p>
<p><span>Проблемами поиска ассоциативных правил занимались различные ученые. А.Шахиди рассмотрел общие вопросы поиска ассоциативных правил [1]. М.Г.Асеев, В.А. Дюк [2] показали проблемы поиска if-then правил в данных. Систему нахождения бизнес-правил типа &#8220;if-then&#8221; в задачах транспортной логистики разработали И.А.Минаков, С.И.Вольман [3]. А.П.Корнилков, Т.В.Хабибулина показали реализацию поиска ассоциативных правил средствами языка программирования php [4]. Интерактивный анализ ассоциативных правил в базах данных изучался A.В.Бондаренко, А.С.Гудковым [5]. Е.В.Галкина исследовала ассоциативные правила в бизнес-анализе и контроле [6]. М.В.Терешонок применил поиск ассоциативных правил для анализа загрузки сетей сотовой связи [7]. Методику поиска ассоциативных правил при обработке данных в распределенных информационных системах показала Т.Ю.Горохова [8]. А.Ю.Краковецкий применял метод поиска ассоциативных правил на основе сильных наборов данных и fp-дерева [9]. А.Н.Шабельников, В.А.Шабельников исследовали поиск аномалий в технических базах данных временных рядов [10]. В.М.Гриняк и др. описали информационную технологию планирования сезонных продаж [11]. Р.И.Баженов, В.А.Векслер разработали конфигурацию для системы 1С: Предприятие по интеллектуальному анализу с поддержкой поиска ассоциативных правил [12-16]. Зарубежные ученые описывали применения метода в различных областях [17, 18]. </span></p>
<p><span>Для реализации поиска ассоциативных правил был выбран достаточно простой алгоритм Apriori [1]. Опишем его.</span></p>
<p><span>Имеется база данных, которая состоит из покупательских транзакций. Каждая транзакция является набором товаров, приобретаемым покупателем за один раз. </span></p>
<p><span>Пусть I = {i</span><sub><span>1</span></sub><span>, i</span><sub><span>2</span></sub><span>, i</span><sub><span>3</span></sub><span>, …i</span><sub><span>n</span></sub><span>} – множество (набор) товаров или элементов. Пусть D – множество транзакций, где каждая транзакция T представляет собой набор элементов из I, T </span><img src="http://content.snauka.ru/web/38733_files/0CAQLTK9G.gif" alt="" width="16" height="16" /><span> I. Каждая транзакция является бинарным вектором, где t[k]=1, если i</span><sub><span>k</span></sub><span> элемент присутствует в транзакции, иначе t[k]=0. Транзакция T содержит X, некоторый набор элементов из I, если X</span><img src="http://content.snauka.ru/web/38733_files/0.gif" alt="" width="16" height="13" /><span> T. Будем называть ассоциативным правилом импликацию X </span><img src="http://content.snauka.ru/web/38733_files/0(1).gif" alt="" width="20" height="16" /><span>Y, где X</span><img src="http://content.snauka.ru/web/38733_files/0(2).gif" alt="" width="16" height="13" /><span> I, Y </span><img src="http://content.snauka.ru/web/38733_files/0(3).gif" alt="" width="16" height="13" /><span>I и X </span><img src="http://content.snauka.ru/web/38733_files/0(4).gif" alt="" width="17" height="13" /><span>Y =</span><img src="http://content.snauka.ru/web/38733_files/0(5).gif" alt="" width="17" height="18" /><span>. Правило X </span><img src="http://content.snauka.ru/web/38733_files/0(6).gif" alt="" width="20" height="16" /><span> Y имеет поддержку s (support), если s% транзакций из D, содержат X </span><img src="http://content.snauka.ru/web/38733_files/0(7).gif" alt="" width="17" height="13" /><span>Y, supp(X </span><img src="http://content.snauka.ru/web/38733_files/0(8).gif" alt="" width="20" height="16" /><span>Y) = supp (X </span><img src="http://content.snauka.ru/web/38733_files/0CAUMLUVE.gif" alt="" width="17" height="13" /><span>Y). Достоверность правила показывает какова вероятность того, что из X следует Y. Правило X </span><img src="http://content.snauka.ru/web/38733_files/0(9).gif" alt="" width="20" height="16" /><span>Y справедливо с достоверностью (confidence) c, если c% транзакций из D, содержащих X, также содержат Y, conf(X </span><img src="http://content.snauka.ru/web/38733_files/0(10).gif" alt="" width="20" height="16" /><span>Y) = supp(X </span><img src="http://content.snauka.ru/web/38733_files/0(11).gif" alt="" width="17" height="13" /><span> Y)/supp(X ) [1].</span></p>
<p><span>Была разработана программа, реализующая алгоритм Apriori на Delphi. Покажем основную процедуру.</span></p>
<p>function TForm1.gen(cand : TList) : TList;<br />
var<br />
&nbsp;&nbsp;i, j, k : Integer;<br />
&nbsp;&nbsp;set_len : Integer; { Длина общей части наборов при объединении}<br />
&nbsp;&nbsp;tSet, tSet1, tSet_new : PProdSet;<br />
&nbsp;&nbsp;new_cand : TList;<br />
&nbsp;&nbsp;equal : Boolean;<br />
begin<br />
&nbsp;&nbsp;{ Новый список наборов}<br />
&nbsp;&nbsp;new_cand := TList.Create;<br />
&nbsp;&nbsp;if cand = nil then<br />
&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Одноэлементные наборы}<br />
&nbsp;&nbsp;&nbsp;&nbsp;for i := 0 to tovars.Count &#8211; 1 do<br />
&nbsp;&nbsp;&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Новый кандидат}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;New(tSet);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetLength(tSet^.Items, 1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tSet^.Items[0] := i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tSet^.podder := 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_cand.Add(tSet);<br />
&nbsp;&nbsp;&nbsp;&nbsp;end;<br />
&nbsp;&nbsp;end<br />
&nbsp;&nbsp;else<br />
&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;{  Много элементные наборы}<br />
&nbsp;&nbsp;&nbsp;&nbsp;{ Если в списке больше одного набора}<br />
&nbsp;&nbsp;&nbsp;&nbsp;if cand.Count > 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i := 0 to cand.count &#8211; 1 do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Первый набор для объединения}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tSet := cand.Items[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Длина общей части}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;set_len := High(tSet^.items);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for j := i + 1 to cand.count &#8211; 1 do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Второй набор для объединения}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tSet1 := cand.Items[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if set_len < 1 then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equal := true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Сравниваем общие части наборов}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;equal := true;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for k := 0 to set_len - 1 do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if tSet^.Items[k] <> tSet1^.Items[k] then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; equal := false;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if equal then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Новый набор}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;New(tSet_new);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tSet_New^.podder := 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Длина нового набора}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetLength(tSet_new^.Items, set_len + 2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Копируем первый набор}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for k := 0 to High(tSet^.items) do<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tSet_new^.Items[k] := tSet^.items[k];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Добавляем остаток второго набора}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tSet_new^.Items[set_len + 1] := tSet1^.items[set_len];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ Добавляем новый набор в список кандидатов}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new_cand.Add(tSet_new);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br />
&nbsp;&nbsp;&nbsp;&nbsp;end;</p>
<p><span>Данные предоставлены компанией, находящейся в г.Биробиджан. Они были выгружены из системы 1С:Предприятие 8, и представляют собой отчет по продажам за I квартал 2014 года. Данные были обработаны и представлены в формате .csv (рис. 1).</span></p>
<div align="center"><img class="aligncenter" src="http://content.snauka.ru/web/38733_files/62.gif" alt="" width="1251" height="529" /><span>Рисунок 1 &#8211; Входные данные для анализа</span></div>
<p><span>Основное окно программы показано на рис.2.</span></p>
<div align="center"><img src="http://content.snauka.ru/web/38733_files/113.gif" alt="" width="885" height="499" /><br />
<span>Рисунок 2 – Окно программы с загруженными данными</span></div>
<p><span>После запуска алгоритма необходимо выбрать показатели, по которым будет осуществляться расчет (рис.3).</span></p>
<div align="center"><img src="http://content.snauka.ru/web/38733_files/124.gif" alt="" width="324" height="251" /><br />
<span>Рисунок 3 – Окно для выбора показателей</span></div>
<p><span>После проведения анализа, полученные правила выводятся в специальную область (рис. 4).</span></p>
<p><img class="aligncenter" src="http://content.snauka.ru/web/38733_files/167.gif" alt="" width="885" height="499" /></p>
<div align="center"><span>Рисунок 4 – Окно программы после обработки данных</span></div>
<p><span>Результаты анализа можно сохранить в текстовом файле (рис. 5).</span></p>
<div align="center"><img src="http://content.snauka.ru/web/38733_files/236.gif" alt="" width="953" height="691" /><br />
<span>Рисунок 5 – Текстовый файл с результатами</span></div>
<p><span>Полученные в результате исследования ассоциативные правила были переданы руководству компании для принятия решений.</span></p>
<p><span>Таким образом, была разработана простая программа по поиску ассоциативных правил. Полученные в ходе исследования материалы можно использовать на практике для анализа выгруженных данных из 1С:Предприятие и для проведения соответствующей лабораторной работы в курсах «Интеллектуальные информационные системы», «Интеллектуальный анализ данных».</span></p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2014/10/38733/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
