Усі три рівні працюють на дошці оголошень із практики — функція зробити_дошку в першій
клітинці зошита. Копіюй її до себе й починай.
Одне правило наскрізь: усе, що ти порівнюєш, має бути поміряне на тому самому поділі, тією самою метрикою й з тим самим бюджетом на налаштування. Якщо в звіті два числа здобуті по-різному, вони не порівнюються, і завдання не зараховане.
рівень 1Рівень 1 — База
Візьми регресійну задачу з розділу 7 практики (передбачити ціну чесних оголошень) і побудуй для неї повну таблицю порівняння за зразком розділу 3:
- базова лінія
DummyRegressor(strategy="mean"); - лінійна регресія, kNN, дерево, ліс, бустинг;
- один
KFold(5, shuffle=True, random_state=42)на всіх; - дві метрики в таблиці: MAE в гривнях і R².
Потім додай до таблиці колонку у скільки разів краще за базову: MAE базової лінії
поділити на MAE моделі.
Зроблено, якщо: у таблиці шість рядків, у кожного число в новій колонці, і ти письмово відповів на два питання: (1) яка модель дає найбільший виграш над базовою лінією і в скільки разів, (2) чому лінійна регресія тут помітно гірша за дерева — одне-два речення про форму залежності ціни від року.
рівень 2Рівень 2 — Плюс
Перевір на власних числах твердження з §05 лекції: розкид від поділу буває більший за різницю між моделями.
- Візьми дві моделі, які в практиці стоять поруч у рейтингу — наприклад, дерево й логістичну регресію на задачі про шахрайство.
- Прожени кожну через
StratifiedKFold(5, shuffle=True, random_state=s)дляs = 0, 1, 2, …, 9. Це десять різних поділів тих самих даних. - Для кожної моделі порахуй мінімум, максимум і розмах F1 по цих десяти запусках.
- Побудуй графік: по горизонталі номер поділу, дві лінії — по одній на модель.
Зроблено, якщо: ти назвав розмах кожної моделі числом, порівняв його з різницею між їхніми середніми F1 і відповів: чи існує пара поділів, на яких «гірша» модель виглядає кращою за «кращу»? Якщо існує — випиши номери цих поділів і обидва числа.
рівень 3Рівень 3 — Виклик
Побудуй криву «бюджет проти рейтингу» — покажи, як кількість спроб налаштування змінює те, хто перемагає.
- Напиши функцію
рейтинг_за_бюджету(бюджет), яка для кожної з шести моделей класифікації бере рівнобюджеткандидатів зі своєї сітки (першібюджетзначень), підбирає найкращого вкладеною крос-валідацією й повертає таблицю з F1 і місцем у рейтингу. - Прожени її для
бюджет = 1, 2, 4, 8. - Намалюй графік: по горизонталі бюджет (логарифмічна шкала), по вертикалі місце в рейтингу (1 угорі, 6 унизу), шість ліній — по одній на модель.
- Окремо поміряй сумарний час на кожен бюджет.
Зроблено, якщо: на графіку видно щонайменше одне перетинання ліній — тобто модель, яка міняє місце зі зростанням бюджету, — і ти письмово пояснив: (1) яка модель найчутливіша до бюджету і чому саме вона, (2) починаючи з якого бюджету рейтинг перестає мінятись, (3) скільки часу коштує кожне подвоєння бюджету.
Підказки
- Рівень 1.
cross_validateприймає список метрик:scoring=["neg_mean_absolute_error", "r2"]. Знак не забудь: MAE повертається зі знаком мінус, бо sklearn скрізь максимізує. - Рівень 2. Щоб побачити «перевертання», порівнюй не середні, а окремі запуски: найгірший результат сильної моделі проти найкращого результату слабкої.
- Рівень 3. Місце в рейтингу зручно рахувати через
Series.rank(ascending=False). Щоб графік читався, підпиши кожну лінію біля правого краю, а не легендою збоку. - Якщо якийсь прогін триває довше за хвилину — зменш
n_estimatorsу лісі й бустингу. Абсолютні числа зміняться, порядок моделей майже ні, а чекати не доведеться.