Головна ідея теми в одному реченні: тестова вибірка вдає із себе дані, яких ще не існує, і вся цінність числа, з яким модель піде в реальний світ, залежить від того, наскільки чесно ми зіграємо цю виставу.
рівень 1Рівень 1 — База
Візьми будь-який датасет із sklearn.datasets (наприклад, load_breast_cancer
або load_wine) і повтори процедуру з практики на своїх даних:
- Розбий дані на train / validation / test вручну через
numpyу пропорції 60/20/20. - Доведи, що частини не перетинаються і жоден об'єкт не втрачено.
- Навчи
KNeighborsClassifierі поміряй точність на всіх трьох вибірках. - Порахуй SE = √(p(1−p)/n) для своєї тестової вибірки й наведи 95% довірчий інтервал.
Зроблено, якщо: у зошиті є три числа точності (train / val / test), поруч із тестовим стоїть довірчий інтервал у вигляді «точність X% ± Y%», а перевірка непересічності виводить три нулі.
рівень 2Рівень 2 — Плюс
Досліди, як розмір тестової вибірки псує порівняння моделей.
- Візьми дві моделі, які відрізняються несуттєво — наприклад,
KNeighborsClassifier(n_neighbors=9)іn_neighbors=11. - Для розмірів тесту 20, 50, 100, 300 зроби по 200 випадкових розбиттів і щоразу запиши, яка з двох моделей перемогла.
- Побудуй графік: частка перемог першої моделі залежно від розміру тесту.
Зроблено, якщо: ти назвав розмір тесту, починаючи з якого одна модель перемагає стабільно (скажімо, у понад 80% розбиттів), і пояснив словами, чому на маленькому тесті частка перемог близька до 50% навіть тоді, коли одна модель справді краща.
рівень 3Рівень 3 — Виклик
Відтвори прокляття переможця з другого інтерактиву лекції — числом, а не на словах.
- Згенеруй 30 «моделей-кандидатів» з однаковою справжньою якістю (наприклад, кожна вгадує правильно з імовірністю рівно 0,80 — це можна змоделювати прямо, без навчання).
- «Виміряй» кожну на валідаційній вибірці з 150 об'єктів і на незалежній тестовій вибірці такого самого розміру.
- Обери переможця за валідацією і порівняй його валідаційну оцінку з тестовою.
- Повтори весь експеримент 500 разів і побудуй гістограму різниці «оцінка переможця на валідації − його ж оцінка на тесті».
Зроблено, якщо: гістограма зсунута вправо від нуля, ти назвав середнє завищення у відсоткових пунктах і показав, як воно росте зі збільшенням кількості кандидатів (спробуй 5, 30 і 200 моделей) і зменшується зі збільшенням валідаційної вибірки.
Підказки
- Для рівня 2 не треба щоразу навчати модель наново «з нуля» — достатньо циклу
for repeat in range(200)із новимrandom_stateуtrain_test_split. Порівнюй точності двох моделей на одному й тому самому розбитті: так із порівняння зникає випадковість самого розбиття. - Для рівня 3 модель узагалі не потрібна. «Модель, що вгадує з імовірністю 0,8»
на вибірці з n об'єктів — це просто
rng.random(n) < 0.8, а її виміряна точність — середнє цього масиву. Уся суть ефекту саме в тому, що він не залежить від алгоритму. - Якщо на рівні 3 гістограма вийшла симетричною навколо нуля — швидше за все ти обираєш переможця за тією самою вибіркою, на якій потім міряєш. Оцінок має бути дві незалежні.