МІНІСТЕРСТВО ОСВІТИ НАУКИ МОЛОДІ ТА СПОРТУ УКРАЇНИ
ДВНЗ НАЦІОНАЛЬНИЙ ГІРНИЧИЙ УНІВЕРСИТЕТ
КАФЕДРА СИСТЕМНОГО АНАЛІЗУ І УПРАВЛІННЯ
Лабораторна робота №1 З дисципліни
«Самонавчання складних систем»
Виконав
Ст. гр. САм-13
Горобець О.В.
Перевірив
Желдак Т.А.
м. Дніпропетровськ
2013
Лабораторна робота №1.
Побудова й використання асоціативних правил.
Завдання.
1. За наведеною у початкових даних таблицею, яка є фрагментом бази даних транзакцій побудувати асоціативні правила, використовуючи алгоритм Apriory. В ході побудови застосовувати наступні параметри: мінімальна підтримка правила 12%, мінімальна достовірність правила 80%.
2. Розрахувати додаткові характеристики асоціативних правил. Зробити висновки щодо значущості кожного з отриманих правил.
3. Варіюючи в широких межах величини підтримки й достовірності знайти оптимальні граничні значення цих величин для розглянутої предметної області. Результат пояснити.
Методичні вказівки до виконання роботи.
Алгоритм Apriory.
Даний алгоритм був запропонований у 1994 році американськими вченими індійського походження Агравалом та Шрікантом. У його основі лежить поняття “частий набір” (frequent itemset). Асоціативні правила будуються не для усіх можливих сполучень товарів, а лише для тих, які зустрічаються в початковій базі даних достатньо часто.
Частим набором називається непуста множина товарів, підтримка якої не менша за певний, заданий наперед рівень, що має назву “мінімальна підтримка”. Алгоритм Apriory складається з двох послідовних процедур:
-
знаходження усіх частих наборів;
-
відсіювання з числа усіх можливих правил, що можуть бути задані на частих наборах, таких, що не задовольняють встановленим вимогам підтримки та достовірності.
В алгоритмі використовується правило анти монотонності: “Якщо певний набір не є частим, то додавання до нього одного або декількох предметів не зробить його частим”.
Таким чином, на першому етапі підраховуються кількості входжень в базу даних усіх предметів окремо. Якщо певні предмети зустрічаються рідше, ніж заданий рівень підтримки, вони в подальшому розгляді участі не беруть.
На другому й наступних тих етапах множина кандидатів формується як лінійна комбінація з частих наборів множини.
Формування частих наборів продовжується до тих пір, поки існує хоча б один частий набір потужності . В залежності від складності предметної області та вигляду типових транзакцій (довжини чеку) може сягати значень більше 10.
Після того, як часті набори усіх без винятку рівнів ідентифіковані й виписані, починається генерація правил. До кожного частого набору рівнів від 2 до знаходять всі можливі комбінації . Якщо при цьому - не порожня підмножина вихідного часткового набору, то правило включається в якості кандидата до перспективного переліку правил. У кожного правила перевіряється достовірність та підтримка. Всі правила, що задовольняють вимогам, заносяться до бази правил.
Докладніше роботу алгоритму проілюструє наступний приклад з овочевим магазином.
Завдання.
Множина транзакцій представлена у таблиці 1.1. використовуючи мінімальний рівень підтримки 25% та мінімальну достовірність 80%, створити базу асоціативних правил поведінки покупців.
Користуючись вищенаведеним алгоритмом, насамперед перевіряємо, чи всі продукти відповідають умовам “частих наборів”, тобто перевіряємо підтримку наборів першого рівня. Заданий рівень підтримки 25% свідчить, що продукт має зустрічатися в транзакціях не менше 6 разів .
Для перевірки представимо транзакції у бінарній формі й підрахуємо кількість покупок кожного продукту (див. табл. 1.1).
Таблиця 1.1. Нормалізований вид множини транзакцій
№ транзакции |
Яблоки |
Бананы |
Морковь |
Помидоры |
Салат |
Конфеты |
Персик |
Картофель |
Слива |
Лук |
1 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
2 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
3 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
4 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
5 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
6 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
7 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
8 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
1 |
9 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
10 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
11 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
12 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
13 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
14 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
15 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
16 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
17 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
18 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
19 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
20 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
СУМА |
15 |
5 |
5 |
12 |
2 |
15 |
4 |
17 |
6 |
13 |
Як видно з таблиці 1.1, не всі без набори першого рівня (окремі товари) є частими. Переходимо до другого рівня, генеруючи всі можливі пари товарів. Самі набори другого рівня та їх підтримка наведені у таблиці 1.2.
Таблиця 1.2. Предметні набори з двох овочів
яблоки помидоры |
10 |
Яблоки Конфеты |
11 |
яблоки картофель |
13 |
яблоки слива |
4 |
яблоки лук |
10 |
помидоры конфеты |
8 |
помидоры картофель |
11 |
помидоры слива |
4 |
помидоры лук |
8 |
конфеты картофель |
13 |
конфеты слива |
3 |
конфеты лук |
9 |
картофель слива |
5 |
картофель лук |
10 |
слива лук |
6 |
Як видно з таблиці 1.2, за прийнятими критеріями підтримки частими є лише 11 наборів з двох овочів:
Далі використовуємо отримані набори з двох овочів для генерації множин з трьох предметів . Для цього знаходимо всі об’єднання множин рівня , що мають спільний перший елемент.
Утворені набори з трьох предметів та їх частоти представимо у вигляді таблиці.
Таблиця 1.3. Предметні набори з трьох овочів
яблоки помидоры конфеты |
|
6 |
яблоки помидоры картофель |
|
9 |
яблоки помидоры лук |
|
7 |
помидоры конфеты картофель |
|
7 |
помидоры конфеты лук |
|
5 |
конфеты картофель лук |
|
7 |
З огляду на отримані дані, множин третього порядку 5.
Подальше виділення чистих наборів сенсу не має. Таким чином, в розглянутій задачі виділено 20 однопредметних частих наборів, 11 – двох предметних та 5 – трьох предметних. Маючи їх всі, переходимо до генерації асоціативних правил.
Процедура генерації правил виконується послідовно для частих наборів усіх рівнів, починаючи з вищого і передбачає:
-
виділення в наборі можливого часткового набору ;
-
якщо , то записується асоціація вигляду , де , або точніше ;
-
всі отримані правила оцінюються за підтримкою та достовірністю. Такі, що не задовольняють обраним критеріям, відкидаються.
Таблиця 1.4. Асоціативні правила із двома предметами в умові
Якщо умова, то наслідок |
Підтримка |
Достовірність |
якщо {яблуко}, то { помідори й цукерки } |
6/20 = 30% |
6/15 = 40% |
якщо {помідори }, то { яблуко й цукерки } |
6/20 = 30% |
6/12 = 50% |
якщо {цукерки}, то { яблуко й помідори } |
6/20 =30% |
6/15 = 40% |
якщо {яблуко й помідори}, то {цукерки } |
6/20 = 30% |
6/10 = 60% |
якщо {яблуко й цукерки}, то {помідори} |
6/20 = 30% |
6/11 = 54,5% |
якщо {помідори й цукерки}, то {яблуко} |
6/20 = 30% |
6/8 = 75% |
Якщо умова, то наслідок |
Підтримка |
Достовірність |
якщо {яблуко}, то { помідори й картопля } |
9/20 = 45% |
9/15 = 60% |
якщо {помідори }, то { яблуко й картопля } |
9/20 = 45% |
9/12 = 75% |
якщо { картопля }, то { яблуко й помідори } |
9/20 =45% |
9/17 = 53% |
якщо {яблуко й помідори}, то { картопля } |
9/20 =45% |
9/10 = 90% |
якщо {яблуко й картопля }, то {помідори} |
9/20 = 45% |
9/13 = 69% |
якщо {помідори картопля}, то {яблуко} |
9/20 = 45% |
9/11 =81,8% |
Якщо умова, то наслідок |
Підтримка |
Достовірність |
якщо {яблуко}, то { помідори й цибуля } |
7/20 = 35% |
7/15 = 46,67% |
якщо {помідори }, то { яблуко й цибуля } |
7/20 = 35% |
7/12 = 58,33% |
якщо { цибуля }, то { яблуко й помідори } |
7/20 =35% |
7/13 = 53,84% |
якщо {яблуко й помідори}, то { цибуля } |
7/20 =35% |
7/10 = 70% |
якщо {яблуко й цибуля }, то {помідори} |
7/20 = 35% |
7/10 = 70% |
якщо {помідори цибуля, то {яблуко} |
7/20 = 35% |
7/8=87,5% |
Якщо умова, то наслідок |
Підтримка |
Достовірність |
якщо {помідор}, то { цукерки й картопля } |
7/20 = 35% |
7/12 = 58,33% |
якщо { цукерки }, то { помідор й картопля} |
7/20 = 35% |
7/15 = 46,67% |
якщо {картопля }, то { помідор й цукерки } |
7/20 =35% |
7/17 = 41,18% |
якщо { помідор й цукерки }, то {картопля } |
7/20 =35% |
7/8 = 87,5% |
якщо { помідор й картопля}, то { цукерки } |
7/20 = 35% |
7/11 = 63,63% |
якщо { цукерки картопля, то { помідор } |
7/20 = 35% |
7/13=53,84% |
Якщо умова, то наслідок |
Підтримка |
Достовірність |
якщо { цукерки }, то { картопля й цибуля } |
7/20 = 35% |
7/15 = 46,67% |
якщо { картопля }, то { цукерки й цибуля } |
7/20 = 35% |
7/17 = 41,18% |
якщо { цибуля }, то { цукерки й картопля } |
7/20 =35% |
7/13 = 53,84% |
якщо { цукерки й помідори}, то { цибуля } |
7/20 =35% |
7/13 = 53,84% |
якщо { цукерки й цибуля }, то { картопля } |
7/20 = 35% |
7/9 = 77,78% |
якщо { картопля цибуля, то { цукерки } |
7/20 = 35% |
7/10=70% |
За викладеною вище методикою розраховуємо показники значущості для всіх інших можливих правил третього рівня та заносимо результат в таблицю.
Таблиця 1.5. Асоціативні правила з одним предметом в умові
Якщо умова, то наслідок |
Підтримка |
Достовірність |
||
Якщо {яблуко}, то {помідори} |
10/20 = 50% |
10/15 = 66,67% |
||
Якщо {помідори }, то {яблуко} |
10/20 = 50% |
10/12 = 83,33% |
||
Якщо { яблуко }, то {цукерки } |
11/20 = 55% |
11/15 = 73,33% |
||
Якщо { цукерки }, то { яблуко } |
11/20= 55% |
11/15 = 73,33% |
||
Якщо { яблуко }, то { картопля } |
13/20=65% |
13/15=86,67% |
||
Якщо { картопля }, то { яблуко } |
13/20=65% |
13/17=76,47% |
||
Якщо { яблуко }, то {цибуля} |
10/20 = 50% |
10/15 = 66,67% |
||
Якщо {цибуля}, то { яблуко } |
10/20 = 50% |
10/13 = 76,92% |
||
Якщо { помідори }, то { цукерки } |
8/20 = 40% |
8/12 = 66,67% |
||
Якщо { цукерки }, то { помідори } |
8/20 = 40% |
8/15 = 53,33% |
||
Якщо { помідори }, то {картопля} |
11/20 = 55% |
11/12 = 91,67% |
||
Якщо {картопля}, то { помідори } |
11/20 = 55% |
11/17= 64,7% |
||
Якщо { помідори }, то {цибуля} |
8/20 = 40% |
8/12 = 66,67 % |
||
Якщо {цибуля}, то {помідори) |
8/20 = 40% |
8/13 = 61,53 % |
||
Якщо { цукерки }, то { картопля} |
13/20=65% |
13/15=86,67 |
||
Якщо { картопля}, то { цукерки } |
13/20=65% |
13/17=76,47% |
||
Якщо { цукерки }, то { цибуля } |
9/20 = 45% |
9/15 = 60 % |
||
Якщо { цибуля }, то { цукерки } |
9/20 = 45% |
9/13 = 69,23 % |
||
Якщо { картопля}, то { цибуля } |
10/20 =50% |
10/17=58,82% |
||
Якщо { цибуля }, то {картопля } |
10/20 =50% |
10/13=76,92% |
||
Якщо { слива}, то { цибуля } |
6/20 =30% |
6/6=100% |
||
Якщо { цибуля }, то { слива } |
6/20 =30% |
6/13=46,15% |