Тема була про порядок дій, а не про новий прийом. Тому й завдання перевіряють порядок: не «яка вийшла метрика», а «чи можна цьому числу вірити».
рівень 1Рівень 1 — База
Візьми зошит із практики й доведи його до кінця ще раз, змінивши рівно одну річ — поріг рішення.
- Навчи фінальну модель на всій навчальній частині (це вже зроблено в зошиті).
- Отримай ймовірності на тесті:
фінальна_модель.predict_proba(...)[:, 1]. - Для порогів 0.3, 0.5, 0.7 порахуй чотири числа: скільки шахраїв пропущено, скільки чесних продавців потурбовано, precision і recall.
- Склади з цього таблицю на три рядки.
Далі — головне питання, і воно не технічне. Уяви, що ти відповідаєш за дошку оголошень. Який поріг ти б поставив і чому? Відповідь має спиратись не на «F1 найбільший», а на ціну двох помилок.
Зроблено, якщо: є таблиця з трьох рядків із чотирма числами в кожному, і є одне-два речення про вибраний поріг, у яких сказано, чия помилка тобі дорожча — покупця чи чесного продавця.
рівень 2Рівень 2 — Плюс
У розділі 8 практики ми з'ясували, що 62 % помилок сидять у 8 % рядків — тих, де ціни немає. Перевір, чи можна це полагодити ознакою.
Додай до додати_ознаки дві нові:
оголошень_у_групі— скільки оголошень у групі «модель + рік» (карта будується нанавч_Xчерезgroupby([...]).size()). Здогад: у маленькій групі медіана шумна, тому «відхилення» там ненадійне, і модель має про це знати.вік_телефона—2025 − рік. Ознака проста й правдоподібна: шахраєві зручніше ховатись за старою моделлю.
Проміряй оцінити() тричі: без нових ознак, із першою, з обома. Потім подивись на
матрицю помилок і скажи, чи змінилась частка помилок серед рядків без ціни.
Увага: результат «жодна з двох ознак нічого не дала» — правильна відповідь, якщо це те, що показали числа. Ховати невдалу спробу не можна; тема саме про це.
Зроблено, якщо: є три значення F1, є частка помилок серед рядків без ціни до і після, і є висновок одним реченням — спрацювало чи ні, і чому ти так думаєш.
рівень 3Рівень 3 — Виклик
Проведи власний наскрізний проєкт на своїх даних. Не на нашій дошці — на будь-якій таблиці, яка тобі цікава: витрати з банківської виписки, статистика ігор улюбленої команди, оцінки в школі, будь-що з відкритих даних. Головна вимога — ти маєш розуміти предметну область, бо без цього не вийде ні постановки, ні аналізу помилок.
Пройди всі кроки в тому самому порядку й запиши результат кожного:
| крок | що має бути в звіті |
|---|---|
| 1. Постановка | що передбачаємо, у який момент, кому це потрібно, ціна кожної помилки, обрана метрика — до будь-якого навчання |
| 2. Поділ | тест відкладено першою дією; сказано, скільки рядків і чому саме стільки |
| 3. Розвідка | тільки на навчальній частині; окремо перевірено, чи немає колонки, якої в момент прогнозу ще не існує |
| 4. Базова лінія | число дурного прогнозу |
| 5. Перша модель | проста модель у конвеєрі, крос-валідація |
| 6. Ітерації | щонайменше три спроби, кожна з числом до і після; щонайменше одна невдала |
| 7. Помилки | подивився на конкретні рядки, де модель помилилась, і назвав, що в них спільного |
| 8. Тест | один замір, один раз, наприкінці |
| 9. Висновок | чи можна це запускати і що заважає |
Якщо своїх даних немає — візьми sklearn.datasets.fetch_openml або будь-який відкритий
набір, який завантажується локально. Але постановку все одно пиши своїми словами: «що
передбачаємо і навіщо» має бути зрозуміло людині, яка не бачила таблиці.
Зроблено, якщо:
- усі дев'ять кроків пройдено, у кожного є число або чітке рішення;
- серед ітерацій є щонайменше одна, яка погіршила метрику, і вона не викинута зі звіту;
- тест поміряно рівно один раз, і число з тесту не краще за крос-валідацію (а якщо краще — ти пояснив, чому так вийшло);
- у звіті є речення «запускати можна / не можна, бо…» з обґрунтуванням не через метрику, а через задачу.
Підказки
- Не починай із моделі. Найчастіша причина провалу третього рівня — сісти писати
fitдо того, як записано, що саме передбачаємо. Постановку пиши текстом, у зошиті, у markdown-клітинці. Вона займе десять рядків і зекономить годину. - Підозріло високий результат — привід шукати витік, а не радіти. Якщо перша ж модель
дала 0.98, майже напевно в ознаках є колонка, яка знає відповідь. У нашому проєкті такою
була
скарг. - Ітерація — це одна зміна. Додав ознаку й одночасно замінив модель — отримав одне число, з якого нічого не зрозуміло. Заведи табличку «крок → що змінив → F1» від першого кроку.
- Другий рівень: щоб приклеїти розмір групи, зроби на
навч_Xкартуgroupby(["модель", "рік"]).size(), а потім удодати_ознакизістав її з рядками так само, як робиться зкарта_типових_цін— черезpd.MultiIndex.from_arrays. - Не переживай через невдалі спроби. У реальному проєкті їх приблизно половина. Звіт, у якому кожен крок покращує метрику, виглядає підозріло, а не переконливо.