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