- •8.05010103, 7.05010103“Системне проектування”
- •1. Мета роботи
- •2.Короткі теоретичні відомості
- •2.1. Дерева рішень (decision trees)
- •2.2 Алгоритм id3
- •2.3 Технологія неточних множин та метод Boolean Reasoning
- •2.4 Мінімізація таблиці та вилучення суперечностей
- •Мета роботи;
- •Короткі теоретичні відомості;
- •Список рекомендованої літератури
- •Контрольні запитання
- •4. Лабораторне завдання
2.1. Дерева рішень (decision trees)
Алгоритми дерев рішень - одні з найшвидших і ефективніших в області KDD, через що одержали значне поширення. Зазвичай їх використовують для задач класифікації даних або для задач апроксимації заданої булівської функції. Їхня обчислювальна складність визначається головним чином типом критерія розщеплення. У багатьох випадках час знаходження критерію розщеплення лінійно залежить від кількості полів. Залежність часу рішення від кількості записів n часто лінійна, або близька до неї (n*log(n)).
Переваги використання дерев рішень:
швидкий процес навчання;
генерування правил в областях, де експертові важко формалізувати свої знання;
побудова правил природною мовою;
інтуїтивно зрозуміла класифікаційна модель;
висока точність прогнозу, порівняно з іншими методами (статистичними, нейромережевими).
Проте виразна сила дерев рішень часто недостатня для опису складних правил, що зустрічаються в реальних даних. Це приводить до неминучості побудови дуже великих (і тому незрозумілих) дерев. Інша характерна для систем KDD складність пов'язана з вибором критерію для зупинки подальшого дроблення на групи. Дуже важко знайти компроміс між точністю результуючого правила, що виходить, і його статистичною значимістю.
Постановка задачі для використання алгоритмів побудови дерев прийняття рішень може приймати наступний вигляд. Необхідно створити економічну конструкцію , яка б описувала (булівську) функцію, що складається з множини випадків, кожен з яких описується кінцевим набором дискретних атрибутів.
ПРИКЛАД 1.
У цьому прикладі розглянемо випадок коли нам потрібно дізнатися чи переможе футбольна команда матч. Нам відомо, що це залежить від наступних параметрів:
положення суперника у турнірній таблиці (вище або нижче);
чи вдома відбувається матч;
чи пропускає матч хтось із лідерів;
чи падає дощ.
На базі цих параметрів була зібрана така статистика :
Таблиця
2.1. Статистика попередніх ігор
Суперник
Гра
Лідери
Дощ
Перемога
Вище
Вдома
На місці
Так
Ні
Вище
Вдома
На місці
Ні
Так
Вище
Вдома
Пропускають
Ні
Так
Нижче
Вдома
Пропускають
Ні
Так
Нижче
В гостях
Пропускають
Ні
Ні
Нижче
Вдома
Пропускають
Так
Так
Вище
В гостях
На місці
Так
Ні
Рис. 2.1 Початковий варіант дерева прийняття рішень.
Дерево на рис.2.1 можна розглядати і як булівську функцію зведену до КНФ. У даному випадку вона прийме наступний вигляд-((Суперник=Нижче)^(Гра=Вдома))v((Суперник=Вище)^(Гра=Вдома)^(Лідери=
=Пропускають) v((Суперник=Вище)v(Гра=Вдома)v(Лідери на місці) ^ (Дощ =Ні)). Отже, для того щоб дізнатись про результат матчу необхідно пройтися від вершини до кінцевого листка, що й буде результатом. Звісно, що дане дерево є неповне і не охоплює всіх можливих випадків. Розглянемо випадок коли :
Таблиця 2.2. Статистика ігор
Суперник |
Гра |
Лідери |
Дощ |
Перемога |
Нижче |
В гостях |
На місці |
Ні |
??? |
Якщо матч командою буде програний, то дерево міняти не потрібно, але якщо буде виграний, то дерево потрібно змінити до вигляду як на рис.2.2.
Рис.2.2 Зміна дерева після додавання ще одного випадку
Таким чином, за рахунок модифікації дерева проходить машинне навчання.
Отримане дерево є далеко не ідеальним тим більше, що його глибина рівна чотирьом. За основу можна взяти й інший атрибут, наприклад чи падає дощ, тоді глибина відразу зменшиться до двох ( рис. 2.3).
Рис.2.3
Оптимальне дерево рішень
У наведеному прикладі легко переконатися, що жоден атрибут сам по собі не може ідеально розділити значення функції, тому дерево на рис.3 є оптимальним ( але не обов'язково єдиним). Булівська функція прийме вигляд -- ((Дощ=Так)v(Суперник=Нижче))v((Дощ=Так)v(Гра=Вдома)) .
Перебирати всі атрибути, які б були вершинами дерева для пошуку оптимального дерева прийняття рішення є не коректним. Існує механізм вибору атрибуту, що найкраще характеризує цільову функцію. Ця вимога формалізується через ентропію. Для початку введемо кілька визначень:
Def.1 Нехай є множина А , що складається з n елементів, m з яких володіють певною властивістю S. Тоді ентропія множини А по відношенню до властивості S це
Інакше кажучи, ентропія залежить від пропорції в якій ділиться множина. По мірі зростання пропорції від 0 до / ентропія також зростає, а після / -- симетрично спадає. Коли властивість S не бінарна, а може приймати s різних значень, кожна з яких реалізується в mi випадках, то ентропія зводиться до виразу
Грубо кажучи, ентропія це середня кількість бітів, яка необхідна для кодування атрибуту S в елемента множини А. Якщо ймовірність появи S рівна / , то ентропія рівна 1 і потрібен повноцінний біт; а якщо S з'являється не рівноймовірно, то можна закодувати послідовність елементів А ефективніше.
Отже, при виборі атрибуту для класифікації, вибирати його потрібно так, щоб після класифікації ентропія стала мінімальною( властивість S- потрібно розглядати як значення цільової булівської функції).
Def.2 Нехай є множина елементів А, деяким з них притаманна властивість S, класифіковано по атрибуту Q, що приймає q можливих значень. Тоді приріст інформації визначається:
де, Ai -- множина елементів А, на яких атрибут Q приймає значення і. На кожному кроці жадібний алгоритм вибирає той атрибут, для якого приріст є максимальний.
Як приклад проведемо розрахунок ентропії та приросту інформації для рис. 1 Обчислимо вихідну ентропію ( для максимізації приросту цього робити не обов'язково)
Далі розрахуємо прирости інформації для різних атрибутів:
Вже видно, що було обрано не дуже хороший атрибут для кореня дерева.
Отже, обчислення приросту інформації показує, що спочатку потрібно класифікувати по атрибуту Гра (Вдома чи В гостях) . Ну і відповідно глибина дерева стане рівною 3.
Для автоматизації побудови дерева рішення було запропоновано алгоритм ID3.
