Тест самоперевірки

Крос-валідація

Обери відповідь — і одразу побачиш пояснення. Помилитись тут корисніше, ніж на іспиті.

← до лекції
Відповіді0 / 8   правильних: 0
Питання 1 / 8

У практиці ми 120 разів перемішали ту саму вибірку. Розкид оцінки одного hold-out розбиття вийшов σ = 0.051, а 5-Fold — σ = 0.012. Чому виграш більший за √5 ≈ 2.24?

Чому так. √K — це виграш для незалежних оцінок. У житті діють два ефекти в різні боки. Фолди перекриваються навчальними частинами, їхні помилки скорельовані — це виграш зменшує. Зате hold-out міряє якість лише на 1/K обʼєктів і тому шумить катастрофічно. Другий ефект зазвичай сильніший, тож реальний виграш може перевищити √K. Навчальні частини в обох випадках однакові за розміром — саме тому порівняння чесне.
Питання 2 / 8

У задачі 5% позитивів. Практика показала: 40% випадкових розбиттів KFold дають фолд, у якому немає жодного позитива. Чим це небезпечно найбільше?

Чому так. Небезпека саме в тихості. Recall на фолді без позитивів має нуль у знаменнику, precision теж; бібліотека або поверне nan, або підставить нуль — і твоє середнє буде нижчим без жодної причини. Усереднення тут не рятує, а маскує проблему. Модель у такому фолді навчається нормально: рідкісний клас лишився в навчальній частині, і саме тому помилку легко не помітити. Лікування — StratifiedKFold за замовчуванням для будь-якої класифікації.
Питання 3 / 8

На даних з чистого шуму (2000 випадкових ознак, мітки кинуті монеткою) відбір 5 найкращих ознак ДО крос-валідації дав accuracy 0.82, а той самий відбір усередині Pipeline — 0.50. Що показує число 0.82?

Чому так. Закономірності в цих даних немає взагалі — чесна відповідь тут рівно 0.5, і пайплайн її дає. Відбір, зроблений до розбиття, подивився на всі мітки й вибрав ті 5 стовпців із 2000, що випадково найкраще корелюють із ціллю. Валідаційний фолд брав участь у цьому виборі — отже, він більше не «нові дані». Те саме стосується масштабування, SMOTE і будь-якого кроку, що дивиться на дані: усе це має бути кроком Pipeline.
Питання 4 / 8

GridSearchCV перебрав 7 значень C. Переможець дав 0.830, другий результат — 0.825, а розкид по фолдах у переможця ±0.025. Що писати у звіт як оцінку якості моделі?

Чому так. best_score_ — це мінімум помилки (максимум метрики) із семи зашумлених чисел, а мінімум випадкових величин у середньому менший за їхнє справжнє значення. Ти обрав(ла) не лише найкращу модель, а й найудачливіший шум. Це те саме перенавчання, тільки на рівень вище — не параметрів, а гіперпараметрів. Чесне число дає вкладена крос-валідація або окрема тестова вибірка, яку чіпають рівно один раз. Додати ±0.025 корисно, але оптимізму це не знімає.
Питання 5 / 8

У тебе дані про пацієнтів: по три знімки на кожного. Ти зробив(ла) звичайний KFold, отримав(ла) 0.95, а в лікарні модель дала 0.71. Що сталося?

Чому так. Уся математика крос-валідації тримається на припущенні, що рядки незалежні. Три знімки однієї людини — не три незалежні спостереження. Модель побачила пацієнта в навчанні й «упізнала» його у валідації, тож метрика відповідала на питання «наскільки добре модель упізнає вже бачених людей», а реальна задача — «як вона працює на нових». Лікування — GroupKFold: усі записи однієї групи цілком ідуть або в навчання, або у валідацію. Питання, яке варто ставити щоразу: що саме модель побачить уперше в реальному використанні?
Питання 6 / 8

Що робити з K моделями, навченими під час крос-валідації, після того як оцінку отримано?

Чому так. Ці K моделей існували лише для того, щоб дати оцінку. Фінальну навчають з нуля на всіх даних, а число CV(K) вважають прогнозом її якості — і цей прогноз навіть трохи песимістичний, бо фінальна модель бачила більше даних, ніж кожна з K. Брати «найкращий фолд» — пряма дорога до вибору найудачливішого шуму: фолд не є властивістю моделі. Ансамбль із K моделей — окрема техніка, але це вже інша модель, і оцінка CV її не описує.
Питання 7 / 8

Дві моделі: перша дає CV 0.812 ± 0.030, друга 0.818 ± 0.028. Яку обрати?

Чому так. Різниця між моделями має сенс лише тоді, коли вона більша за розкид оцінки. Тут вона в пʼять разів менша — вибір за середнім є самообманом. Саме тому cross_val_score варто дивитися разом із .std(), а не лише з .mean(). Перезапуск з іншим random_state дасть іншого переможця — це й доводить, що різниці немає. Обирай за швидкістю, інтерпретованістю або вартістю підтримки.
Питання 8 / 8

Зі зростанням K оцінка стає менш зміщеною. Чому ж на практиці майже завжди беруть 5 або 10, а не K = n?

Чому так. Зі зростанням K навчальна частина росте, тому зміщення оцінки падає — але падає воно дедалі повільніше (від 80% до 90% даних приросту менше, ніж від 50% до 80%). Водночас треба навчити K моделей, і вони стають майже однаковими між собою, тож усереднення знімає все менше шуму. Криві «виграш» і «вартість» перетинаються десь у зоні 5…10. LOOCV якраз детермінований (розбиття єдине) і має важливий виняток: для лінійних моделей він рахується за один прохід через діагональ капелюшної матриці — саме тому RidgeCV користується ним безкоштовно.