4. Домашнє завдання (написання програми)
Джерело завдання. Завдання доповнює матеріали курсу (у вихідному архіві домашнє завдання для теми 11 відсутнє). Постановку сформульовано природно для теми — реалізація алгоритму Apriori з генерацією правил. Готового коду тут немає — це індивідуальне завдання; техніку обчислень показано на інших даних у 2method.md та 3classroom.md.
Постановка
Реалізувати алгоритм Apriori. На вхід подається набір транзакцій (CSV/текст, одна транзакція на рядок). Програма знаходить усі часті набори з підтримкою не меншою за заданий поріг, генерує асоціативні правила з достовірністю не меншою за заданий поріг і виводить їх разом із підтримкою, достовірністю та підйомом.
Вхід і вихід
- Вхід: шлях до файлу транзакцій — по одній транзакції на рядок, елементи
розділені комою (або пробілом). Приклад рядка:
Хліб,Молоко,Яйця. Порядок елементів у рядку несуттєвий; повтори в межах транзакції ігнорують. Також на вхід подають мінімальну підтримку і мінімальну достовірність (аргументи командного рядка, параметри або запит). - Вихід: щонайменше — перелік частих наборів із їхньою підтримкою та перелік правил із підтримкою, достовірністю й підйомом. Формат виводу (консоль/файл) — на розсуд студента; підтримку/достовірність подавайте як частку (можна й у відсотках), числа округлюйте розумно (напр., 3–4 значущі цифри).
Рівні складності
Оцінка відповідає найвищому повністю й правильно виконаному рівню.
Базовий рівень — 60–74 балів
- Прочитати транзакції з файлу; побудувати множину елементів і кількість транзакцій .
- Знайти всі часті набори з підтримкою алгоритмом Apriori: часті 1-набори генерація кандидатів підрахунок підтримки часті -набори, доки з’являються нові.
- Реалізувати відсівання кандидатів за властивістю Apriori (кандидат із нечастою -підмножиною не рахується).
- Вивести часті набори згруповано за розміром із їхньою підтримкою.
Середній рівень — 75–89 балів
Додатково до базового:
- Згенерувати асоціативні правила з кожного частого набору: розбити набір на і усіма способами й лишити правила з .
- Для кожного правила вивести підтримку та достовірність.
- Коректно опрацьовувати файл із різною довжиною транзакцій, зайвими пробілами та порожніми рядками; пороги , задавати ззовні.
Високий рівень — 90–100 балів
Додатково до середнього:
- Обчислювати й виводити для кожного правила ще й підйом і переконливість; впорядкувати «цікаві» правила (з ) за спаданням підйому (або переконливості).
- Реалізувати Eclat (через перетин tid-множин) як альтернативний пошук частих наборів і порівняти його результат із Apriori (мають збігатися) — або, як варіант, порівняти час роботи обох на більшій базі.
- Передбачити перевірку коректності вводу (порожній файл, некоректні пороги поза , рядки без елементів) з інформативним повідомленням.
Що здавати
- Вихідний код програми (з коротким
README: як запустити, формат входу, як задають пороги). - Приклад запуску на тестовому файлі. Обов’язково перевірте програму на даних Задачі 2 за , — очікувано три часті 2-набори (, , , усі з підтримкою ) і чотири правила з достовірністю . Значення підйому звірте з Задачею 3 (пара «Яблуко — Виноград»: ).
- Оформлення звіту — за 5report.md; перелік запитань до захисту — у 6questions.md.