ÒÏÎÈ   ê îãëàâëåíèþ   ê äèñêðåòíîé ìàòåìàòèêå   òåõíîëîãèè ïðîãðàììèðîâàíèÿ

Ìåòîäû è ñðåäñòâà àíàëèçà äàííûõ

Ïîèñê àññîöèàòèâíûõ ïðàâèë

Îäíîé èç íàèáîëåå ðàñïðîñòðàí¸ííûõ çàäà÷ àíàëèçà äàííûõ ÿâëÿåòñÿ îïðåäåëåíèå ÷àñòî âñòðå÷àþùèõñÿ
íàáîðîâ îáúåêòîâ â áîëüøîì ìíîæåñòâå íàáîðîâ.
Âïåðâûå ýòî çàäà÷à áûëà ïðåäëîæåíà ïîèñêà àññîöèàòèâíûõ ïðàâèë äëÿ íàõîæäåíèÿ òèïè÷íûõ øàáëîíîâ ïîêóïîê,
ñîâåðøàåìûõ â ñóïåðìàðêåòàõ, ïîýòîìó èíîãäà åå åùå íàçûâàþò àíàëèçîì ðûíî÷íîé êîðçèíû (market basket analysis).

Ôîðìàëüíàÿ ïîñòàíîâêà çàäà÷è

Ïóñòü èìååòñÿ áàçà äàííûõ, ñîñòîÿùàÿ èç ïîêóïàòåëüñêèõ òðàíçàêöèé.
Êàæäàÿ òðàíçàêöèÿ – ýòî íàáîð òîâàðîâ, êóïëåííûõ ïîêóïàòåëåì çà îäèí âèçèò. Òàêóþ òðàíçàêöèþ åùå íàçûâàþò ðûíî÷íîé êîðçèíîé.

Ïóñòü I = {ii,i2,...,ij,...,in} – ìíîæåñòâî (íàáîð) òîâàðîâ (îáúåêòîâ) îáùèì ÷èñëîì n.
Ïóñòü D – ìíîæåñòâî òðàíçàêöèé D = {T1,T2,Tr,...,Tm}, ãäå êàæäàÿ òðàíçàêöèÿ T – ýòî íàáîð ýëåìåíòîâ èç I. T=\{i_j|i_j \in I\}.

 ñôåðå òîðãîâëè, íàïðèìåð, òàêèìè îáúåêòàìè ÿâëÿþòñÿ òîâàðû, ïðåäñòàâëåííûå â ïðàéñ-ëèñòå:

Èäåíòèôèêàòîð Íàèìåíîâàíèå òîâàðà Öåíà
0 Øîêîëàä 30
1 Õëåá 12
2 Ìàñëî 10
3 Âîäà 4
4 Ìîëîêî 14
5 Îðåõè 15


Îíè ñîîòâåòñòâóþò ñëåäóþùåìó ìíîæåñòâó îáúåêòîâ: I={øîêîëàä, õëåá, ìàñëî, âîäà, ìîëîêî, îðåõè}.
Ïðèìåðàìè òðàíçàêöèé ìîãóò áûòü T1 = { õëåá, ìàñëî, ìîëîêî }, T2 = { øîêîëàä, âîäà, îðåõè }.
Ìíîæåñòâî òðàíçàêöèé, â êîòîðûå âõîäèò îáúåêò ij, îáîçíà÷èì ñëåäóþùèì îáðàçîì:
D_{i_j} = \{T_r | i_j \in T_r; j=1..n; r=1..m\} \subseteq D.
Ìíîæåñòâî D ìîæåò áûòü ïðåäñòàâëåíî ñëåäóþùèì îáðàçîì:

Íîìåð òðàíçàêöèè Íîìåð òîâàðà Íàèìåíîâàíèå òîâàðà Öåíà
0 1 Õëåá 12
0 3 Âîäà 4
0 4 Ìîëîêî 14
1 2 Ìàñëî 10
1 3 Âîäà 4
1 5 Îðåõè 15
2 5 Îðåõè 15
2 2 Ìàñëî 10
2 1 Õëåá 12
2 2 Ìàñëî 10
2 3 Âîäà 4
3 2 Ìàñëî 10
3 5 Îðåõè 15
3 2 Ìàñëî 10


 äàííîì ïðèìåðå, ìíîæåñòâîì òðàíçàêöèé, ñîäåðæàùèì îáúåêò "Âîäà", ÿâëÿåòñÿ ñëåäóþùåå ìíîæåñòâî:

D(âîäà) = {{ õëåá, âîäà, ìîëîêî },
           { ìàñëî, âîäà, îðåõè },
{ îðåõè, ìàñëî, õëåá, ìàñëî, âîäà }}.

Íåêîòîðûé ïðîèçâîëüíûé íàáîð îáúåêòîâ (itemset) îáîçíà÷èì ñëåäóþùèì îáðàçîì:
F=\{i_j | i_j \in I; j = 1..n\}, íàïðèìåð F = {õëåá, ìàñëî}.
Íàáîð, ñîñòîÿùèé èç k ýëåìåíòîâ, íàçûâàåòñÿ k-ýëåìåíòíûì íàáîðîì.
Ìíîæåñòâî òðàíçàêöèé, â êîòîðûå âõîäèò íàáîð F, îáîçíà÷èì ñëåäóþùèì îáðàçîì:
D_F = \{T_r | F \subseteq T_r; r = 1..m\} \subseteq D.
 äàííîì ïðèìåðå:

D(ìàñëî, âîäà) = {{ ìàñëî, âîäà, îðåõè },
{ îðåõè, ìàñëî, õëåá, ìàñëî, âîäà }}.

Îòíîøåíèå êîëè÷åñòâà òðàíçàêöèé, â êîòîðîå âõîäèò íàáîð F, ê îáùåìó êîëè÷åñòâó òðàíçàêöèé
íàçûâàåòñÿ ïîääåðæêîé (support) íàáîðà F è îáîçíà÷àåòñÿ Supp(F):
Supp(F) = \frac{|D_F|}{|D|}.
Äëÿ íàáîðà { ìàñëî, âîäà } ïîääåðæêà áóäåò ðàâíà 0,5, ò.ê. äàííûé íàáîð âõîäèò â äâå òðàíçàêöèè
ñ íîìåðàìè 1 è 2, à âñåãî òðàíçàêöèé ÷åòûðå.
Ïðè ïîèñêå àíàëèòèê ìîæåò óêàçàòü ìèíèìàëüíîå çíà÷åíèå ïîääåðæêè èíòåðåñóþùèõ åãî íàáîðîâ Suppmin.
Íàáîð íàçûâàåòñÿ ÷àñòûì (large itemset), åñëè çíà÷åíèå åãî ïîääåðæêè áîëüøå ìèíèìàëüíîãî çíà÷åíèÿ ïîääåðæêè,
çàäàííîãî ïîëüçîâàòåëåì: Supp(F) > Suppmin.
Òàêèì îáðàçîì, ïðè ïîèñêå àññîöèàòèâíûõ ïðàâèë òðåáóåòñÿ íàéòè ìíîæåñòâî âñåõ ÷àñòûõ íàáîðîâ:
L = {F | Supp(F) > Suppmin}.
 äàííîì ïðèìåðå ÷àñòûìè íàáîðàìè ïðè Suppmin = 0,5 ÿâëÿþòñÿ ñëåäóþùèå:

{õëåá}Suppmin = 0,5;
{õëåá, âîäà}Suppmin = 0,5;
{ìàñëî}Suppmin = 0,75;
{ìàñëî, âîäà}Suppmin = 0,5;
{ìàñëî, âîäà, îðåõè}Suppmin = 0,5;
{ìàñëî, îðåõè}Suppmin = 0,75;
{âîäà}Suppmin = 0,75;
{âîäà, îðåõè}Suppmin = 0,5;
{îðåõè}Suppmin = 0,75;

Ïðåäñòàâëåíèå ðåçóëüòàòîâ

Ðåøåíèå çàäà÷è ïîèñêà àññîöèàòèâíûõ ïðàâèë, êàê è ëþáîé çàäà÷è, ñâîäèòñÿ ê îáðàáîòêå
èñõîäíûõ äàííûõ è ïîëó÷åíèþ ðåçóëüòàòîâ. Ðåçóëüòàòû, ïîëó÷àåìûå ïðè ðåøåíèè äàííîé çàäà÷è
ïðèíÿòî ïðåäñòàâëÿòü â âèäå àññîöèàòèâíûõ ïðàâèë. Â ñâÿçè ñ ýòèì â èõ ïîèñêå âûäåëÿþ äâà ýòàïà:

Àññîöèàòèâíûå ïðàâèëà èìåþò ñëåäóþùèé âèä:

åñëè (óñëîâèå), òî (ðåçóëüòàò),

ãäå óñëîâèå - îáû÷íî íå ëîãè÷åñêîå âûðàæåíèå (êàê â êëàññèôèêàöèîííûõ ïðàâèëàõ),
à íàáîð îáúåêòîâ èç ìíîæåñòâà I, ñ êîòîðûì ñâÿçàíû (àññîöèèðîâàíû) îáúåêòû, âêëþ÷åííûå
â ðåçóëüòàò äàííîãî ïðàâèëà.
Íàïðèìåð, àññîöèàòèâíîå ïðàâèëî: "åñëè (ìîëîêî, ìàñëî), òî (õëåá)" îçíà÷àåò, ÷òî åñëè
ïîòðåáèòåëü ïîêóïàåò ìîëîêî è ìàñëî, òî îí ïîêóïàåò è õëåá.
Îñíîâíûì äîñòîèíñòâîì àññîöèàòèâíûõ ïðàâèë ÿâëÿåòñÿ èõ ë¸ãêîå âîñïðèÿòèå ÷åëîâåêîì è
ïðîñòàÿ èíòåðïðåòàöèÿ ÿçûêàìè ïðîãðàììèðîâàíèÿ. Îäíàêî, îíè íå âñåãäà ïîëåçíû.
Âûäåëÿþò òðè âèäà ïðàâèë:

Àññîöèàòèâíûå ïðàâèëà ñòðîÿòñÿ íà îñíîâå ÷àñòûõ íàáîðîâ. Òàê ïðàâèëà, ïîñòðîåííûå íà îñíîâàíèè íàáîðà F,
ÿâëÿþòñÿ âîçìîæíûìè êîìáèíàöèÿìè îáúåêòîâ, âõîäÿùèõ â íåãî.
Íàïðèìåð, äëÿ íàáîðà {ìàñëî, âîäà, îðåõè}, ìîãóò áûòü ïîñòðîåíû ñëåäóþùèå ïðàâèëà:

åñëè (ìàñëî), òî (âîäà); åñëè (ìàñëî), òî (îðåõè); åñëè (ìàñëî), òî (âîäà, îðåõè);
åñëè (âîäà), òî (ìàñëî); åñëè (âîäà), òî (îðåõè); åñëè (âîäà), òî (ìàñëî, îðåõè);
åñëè (îðåõè), òî (ìàñëî); åñëè (îðåõè), òî (âîäà); åñëè (îðåõè), òî (ìàñëî, âîäà);
åñëè (ìàñëî, âîäà), òî (îðåõè); åñëè (ìàñëî, îðåõè), òî (âîäà); åñëè (âîäà, îðåõè), òî (ìàñëî); 

Òàêèì îáðàçîì, êîëè÷åñòâî àññîöèàòèâíûõ ïðàâèë ìîæåò áûòü î÷åíü áîëüøèì è òðóäíîâîñïðèíèìàåìûì äëÿ ÷åëîâåêà.
Ê òîìó æå, íå âñå èç ïîñòðîåííûõ ïðàâèë íåñóò â ñåáå ïîëåçíóþ èíôîðìàöèþ.
Äëÿ îöåíêè èõ ïîëåçíîñòè ââîäÿòñÿ ñëåäóþùèå âåëè÷èíû:
Ïîääåðæêà(support) - ïîêàçûâàåò, êàêîé ïðîöåíò òðàíçàêöèé ïîääåðæèâàåò äàííîå ïðàâèëî.
Òàê êàê ïðàâèëî ñòðîèòñÿ íà îñíîâàíèè íàáîðà, òî, çíà÷èò, ïðàâèëî X=>Y èìååò ïîääåðæêó, ðàâíóþ ïîääåðæêå íàáîðà F,
êîòîðûé ñîñòàâëÿþò X è Y:
Supp_{X=>Y} = Supp_F = \frac{|D_{F=X \cup Y}|}{|D|}.
Î÷åâèäíî, ÷òî ïðàâèëà, ïîñòðîåííûå íà îñíîâàíèè îäíîãî è òîãî æå íàáîðà, èìåþò îäèíàêîâóþ ïîääåðæêó,
íàïðèìåð, ïîääåðæêà Supp(åñëè (âîäà, ìàñëî), òî (îðåõè) = Supp(âîäà, ìàñëî, îðåõè) = 0,5.

Äîñòîâåðíîñòü(confidence) - ïîêàçûâàåò âåðîÿòíîñòü òîãî, ÷òî èç íàëè÷èÿ â òðàíçàêöèè íàáîðà X ñëåäóåò íàëè÷èå â íåé íàáîðà Y.
Äîñòîâåðíîñòüþ ïðàâèëà X=>Y ÿâëÿåòñÿ îòíîøåíèå ÷èñëà òðàíçàêöèé, ñîäåðæàùèõ X è Y, ê ÷èñëó òðàíçàêöèé, ñîäåðæàùèõ íàáîð Õ:
Conf_{X=>Y} = \frac{|D_{F=X \cup Y}|}{|D_X|} = \frac{Supp_{X \cup Y}}{Supp_X}.
Î÷åâèäíî, ÷òî ÷åì áîëüøå äîñòîâåðíîñòü, òåì ïðàâèëî ëó÷øå, ïðè÷åì ó ïðàâèë, ïîñòðîåííûõ íà îñíîâàíèè îäíîãî è òîãî æå íàáîðà,
äîñòîâåðíîñòü áóäåò ðàçíàÿ, íàïðèìåð:

Conf(åñëè (âîäà), òî (îðåõè)) = 2/3;
Conf(åñëè (îðåõè), òî (âîäà)) = 2/3;
Conf(åñëè (âîäà, ìàñëî), òî (îðåõè)) = 1;
Conf(åñëè (âîäà), òî (îðåõè, ìàñëî)) = 2/3.

Ê ñîæàëåíèþ, äîñòîâåðíîñòü íå ïîçâîëÿåò îïðåäåëèòü ïîëåçíîñòü ïðàâèëà. Åñëè ïðîöåíò íàëè÷èÿ â òðàíçàêöèÿõ íàáîðà Y
ïðè óñëîâèè íàëè÷èÿ â íåì íàáîðà Õ ìåíüøå, ÷åì ïðîöåíò áåçóñëîâíîãî íàëè÷èÿ íàáîðà Y, ò.å.:
Conf_{X=>Y} = \frac{Supp_{X \cup Y}}{Supp_X} < Supp_Y.
Ýòî çíà÷èò, ÷òî âåðîÿòíîñòü ñëó÷àéíî óãàäàòü íàëè÷èå â òðàíçàêöèè íàáîðà Y áîëüøå, ÷åì ïðåäñêàçàòü ýòî ñ ïîìîùüþ ïðàâèëà X=>Y.
Äëÿ èñïðàâëåíèÿ òàêîé ñèòóàöèè ââîäèòñÿ ìåðà - óëó÷øåíèå.
Óëó÷øåíèå(improvement) - ïîêàçûâàåò, ïîëåçíåå ëè ïðàâèëî ñëó÷àéíîãî óãàäûâàíèÿ. Óëó÷øåíèå ïðàâèëà ÿâëÿåòñÿ îòíîøåíèåì
÷èñëà òðàíçàêöèé, ñîäåðæàùèõ íàáîðû X è Y, ê ïðîèçâåäåíèþ êîëè÷åñòâà òðàíçàêöèé, ñîäåðæàùèõ íàáîð Õ, è êîëè÷åñòâà òðàíçàêöèé,
ñîäåðæàùèõ íàáîð Y:
impr_{X=>Y} = \frac{|D_{F=X \cup Y}|}{|D_X||D_Y|} = \frac{Supp_{X \cup Y}}{Supp_X * Supp_Y}.
Íàïðèìåð, impr(åñëè (âîäà, ìàñëî), òî (îðåõè) = 0,5/(0,5*0,5) = 2.
Åñëè óëó÷øåíèå áîëüøå åäèíèöû, òî ýòî çíà÷èò, ÷òî ñ ïîìîùüþ ïðàâèëà ïðåäñêàçàòü íàëè÷èå íàáîðà Y âåðîÿòíåå, ÷åì ñëó÷àéíîå óãàäûâàíèå,
åñëè ìåíüøå åäèíèöû, òî íàîáîðîò.
 ïîñëåäíåì ñëó÷àå ìîæíî èñïîëüçîâàòü îòðèöàòåëüíîå ïðàâèëî, ò.å. ïðàâèëî, êîòîðîå ïðåäñêàçûâàåò îòñóòñòâèå íàáîð Y:
X => íå Y.
Ïðàâäà, íà ïðàêòèêå òàêèå ïðàâèëà ìàëî ïðèìåíèìû. Íàïðèìåð, ïðàâèëî: "åñëè (âîäà, ìàñëî), òî íå (ìîëîêî)" ìàëî ïîëåçíî,
ò.ê. ñëàáî âûðàæàåò ïîâåäåíèå ïîêóïàòåëÿ.
Äàííûå îöåíêè èñïîëüçóþòñÿ ïðè ãåíåðàöèè ïðàâèë. Àíàëèòèê ïðè ïîèñêå àññîöèàòèâíûõ ïðàâèë
çàäàåò ìèíèìàëüíûå çíà÷åíèÿ ïåðå÷èñëåííûõ âåëè÷èí.  ðåçóëüòàòå òå ïðàâèëà, êîòîðûå íå óäîâëåòâîðÿþò ýòèì óñëîâèÿì,
îòáðàñûâàþòñÿ è íå âêëþ÷àþòñÿ â ðåøåíèå çàäà÷è. Ñ ýòîé òî÷êè çðåíèÿ íåëüçÿ îáúåäèíÿòü ðàçíûå ïðàâèëà, õîòÿ è èìåþùèå
îáùóþ ñìûñëîâóþ íàãðóçêó.
Íàïðèìåð, ñëåäóþùèå ïðàâèëà:

X = i1,i2 =  > Y = i3,
X = i1,i2 = > Y = i4,

íåëüçÿ îáúåäèíèòü â îäíî:

X = i1,i2 =  > Y = i3,i4,

ò.ê. äîñòîâåðíîñòè èõ áóäóò ðàçíûå, ñëåäîâàòåëüíî, íåêîòîðûå èç íèõ ìîãóò áûòü èñêëþ÷åíû, à íåêîòîðûå - íåò.

Àëãîðèòì Apriori

Ñâîéñòâî àíòè-ìîíîòîííîñòè

Âûÿâëåíèå ÷àñòî âñòðå÷àþùèõñÿ íàáîðîâ ýëåìåíòîâ – îïåðàöèÿ, òðåáóþùàÿ ìíîãî âû÷èñëèòåëüíûõ ðåñóðñîâ è, ñîîòâåòñòâåííî, âðåìåíè.
Ïðèìèòèâíûé ïîäõîä ê ðåøåíèþ äàííîé çàäà÷è – ïðîñòîé ïåðåáîð âñåõ âîçìîæíûõ íàáîðîâ ýëåìåíòîâ.
Ýòî ïîòðåáóåò O(2 | I | ) îïåðàöèé, ãäå |I| – êîëè÷åñòâî ýëåìåíòîâ.
Apriori èñïîëüçóåò îäíî èç ñâîéñòâ ïîääåðæêè, ãëàñÿùåå: ïîääåðæêà ëþáîãî íàáîðà ýëåìåíòîâ íå ìîæåò ïðåâûøàòü
ìèíèìàëüíîé ïîääåðæêè ëþáîãî èç åãî ïîäìíîæåñòâ. Íàïðèìåð, ïîääåðæêà 3-ýëåìåíòíîãî íàáîðà {Õëåá, Ìàñëî, Ìîëîêî}
áóäåò âñåãäà ìåíüøå èëè ðàâíà ïîääåðæêå 2-ýëåìåíòíûõ íàáîðîâ {Õëåá, Ìàñëî}, {Õëåá, Ìîëîêî}, {Ìàñëî, Ìîëîêî}.
Äåëî â òîì, ÷òî ëþáàÿ òðàíçàêöèÿ, ñîäåðæàùàÿ {Õëåá, Ìàñëî, Ìîëîêî}, òàêæå äîëæíà ñîäåðæàòü {Õëåá, Ìàñëî}, {Õëåá, Ìîëîêî}, {Ìàñëî, Ìîëîêî},
ïðè÷åì îáðàòíîå íå âåðíî.

Ýòî ñâîéñòâî íîñèò íàçâàíèå àíòè-ìîíîòîííîñòè è ñëóæèò äëÿ ñíèæåíèÿ ðàçìåðíîñòè ïðîñòðàíñòâà ïîèñêà.
Íå èìåé ìû â íàëè÷èè òàêîãî ñâîéñòâà, íàõîæäåíèå ìíîãîýëåìåíòíûõ íàáîðîâ áûëî áû ïðàêòè÷åñêè íåâûïîëíèìîé çàäà÷åé
â ñâÿçè ñ ýêñïîíåíöèàëüíûì ðîñòîì âû÷èñëåíèé.

Ñâîéñòâó àíòè-ìîíîòîííîñòè ìîæíî äàòü è äðóãóþ ôîðìóëèðîâêó: ñ ðîñòîì ðàçìåðà íàáîðà ýëåìåíòîâ ïîääåðæêà óìåíüøàåòñÿ,
ëèáî îñòàåòñÿ òàêîé æå. Èç âñåãî âûøåñêàçàííîãî ñëåäóåò, ÷òî ëþáîé k-ýëåìåíòíûé íàáîð áóäåò ÷àñòî âñòðå÷àþùèìñÿ òîãäà è òîëüêî òîãäà,
êîãäà âñå åãî (k-1)-ýëåìåíòíûå ïîäìíîæåñòâà áóäóò ÷àñòî âñòðå÷àþùèìèñÿ.

Âñå âîçìîæíûå íàáîðû ýëåìåíòîâ èç I ìîæíî ïðåäñòàâèòü â âèäå ðåøåòêè, íà÷èíàþùåéñÿ ñ ïóñòîãî ìíîæåñòâà, çàòåì
íà 1 óðîâíå 1-ýëåìåíòíûå íàáîðû, íà 2-ì – 2-ýëåìåíòíûå è ò.ä. Íà k óðîâíå ïðåäñòàâëåíû k-ýëåìåíòíûå íàáîðû,
ñâÿçàííûå ñî âñåìè ñâîèìè (k-1)-ýëåìåíòíûìè ïîäìíîæåñòâàìè.

Ðàññìîòðèì ðèñóíîê, èëëþñòðèðóþùèé íàáîð ýëåìåíòîâ I – {A, B, C, D}.
Ïðåäïîëîæèì, ÷òî íàáîð èç ýëåìåíòîâ {A, B} èìååò ïîääåðæêó íèæå çàäàííîãî ïîðîãà è, ñîîòâåòñòâåííî, íå ÿâëÿåòñÿ ÷àñòî âñòðå÷àþùèìñÿ.
Òîãäà, ñîãëàñíî ñâîéñòâó àíòè-ìîíîòîííîñòè, âñå åãî ñóïåðìíîæåñòâà òàêæå íå ÿâëÿþòñÿ ÷àñòî âñòðå÷àþùèìèñÿ è îòáðàñûâàþòñÿ.
Âñÿ ýòà âåòâü, íà÷èíàÿ ñ {A, B}, âûäåëåíà ôîíîì. Èñïîëüçîâàíèå ýòîé ýâðèñòèêè ïîçâîëÿåò ñóùåñòâåííî ñîêðàòèòü ïðîñòðàíñòâî ïîèñêà.
Èëëþñòðàöèÿ ñâîéñòâà àíòè-ìîíîòîííîñòè.

Îïèñàíèå àëãîðèòìà

Àëãîðèòì Apriori îïðåäåëÿåò ÷àñòî âñòðå÷àþùèåñÿ íàáîðû çà íåñêîëüêî ýòàïîâ.
Íà i-îì ýòàïå îïðåäåëÿþòñÿ âñå ÷àñòî âñòðå÷àþùèåñÿ i-ýëåìåíòíûå íàáîðû. Êàæäûé ýòàï ñîñòîèò èç äâóõ øàãîâ:

  1. ôîðìèðîâàíèå êàíäèäàòîâ (candidate generation);
  2. ïîäñ÷åò ïîääåðæêè êàíäèäàòîâ (candidate counting).


Ðàññìîòðèì i-ûé ýòàï. Íà øàãå ôîðìèðîâàíèÿ êàíäèäàòîâ àëãîðèòì ñîçäàåò ìíîæåñòâî êàíäèäàòîâ èç i-ýëåìåíòíûõ íàáîðîâ,
÷üÿ ïîääåðæêà ïîêà íå âû÷èñëÿåòñÿ. Íà øàãå ïîäñ÷åòà êàíäèäàòîâ àëãîðèòì ñêàíèðóåò ìíîæåñòâî òðàíçàêöèé,
âû÷èñëÿÿ ïîääåðæêó íàáîðîâ-êàíäèäàòîâ. Ïîñëå ñêàíèðîâàíèÿ îòáðàñûâàþòñÿ êàíäèäàòû, ïîääåðæêà êîòîðûõ ìåíüøå
îïðåäåëåííîãî ïîëüçîâàòåëåì ìèíèìóìà, è ñîõðàíÿþòñÿ òîëüêî ÷àñòî âñòðå÷àþùèåñÿ i-ýëåìåíòíûå íàáîðû.
Âî âðåìÿ ïåðâîãî ýòàïà âûáðàííîå ìíîæåñòâî íàáîðîâ-êàíäèäàòîâ ñîäåðæèò âñå îäíî-ýëåìåíòíûå ÷àñòûå íàáîðû.
Àëãîðèòì âû÷èñëÿåò èõ ïîääåðæêó âî âðåìÿ øàãà ïîäñ÷¸òà ïîääåðæêè êàíäèäàòîâ.
Îïèñàííûé àëãîðèòì ìîæíî çàïèñàòü â âèäå ñëåäóþùåãî ïñåâäîêîäà:

  1. L1 = {÷àñòî âñòðå÷àþùèåñÿ 1-ýëåìåíòíûå íàáîðû}
  2. äëÿ (k=2; Lk-1 <> ; k++) {
  3.   Ck = Apriorigen(Lk-1) // ãåíåðàöèÿ êàíäèäàòîâ
  4.   äëÿ âñåõ òðàíçàêöèé t T {
  5.     Ct = subset(Ck, t) // óäàëåíèå èçáûòî÷íûõ ïðàâèë
  6.     äëÿ âñåõ êàíäèäàòîâ c Ct
  7.        c.count ++
  8.     }
  9.     Lk = { c \in Ck | c.count >= minsupport} // îòáîð êàíäèäàòîâ
 10.   }
 11. Ðåçóëüòàò \bigcup_k L_k

Îáîçíà÷åíèÿ, èñïîëüçóåìûå â àëãîðèòìå:

Lk = {(F1,Supp1),(F2,Supp2),...,(Fq,Suppq)},
ãäå Fj = {i1,i2,...,ik};

Îïèøåì äàííûé àëãîðèòì ïî øàãàì.
Øàã 1. Ïðèñâîèòü k = 1 è âûïîëíèòü îòáîð âñåõ 1-ýëåìåíòíûõ íàáîðîâ, ó êîòîðûõ ïîääåðæêà áîëüøå ìèíèìàëüíî çàäàííîé ïîëüçîâàòåëåì Suppmin.
Øàã 2. k = k + 1.
Øàã 3. Åñëè íå óäàåòñÿ ñîçäàâàòü k-ýëåìåíòíûå íàáîðû, òî çàâåðøèòü àëãîðèòì, èíà÷å âûïîëíèòü ñëåäóþùèé øàã.
Øàã 4. Ñîçäàòü ìíîæåñòâî k-ýëåìåíòíûõ íàáîðîâ êàíäèäàòîâ èç ÷àñòûõ íàáîðîâ. Äëÿ ýòîãî íåîáõîäèìî îáúåäèíèòü â k-ýëåìåíòíûå êàíäèäàòû (k-1)-ýëåìåíòíûå ÷àñòûå íàáîðû. Êàæäûé êàíäèäàò c \in C_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-ïîäîáíîãî çàïðîñà:

insert into Ck
select p.item1,p.item2,...,p.itemk − 1,q.itemk − 1
from Lk − 1p,Lk − 1q
where p.item1 = q.item1,p.item2 = q.item2,...,p.itemk − 2 = q.itemk − 2,p.itemk − 1 < q.itemk − 1

Øàã 5. Äëÿ êàæäîé òðàíçàêöèè T èç ìíîæåñòâà D âûáðàòü êàíäèäàòîâ Ct èç ìíîæåñòâà Ck, ïðèñóòñòâóþùèõ â òðàíçàêöèè T. Äëÿ êàæäîãî íàáîðà èç ïîñòðîåííîãî ìíîæåñòâà Ck óäàëèòü íàáîð, åñëè õîòÿ áû îäíî èç åãî (k-1) ïîäìíîæåñòâ íå ÿâëÿåòñÿ ÷àñòî âñòðå÷àþùèìñÿ ò.å. îòñóòñòâóåò âî ìíîæåñòâå Lk − 1. Ýòî ìîæíî çàïèñàòü â âèäå ñëåäóþùåãî ïñåâäîêîäà:

Äëÿ âñåõ íàáîðîâ c \in C_k âûïîëíèòü
  äëÿ âñåõ (k-1)-ïîäíàáîðîâ s èç c âûïîëíèòü
    åñëè (s \not \in L_{k-1}), òî
      óäàëèòü åãî èç Ck

Øàã 6. Äëÿ êàæäîãî êàíäèäàòà èç Ck óâåëè÷èòü çíà÷åíèå ïîääåðæêè íà åäèíèöó.
Øàã 7. Âûáðàòü òîëüêî êàíäèäàòîâ Lk èç ìíîæåñòâà Ck, ó êîòîðûõ çíà÷åíèå ïîääåðæêè áîëüøå çàäàííîé ïîëüçîâàòåëåì Suppmin. Âåðíóòüñÿ ê øàãó 2.
Ðåçóëüòàòîì ðàáîòû àëãîðèòìà ÿâëÿåòñÿ îáúåäèíåíèå âñåõ ìíîæåñòâ Lk äëÿ âñåõ k.

ÒÏÎÈ   ê îãëàâëåíèþ   ê äèñêðåòíîé ìàòåìàòèêå   òåõíîëîãèè ïðîãðàììèðîâàíèÿ

Çíàåòå ëè Âû, ÷òî â 1965 ãîäó äâà àìåðèêàíöà Ïåíçèàñ (ýìèãðàíò èç Ãåðìàíèè) è Âèëüñîí çàÿâèëè, ÷òî îíè îòêðûëè èçëó÷åíèå êîñìîñà. ×åðåç íåñêîëüêî ëåò èì äàëè Íîáåëåâñêóþ ïðåìèþ, êàê-áóäòî íèêòî íå çíàë ðàáîò Ý. Ðåãåíåðà, èçìåðèâøåãî òåìïåðàòóðó êîñìè÷åñêîãî ïðîñòðàíñòâà ñ ïîìîùüþ çàïóñêà áîëîìåòðà â ñòðàòîñôåðó â 1933 ã.? Ïîäðîáíåå ÷èòàéòå â FAQ ïî ýôèðíîé ôèçèêå.

ÍÎÂÎÑÒÈ ÔÎÐÓÌÀ

Ôîðóì Ðûöàðè òåîðèè ýôèðà


Ðûöàðè òåîðèè ýôèðà
 10.11.2021 - 12:37: ÏÅÐÑÎÍÀËÈÈ - Personalias -> WHO IS WHO - ÊÒÎ ÅÑÒÜ ÊÒÎ - Êàðèì_Õàéäàðîâ.
10.11.2021 - 12:36: ÑÎÂÅÑÒÜ - Conscience -> ÐÀÑ×ÅËÎÂÅ×ÈÂÀÍÈÅ ×ÅËÎÂÅÊÀ. ÊÎÌÓ ÝÒÎ ÍÀÄÎ? - Êàðèì_Õàéäàðîâ.
10.11.2021 - 12:36: ÂÎÑÏÈÒÀÍÈÅ, ÏÐÎÑÂÅÙÅÍÈÅ, ÎÁÐÀÇÎÂÀÍÈÅ - Upbringing, Inlightening, Education -> Ïðîñâåùåíèå îò ä.ì.í. Àëåêñàíäðà Àëåêñååâè÷à Ðåäüêî - Êàðèì_Õàéäàðîâ.
10.11.2021 - 12:35: ÝÊÎËÎÃÈß - Ecology -> Áèîëîãè÷åñêàÿ áåçîïàñíîñòü íàñåëåíèÿ - Êàðèì_Õàéäàðîâ.
10.11.2021 - 12:34: ÂÎÉÍÀ, ÏÎËÈÒÈÊÀ È ÍÀÓÊÀ - War, Politics and Science -> Ïðîáëåìà ãîñóäàðñòâåííîãî òåððîðèçìà - Êàðèì_Õàéäàðîâ.
10.11.2021 - 12:34: ÂÎÉÍÀ, ÏÎËÈÒÈÊÀ È ÍÀÓÊÀ - War, Politics and Science -> ÏÐÀÂÎÑÓÄÈß.ÍÅÒ - Êàðèì_Õàéäàðîâ.
10.11.2021 - 12:34: ÂÎÑÏÈÒÀÍÈÅ, ÏÐÎÑÂÅÙÅÍÈÅ, ÎÁÐÀÇÎÂÀÍÈÅ - Upbringing, Inlightening, Education -> Ïðîñâåùåíèå îò Âàäèìà Ãëîãåðà, ÑØÀ - Êàðèì_Õàéäàðîâ.
10.11.2021 - 09:18: ÍÎÂÛÅ ÒÅÕÍÎËÎÃÈÈ - New Technologies -> Âîëíîâàÿ ãåíåòèêà Ïåòðà Ãàðÿåâà, 5G-êîíòðîëü è óïðàâëåíèå - Êàðèì_Õàéäàðîâ.
10.11.2021 - 09:18: ÝÊÎËÎÃÈß - Ecology -> ÝÊÎËÎÃÈß ÄËß ÂÑÅÕ - Êàðèì_Õàéäàðîâ.
10.11.2021 - 09:16: ÝÊÎËÎÃÈß - Ecology -> ÏÐÎÁËÅÌÛ ÌÅÄÈÖÈÍÛ - Êàðèì_Õàéäàðîâ.
10.11.2021 - 09:15: ÂÎÑÏÈÒÀÍÈÅ, ÏÐÎÑÂÅÙÅÍÈÅ, ÎÁÐÀÇÎÂÀÍÈÅ - Upbringing, Inlightening, Education -> Ïðîñâåùåíèå îò Åêàòåðèíû Êîâàëåíêî - Êàðèì_Õàéäàðîâ.
10.11.2021 - 09:13: ÂÎÑÏÈÒÀÍÈÅ, ÏÐÎÑÂÅÙÅÍÈÅ, ÎÁÐÀÇÎÂÀÍÈÅ - Upbringing, Inlightening, Education -> Ïðîñâåùåíèå îò Âèëüãåëüìà Âàðêåíòèíà - Êàðèì_Õàéäàðîâ.
Bourabai Research - Òåõíîëîãèè XXI âåêà Bourabai Research Institution