Raw

3. Аудиторні задачі з розв’язаннями

Ці задачі розбирають в аудиторії «руками». Вони показують ті самі обчислення, що їх потім автоматизує домашня програма (4task.md). Теорія й формули — у методичних вказівках.

Усі три задачі спираються на спільну навчальну вибірку «Спортивний канал» (за ознаками глядача передбачаємо, чи підписав він спортивний телеканал):

Стать Дохід Студент? Спортивний канал?
1 Ч Високий Так Так
2 Ж Середній Ні Ні
3 Ч Низький Так Ні
4 Ж Низький Ні Ні
5 Ч Середній Ні Так
6 Ж Високий Ні Так
7 Ж Середній Так Так
8 Ч Середній Так Так
9 Ж Низький Так Ні
10 Ж Середній Ні Ні

Клас-цільова ознака має 55 «Так» і 55 «Ні» (n=10n = 10).

Задача 1. One Rule: найкращий предиктор і матриця помилок

Дано вибірку «Спортивний канал». Знайти точність правила OneR за кожним із трьох предикторів, обрати найкращий, записати правило й побудувати його матрицю помилок (позитивний клас — «Так»).

Розв’язання. Для кожного предиктора підрахуємо розподіл класів за значеннями, знайдемо найчастіший клас cc^{*} і похибку.

Предиктор Значення Так Ні cc^{*} Похибка
Стать Ч 3 1 Так 1
Ж 2 4 Ні 2
Дохід Високий 2 0 Так 0
Середній 3 2 Так 2
Низький 0 3 Ні 0
Студент? Так 3 2 Так 2
Ні 2 3 Ні 2

Сумарна похибка й точність:

  • Стать: 1+2=31 + 2 = 3 помилки, ACC=7/10=70%\text{ACC} = 7/10 = 70\%;
  • Дохід: 0+2+0=20 + 2 + 0 = 2 помилки, ACC=8/10=80%\text{ACC} = 8/10 = 80\%;
  • Студент?: 2+2=42 + 2 = 4 помилки, ACC=6/10=60%\text{ACC} = 6/10 = 60\%.

Точність правила OneR за предикторами вибірки «Спортивний канал»: Стать 70%, Дохід 80%, Студент 60%; переможець — Дохід

Найменша похибка — у Доходу, тож OneR обирає його. Правило:

ВисокийТак,СереднійТак,НизькийНі,\text{Високий} \to \text{Так}, \quad \text{Середній} \to \text{Так}, \quad \text{Низький} \to \text{Ні},

або компактно:

if Дохід == Низький then Спортивний канал = Ні
                     else Спортивний канал = Так

Матриця помилок. Прогони правило по 10 об’єктах: «Ні» передбачено для рядків 3,4,93, 4, 9 (усі справді «Ні»), «Так» — для решти семи (з них рядки 22 і 1010 насправді «Ні»). Отже TP=5TP = 5, TN=3TN = 3, FP=2FP = 2, FN=0FN = 0:

Справжній: Ні Справжній: Так
Прогноз Ні 3 (TN) 0 (FN) NPV=3/3=1.0\text{NPV} = 3/3 = 1.0
Так 2 (FP) 5 (TP) PPV=5/70.71\text{PPV} = 5/7 \approx 0.71
TNR=3/5=0.6\text{TNR} = 3/5 = 0.6 TPR=5/5=1.0\text{TPR} = 5/5 = 1.0 ACC=8/10=0.8\text{ACC} = 8/10 = 0.8

Відповідь: найкращий предиктор — Дохід (точність 80%80\%); правило «Низький \to Ні, інакше Так». Матриця помилок: чутливість TPR=1.0\text{TPR} = 1.0 (усіх підписників впіймано), специфічність TNR=0.6\text{TNR} = 0.6, NPV=1.0\text{NPV} = 1.0, PPV0.71\text{PPV} \approx 0.71, правильність ACC=0.8\text{ACC} = 0.8.

Задача 2. ID3: ентропія та вибір кореня

Дано ту саму вибірку. Знайти ентропію всієї множини H(D)H(D), середньозважену ентропію розбиття за кожним атрибутом і приріст інформації; обрати корінь дерева.

Розв’язання. Уся множина: 55 «Так», 55 «Ні», тож

H(D)=510log2510510log2510=0.5(1)0.5(1)=1.0 біт.H(D) = -\tfrac{5}{10}\log_2\tfrac{5}{10} - \tfrac{5}{10}\log_2\tfrac{5}{10} = -0.5(-1) - 0.5(-1) = 1.0 \ \text{біт}.

Стать. Ч: 33 «Так», 11 «Ні»; Ж: 22 «Так», 44 «Ні».

H(Ч)=34log23414log214=0.811,H(Ж)=26log22646log246=0.918, H(\text{Ч}) = -\tfrac34\log_2\tfrac34 - \tfrac14\log_2\tfrac14 = 0.811, \qquad H(\text{Ж}) = -\tfrac26\log_2\tfrac26 - \tfrac46\log_2\tfrac46 = 0.918,

H(DСтать)=410(0.811)+610(0.918)=0.875,Gain=10.875=0.125.H(D \mid \text{Стать}) = \tfrac{4}{10}(0.811) + \tfrac{6}{10}(0.918) = 0.875, \quad \mathrm{Gain} = 1 - 0.875 = 0.125.

Дохід. Високий: 2/02/0; Середній: 3/23/2; Низький: 0/30/3.

H(Високий)=0,H(Низький)=0,H(Середній)=35log23525log225=0.971, H(\text{Високий}) = 0, \quad H(\text{Низький}) = 0, \quad H(\text{Середній}) = -\tfrac35\log_2\tfrac35 - \tfrac25\log_2\tfrac25 = 0.971,

H(DДохід)=210(0)+510(0.971)+310(0)=0.485,Gain=10.485=0.515.H(D \mid \text{Дохід}) = \tfrac{2}{10}(0) + \tfrac{5}{10}(0.971) + \tfrac{3}{10}(0) = 0.485, \quad \mathrm{Gain} = 1 - 0.485 = 0.515.

Студент? Так: 3/23/2; Ні: 2/32/3.

H(Так)=H(Ні)=0.971,H(DСтудент?)=510(0.971)+510(0.971)=0.971,Gain=0.029. H(\text{Так}) = H(\text{Ні}) = 0.971, \qquad H(D \mid \text{Студент?}) = \tfrac{5}{10}(0.971) + \tfrac{5}{10}(0.971) = 0.971, \quad \mathrm{Gain} = 0.029.

Зведемо:

Атрибут Середньозважена ентропія Приріст
Стать 0.8750.875 0.1250.125
Дохід 0.485\mathbf{0.485} 0.515\mathbf{0.515}
Студент? 0.9710.971 0.0290.029

Середньозважена ентропія кореневого розбиття за атрибутами: Стать 0.875, Дохід 0.485, Студент 0.971; мінімум у Доходу визначає корінь дерева

Відповідь: H(D)=1.0H(D) = 1.0; найбільший приріст (найменша ентропія) — у Доходу, тож коренем дерева стає атрибут Дохід.

Задача 3. ID3: добудова дерева на підмножині «Середній»

Дано результат Задачі 2 (корінь — Дохід). Завершити побудову дерева, рекурсуючи по гілках.

Розв’язання. Розіб’ємо вибірку за доходом:

  • Високий \to об’єкти {1,6}\{1, 6\} — обидва «Так» \Rightarrow лист «Так» (чистий вузол);
  • Низький \to об’єкти {3,4,9}\{3, 4, 9\} — усі «Ні» \Rightarrow лист «Ні»;
  • Середній \to об’єкти {2,5,7,8,10}\{2, 5, 7, 8, 10\} (33 «Так», 22 «Ні») — неоднорідні, рекурсуємо серед решти атрибутів {Стать,Студент?}\{\text{Стать}, \text{Студент?}\}.

Ентропія підмножини «Середній»: H=35log23525log225=0.971H = -\tfrac35\log_2\tfrac35 - \tfrac25\log_2\tfrac25 = 0.971. Розбиття:

Атрибут Розбиття (Так/Ні) Середньозважена ентропія
Стать Ч: 2/0 (H=0H=0); Ж: 1/2 (H=0.918H=0.918) 25(0)+35(0.918)=0.551\tfrac{2}{5}(0) + \tfrac{3}{5}(0.918) = 0.551
Студент? Так: 2/0 (H=0H=0); Ні: 1/2 (H=0.918H=0.918) 25(0)+35(0.918)=0.551\tfrac{2}{5}(0) + \tfrac{3}{5}(0.918) = 0.551

Обидва атрибути дають ентропію 0.5510.551 (приріст 0.9710.551=0.4200.971 - 0.551 = 0.420) — нічия. За домовленістю беремо перший, Стать:

  • Стать = Ч \to об’єкти {5,8}\{5, 8\} — обидва «Так» \Rightarrow лист «Так»;
  • Стать = Ж \to об’єкти {2,7,10}\{2, 7, 10\} (11 «Так», 22 «Ні») — рекурсуємо за останнім атрибутом Студент?:
    • Студент? = Так \to {7}\{7\} — «Так» \Rightarrow лист «Так»;
    • Студент? = Ні \to {2,10}\{2, 10\} — обидва «Ні» \Rightarrow лист «Ні».

Усі гілки завершилися чистими листами. Повне дерево:

Дохід?
├── Високий  -> Так
├── Низький  -> Ні
└── Середній -> Стать?
                ├── Ч -> Так
                └── Ж -> Студент?
                         ├── Так -> Так
                         └── Ні  -> Ні

Дерево рішень ID3 для вибірки «Спортивний канал» з коренем Дохід; гілка Середній розгалужується за Статтю, далі гілка Ж — за атрибутом Студент?

Перевірка. Прогнавши всі 1010 об’єктів деревом, дістаємо їхні справжні класи — дерево класифікує навчальну вибірку безпомилково (ентропія всіх листів =0= 0).

Відповідь: дерево має корінь Дохід; гілки «Високий» і «Низький» одразу дають листи «Так» і «Ні», а гілка «Середній» розгалужується за Статтю, після чого гілка «Ж» — за Студент?. Дерево чисте.

Зв’язок із домашнім завданням. Саме ці кроки — обчислити ентропію, для кожного атрибута знайти середньозважену ентропію, обрати атрибут із найбільшим приростом і рекурсивно повторити на підмножинах — виконуватиме ваша програма ID3 (4task.md). Вибірка «Спортивний канал» — зручний тест: подайте її на вхід і переконайтесь, що програма будує саме це дерево з коренем «Дохід».

Laboratory/Laboratory7/3classroom.md · 10.8 KB · updated 2026-08-05 09:28