Домашнє завдання

Випадковий ліс

Попередня тема: дерева рішень

Головна вимога до всіх трьох рівнів: кожен висновок підпертий числом або графіком. Фраза «ліс працює краще» без цифри не зараховується.


рівень 1Рівень 1 — База

Повтори порівняння «одне дерево проти лісу» на своїх даних.

Візьми load_breast_cancer() або load_wine() з sklearn.datasets, розбий на train/test і навчи три моделі: DecisionTreeClassifier(), RandomForestClassifier(n_estimators=10) і RandomForestClassifier(n_estimators=300). Далі побудуй криву тестової точності від n_estimators для значень 1, 5, 10, 25, 50, 100, 200, 400.

Зроблено, якщо: - крива побудована, і на ній видно, де точність виходить на плато; - виписано три числа: точність одного дерева, точність на плато й приблизна кількість дерев, після якої приріст менший за 0.005; - одним реченням пояснено, чому ця крива, на відміну від кривої max_depth з попередньої теми, не розвертається вниз.


рівень 2Рівень 2 — Плюс

Знайди компроміс сили й кореляції на числах.

Для max_features від 1 до кількості ознак побудуй на одному графіку три криві:

  1. точність ансамблюліс.score(X_тест, y_тест);
  2. сила окремого дереваnp.mean([д.score(X_тест, y_тест) for д in ліс.estimators_]);
  3. згода дерев — частка тестових обʼєктів, на яких два випадково взяті дерева лісу дають однакову відповідь (усередни хоча б по 20 парах).

Зроблено, якщо: - усі три криві на одному графіку з підписаними осями; - показано, що зі зростанням max_features сила окремого дерева росте, а згода теж росте — тобто вимоги тягнуть у різні боки; - назване значення max_features, на якому точність ансамблю максимальна, і сказано, чи збігається воно з $\sqrt{p}$; - окремим реченням пояснено, чому «згода 100%» означала б, що ансамбль вироджений.


рівень 3Рівень 3 — Виклик

Дослідь межу застосовності важливостей ознак.

Візьми датасет із практики й додай до нього ще три копії ознаки «витрати» з різним рівнем шуму: витрати + rng.normal(0, s, n) для s = 0.1, 0.5, 2.0. Далі поступово додавай ці копії в модель (0, 1, 2, 3 дублікати) і для кожного варіанта фіксуй MDI оригінальних «витрат», MDI «id сесії» та тестову точність.

Зроблено, якщо: - побудовано графік: по осі X — кількість дублікатів, по осі Y — MDI «витрат» і MDI «id сесії» двома лініями; - названо кількість дублікатів, на якій MDI справжньої ознаки опускається нижче за MDI чистого шуму; - показано, що тестова точність при цьому майже не змінилась — тобто модель не постраждала, а інтерпретація зламалась; - сформульовано практичне правило в одне речення: за яких умов взагалі не можна довіряти feature_importances_.

Додатковий бал. Постав експеримент на порушення незалежності: навчи 50 дерев із bootstrap=False і max_features=None, лише з різними random_state. Виміряй згоду дерев і точність ансамблю, порівняй зі звичайним лісом і поясни результат через формулу $\mathrm{Var} = \rho\sigma^2 + (1-\rho)\sigma^2/M$.


Підказки