Professional Documents
Culture Documents
Методика виявлення узагальнених асоціативних правил в СД
Методика виявлення узагальнених асоціативних правил в СД
Вступ
Приклад ієрархії товарів і товарних груп приведений на мал. 1. Маючи таку ієрархію,
можна отримати, наприклад, такі правила: ' Якщо покупець купив Сік, то він, швидше
за
все, захоче купити Кефір'; 'Якщо покупець купив Молочні продукти, то він, швидше за
все, захоче купити Мінеральну воду'. Тобто, в отримуваних правилах, як в умові, так
і в
слідстві можуть бути присутніми елементи, що знаходяться на різних рівнях
таксономии.
Введення інформації про приналежність елементів транзакцій до тієї або іншої групи
може дати наступні переваги:
Опис завдання
Хай I={i1, i2 ... im} - це безліч елементів. Хай I - це ліс направлених дерев. Дуги
в I - це
залежності між елементами. Хай елементи, що належать I, розташовані в якійсь
ієрархії.
Якщо є дуга від а до b, то говорять, що а - предок b, і b - нащадок а (а - це
узагальнення b).
Це визначення завдання має одну проблему. Річ у тому, що при такому визначенні
завдання, будуть знайдені 'зайві' узагальнені асоціативні правила. Для вирішення
цієї
проблеми розглянемо такий параметр правила як рівень інтересу.
Визначення 6. Правило називається цікавим, якщо у нього немає предків або воно є
R цікаве щодо всіх своїх найближчих предків.
Сік Кефір 9
3
Елемент Підтримка %
Напої 7
Безалкогольні напої 5
Сік 3
Молочні продукти 6
Кефір 4
Нерівність
Нерівність
Опишемо функцію генерації кандидатів. Для того, щоб отримати к-элементные набори,
скористаємося (k-1) -элементными наборами, які були визначені на попередньому кроці
і є
такими, що часто зустрічаються.
Алгоритм генерації кандидатів складатиметься з двох кроків:
FROM
Fk-1 а, Fk-1 b
WHERE
а.item1 = b.item1,
а.item2 = b.item2, ...,
а.itemk-2 = b.itemk-2,
а.itemk-1 < b.itemk-1
2. Видалення надмірних правил. На підставі властивості анти-монотонности, слід
видалити всі набори з Ck, якщо хоч би одна з його (k-1) підмножин не є
таким, що
часто зустрічається.
1. Доцільно одного разу обчислити безліч предків для кожного елементу ієрархії
як
для елементу нижнього рівня таксономии (лист дерева), так і для елементу
внутрішнього рівня.
2. Необхідно видаляти кандидати, що містять елемент і його предок. Для
реалізації
цієї оптимізації розглянемо наступні дві леммы:
Лемма 1. Підтримка множини X, що містить і елемент x і його предок x
обчислюється за формулою supp(X)=supp(X-x).
Принимая до уваги цю лему, ми видалятимемо кандидати, що містять і елемент
і
його предок із списку кандидатів до початку процесу підрахунку підтримки.
Лемма 2. Якщо Lk - це список множин, що часто зустрічаються, що не містить
множин, що включають і елемент і його предок в одній множині, то Ck+1
(список
кандидатів, що отримуються з Lk) також не міститиме множин, що включають і
елемент і його предок.
Учитывая твердження, дане в цій лемі, ми видалятимемо кандидатів, що
включають і елемент і його предок, із списку кандидатів тільки на першій
ітерації
зовнішнього циклу.
3. Немає необхідності в додаванні всіх предків всіх елементів, що входять в
транзакцію. Якщо кокой-то елемент, у якого є предок, не знаходиться в
списку
кандидатів, то в списку елементів з предками він позначається як видалений.
Отже,
з транзакції віддаляються елементи, помічені як видалені, або проводиться
заміна
цих елементів на їх предків. До транзакції додаються тільки не видалені
предки.
1. // Оптимізація 1
2. Обчислити I* безлічі предків елементів для кожного елементу;
3. L1 = {Безліч елементів і груп елементів, що часто зустрічається};
4. для ( до = 2; Lk-1 <> ; k++ )
5. {
6. Ck = {Генерація кандидатів потужністю до на основі Lk-1};
7. // Оптимізація 2
8. якщо до = 2 те
9. видалити ті кандидати з Ck, які містять елемент і його предок;
10. // Оптимізація 3
11. Помітити як видалена безліч предків елементу, який не міститься в списку
кандидатів;
12. для всіх транзакцій t D
13. {
14. // Оптимізація 3
15. для кожного елементу х t
16. додати всіх предків х з I* до t;
17. Видалити дублікати з транзакції t;
18. // Оптимізація 4,5
19. якщо і ( |t| >= до) те
20. {
21. для всіх кандидатів з Ck
22. якщо з t те
23. з.count++;
24. // Оптимізація 5
25. якщо до транзакції t не увійшов жоден кандидат те
26. помітити цю транзакцію як видалену;
27. }
28. }
29. // Відбір кандидатів
30. Lk = { з >= Ck | з.count >= minsupp };
31. }
32. Результат = UkLk;
Висновок