2. Методичні вказівки
Цей розділ самодостатній: у ньому зібрано теорію асоціативних правил, мір
інтересовності та алгоритмів Apriori і Eclat, потрібну для аудиторних задач
(3classroom.md) і домашньої програми (4task.md).
Ширше цю саму теорію викладено в Лекції 11.
2.1 Транзакційна база та набори
Транзакційна (операційна) база — це множина транзакцій
D={t1,…,tN} над множиною елементів I; кожна транзакція
ti⊆I — набір елементів, що трапилися разом (чек, сеанс, історія
хвороби). Набором (англ. itemset) називають будь-яку підмножину
X⊆I; набір із k елементів — k-набір.
Базу задають горизонтально (рядок — транзакція зі своїми елементами) або
вертикально (елемент → tid-множина — множина номерів транзакцій, що
його містять). Обидва формати рівносильні; вибір визначає зручніший алгоритм.
2.2 Підтримка
Підтримка (англ. support) набору X — частка транзакцій, що містять X:
supp(X)=N∣{t∈D:X⊆t}∣.
Підтримкою правила X⇒Y називають підтримку об’єднання
supp(X∪Y) — частку транзакцій, де є і X, і Y.
Порівнюючи з порогом, зручно тримати лічильник ∣{t:X⊆t}∣ і
порівнювати його з smin⋅N.
2.3 Достовірність
Асоціативне правило X⇒Y будують для наборів, що не
перетинаються (X∩Y=∅). Достовірність (англ.
confidence) — умовна частка «серед транзакцій з X — скільки містять і Y»:
conf(X⇒Y)=supp(X)supp(X∪Y).
Це емпіричний аналог умовної ймовірності P(Y∣X). Достовірність
напрямлена: conf(X⇒Y)=conf(Y⇒X).
2.4 Підйом і переконливість
Достовірність не враховує, наскільки поширений сам наслідок Y. Це виправляє
підйом (англ. lift):
lift(X⇒Y)=supp(Y)conf(X⇒Y)=supp(X)supp(Y)supp(X∪Y).
Він порівнює спільну появу X і Y з очікуваною за незалежності:
lift>1 — позитивний зв’язок (притягання), =1 — незалежність,
<1 — негативний. Підйом симетричний:
lift(X⇒Y)=lift(Y⇒X).
Переконливість (англ. conviction) вимірює, як часто правило порушується:
conv(X⇒Y)=1−conf(X⇒Y)1−supp(Y).
conv>1 — правило змістовне (порушень менше, ніж випадково);
conv=1 — незалежність; conv→∞ при
conf→1 (правило без винятків).
2.5 Часті набори та властивість Apriori
Набір частий, якщо supp≥smin. Пошук правил — це
насамперед пошук усіх частих наборів; решта (генерація правил) дешева.
Ключ до ефективності — властивість антимонотонності.
Властивість Apriori. Усі підмножини частого набору — часті; рівносильно,
будь-яка надмножина нечастого набору — нечаста. Тому щойно набір виявився
нечастим, усі його надмножини можна відкинути не рахуючи.
2.6 Алгоритм Apriori (горизонтальний)
Apriori будує часті набори за зростанням розміру k, роблячи прохід по базі на
кожному рівні:
- Часті 1-набори. Порахувати підтримку кожного елемента; лишити ті, що
≥smin.
- Генерація кандидатів (k-набори): з’єднати пари частих
(k−1)-наборів, що різняться лише останнім елементом; відсіяти кандидата,
якщо якась його (k−1)-підмножина нечаста.
- Підрахунок підтримки кандидатів одним проходом по базі; лишити часті.
- Повторювати кроки 2–3, доки з’являються нові часті набори.
2.7 Алгоритм Eclat (вертикальний)
Eclat дає ті самі часті набори, але рахує підтримку не проходом по базі, а
перетином tid-множин:
tid(X∪Y)=tid(X)∩tid(Y),supp(X∪Y)=N∣tid(X)∩tid(Y)∣.
Він будує префіксне дерево завглибшки: кожен вузол додає елемент, а його
tid-множину дістає перетином tid-множини батька з tid-множиною нового елемента;
нечасті вузли не розгалужують. Eclat вигідний на розріджених базах (малі
tid-множини), Apriori — простіший і ощадливіший за пам’яттю.
2.8 Демонстраційний приклад (на інших даних, ніж у задачах)
Розгляньмо базу невеликої чайної крамниці (N=5 транзакцій) над елементами
I={Чай,Цукор,Лимон,Мед}:
| Транзакція |
Елементи |
| t1 |
Чай, Цукор |
| t2 |
Чай, Цукор, Лимон |
| t3 |
Чай, Цукор, Мед |
| t4 |
Чай, Лимон |
| t5 |
Лимон, Мед |
(а) Підтримка та вертикальний формат. tid-множини елементів:
tid(Чай)={1,2,3,4},
tid(Цукор)={1,2,3},
tid(Лимон)={2,4,5},
tid(Мед)={3,5}. Звідси
supp({Чай})=54=0.8,supp({Цукор})=53=0.6,supp({Лимон})=53=0.6,supp({Мед})=52=0.4.
Підтримка пари через перетин:
tid(Чай)∩tid(Цукор)={1,2,3},
тож supp({Чай,Цукор})=53=0.6.

(б) Міри для правила {Чай}⇒{Цукор}.
conf=0.80.6=0.75,lift=0.60.75=1.25,conv=1−0.751−0.6=0.250.4=1.6.
Зворотне правило {Цукор}⇒{Чай} має ту саму
підтримку 0.6, але conf=0.6/0.6=1.0 (усі покупці
цукру беруть чай), той самий підйом 1.25 (симетричний), а
conv→∞. Підйом однаковий для обох напрямків,
достовірність і переконливість — ні.
(в) Apriori за smin=0.4 (лічильник ≥2). Часті 1-набори — усі
чотири. Кандидати-пари й підтримки:
| 2-набір |
Лічильник |
Частий? |
| {Чай,Цукор} |
3 |
так |
| {Чай,Лимон} |
2 |
так |
| {Чай,Мед} |
1 |
ні |
| {Цукор,Лимон} |
1 |
ні |
| {Цукор,Мед} |
1 |
ні |
| {Лимон,Мед} |
1 |
ні |
Часті 2-набори: {Чай,Цукор} і {Чай,Лимон}.
Єдиний кандидат-трійка {Чай,Цукор,Лимон} відсівається
без підрахунку: його підмножина {Цукор,Лимон} нечаста
(властивість Apriori). Отже, частих 3-наборів немає.
2.9 Робочий контрольний список
- Спершу зафіксуйте пороги smin і cmin та переведіть smin у
лічильник smin⋅N — так зручніше порівнювати.
- Часті набори шукайте за зростанням розміру; нечастий набір відразу
вилучайте з подальших з’єднань (не рахуйте його надмножин).
- Достовірність рахуйте для кожного напрямку окремо; підтримка набору —
спільна для всіх правил із нього.
- Підйом і переконливість застосовуйте після порогів — щоб упорядкувати
правила й прибрати оманливо-достовірні (lift≤1).
- Для перевірки підтримки зручний вертикальний формат: підтримка набору —
потужність перетину tid-множин його елементів.
Laboratory/Laboratory11/2method.md · 11.4 KB · updated 2026-08-05 09:54