Домен той самий, що й у лекції — ціна вживаного телефона за оголошенням
(модель, рік, стан, обсяг пам'яті, ціна). Дані бери свої: або згенеруй через
np.random.default_rng(...), як у практиці, або візьми будь-який відкритий набір
із числовою цільовою величиною.
рівень 1Рівень 1 — База
Збери таблицю з 10 своїх оголошень: справжня ціна й прогноз (прогноз можеш
вигадати від руки — це нормально, ми міряємо метрики, а не модель). Порахуй
вручну на NumPy, без sklearn: MAE, MSE, RMSE, R², MAPE. Потім звір кожне
число з sklearn.metrics.
Окремо порахуй суму помилок без модуля й напиши одним реченням, чому вона не годиться як метрика.
Зроблено, якщо: для всіх п'яти метрик спрацював
assert np.allclose(наше, бібліотечне), а в тексті є фраза про суму помилок
із конкретним числом із твоєї таблиці.
рівень 2Рівень 2 — Плюс
Візьми будь-яку задачу регресії, де цільова величина не гроші: час доставки
в хвилинах, вага в кілограмах, кількість переглядів. Навчи LinearRegression,
порахуй MAE, RMSE, R² і MAPE на тестовій вибірці.
Потім дай відповідь на три питання, спираючись на власні числа:
- У яких одиницях читається MAE й що це означає для замовника цієї задачі?
- Наскільки RMSE більша за MAE й що з цього випливає про розкид помилок?
- Чи можна тут узагалі використовувати MAPE? Подивись на мінімальне значення цільової величини у своїх даних, перш ніж відповідати.
Зроблено, якщо: є таблиця з чотирма метриками на тесті, а до кожного з трьох питань — відповідь з посиланням на конкретне число (не «RMSE більша», а «RMSE 42,1 проти MAE 27,8 — у 1,5 раза»).
рівень 3Рівень 3 — Виклик
Побудуй дві моделі, які дають протилежні вердикти: одна виграє за MAE, інша — за RMSE. Робити це «підганянням прогнозів руками» не можна — обидві моделі мають бути навчені на тих самих даних.
Робочий шлях: додай у навчальні дані кілька викидів, потім навчи
LinearRegression (мінімізує квадрат) і HuberRegressor або
QuantileRegressor(quantile=0.5) із sklearn.linear_model (стійкі до викидів).
Виміряй обидві на одній тестовій вибірці.
Далі побудуй графік: як MAE й RMSE обох моделей змінюються, коли ти збільшуєш кількість викидів у навчальній вибірці від 0 до 20.
Зроблено, якщо: у звіті є таблиця, де в одної моделі менша MAE, а в другої менша RMSE на тих самих тестових даних; є графік залежності від кількості викидів; і є абзац, яку модель ти віддав би в сервіс оцінки телефонів і чому саме її.
Підказки
- Якщо MAE й RMSE вперто збігаються — у твоїх даних усі помилки приблизно однакові за модулем. Розрив між ними з'являється лише тоді, коли є розкид: кілька дуже поганих прогнозів на тлі багатьох добрих.
- MAPE не має сенсу, поки ти не подивився на мінімум цільової величини. Одне значення, близьке до нуля, здатне перекрити всю решту вибірки.
- Від'ємний R² — не привід шукати помилку в коді. Спершу перевір, чи не міряєш ти модель на вибірці з іншим середнім, ніж та, на якій навчав.
- Порівнюючи дві моделі, завжди міряй на одній і тій самій тестовій вибірці. Інакше порівнюєш не моделі, а вибірки.