Лабораторна робота 21. Як стабілізувати модель Ridge-регуляризацією
Коротко про роботу
Ви побачите нестійкість методу найменших квадратів на майже залежних ознаках і перевірите, як її змінює Ridge. Потрібно порівняти коефіцієнти до і після малої зміни даних, вибрати \(\lambda\) та кількісно оцінити стабілізацію.
Ця робота виконується після лекцій 28. Вона спирається лише на матеріал, який уже пройдено до цього заняття.
▶ Відкрити робочий зошит у браузері
1. Ситуація
У моделі є дві ознаки, які майже повторюють одна одну. Через це звичайний метод найменших квадратів (LS) може дуже сильно змінити окремі коефіцієнти після невеликої зміни даних, хоча прогноз майже не змінюється. Треба побачити цю нестабільність і перевірити, чи допомагає Ridge.
Головне питання роботи: Яке \(\lambda\) дає прийнятний прогноз і водночас робить коефіцієнти менш чутливими до малого збурення даних?
2. Що вже потрібно знати
Перед початком достатньо розуміти такі речі з попередніх лекцій:
- LS-модель;
- число обумовленості;
- Ridge-регуляризація;
- параметр \(\lambda\);
- навчальна та перевірочна вибірки;
Якщо якийсь пункт забувся, поверніться до відповідної лекції. У цій роботі нова теорія не вводиться без пояснення.
3. Як перейти від ситуації до математики
Проблема виникає, коли два стовпці матриці майже дублюють один одного. Тоді маленька зміна даних може сильно переставити коефіцієнти. Ridge додає штраф, який робить оцінку стабільнішою.
Спочатку сформулюйте зміст задачі словами. Лише після цього записуйте формули й код. Це зменшує ризик правильно порахувати не ту задачу.
4. Ваш варіант
У notebook для вашого варіанта вже задані індекси idx_train і idx_val. Це означає, що частина спостережень використовується для оцінювання коефіцієнтів, а інша частина — для вибору \(\lambda\). Не змінюйте цей поділ: він є частиною вихідних даних задачі.
У notebook змініть тільки один рядок:
STUDENT_X = 1 # поставте свій номер 1..30
Номер варіанта змінює числа, але не дає готового способу розв’язання. Основна частина роботи однакова для всіх: побудувати правильну модель, зробити потрібний вибір і перевірити результат.
Після запуску комірки «Дані вашого варіанта» notebook покаже всі числа, потрібні для роботи. Вручну підставляти STUDENT_X у формули не потрібно. Спочатку подивіться на отримані дані та підпишіть, що означає кожен масив або параметр.
5. Де тут треба подумати
Не обирайте \(\lambda\) за найменшою помилкою на навчальній вибірці — при \(\lambda=0\) це майже завжди виглядатиме добре. Використайте перевірочну вибірку і окремо виміряйте, як сильно змінюються коефіцієнти після малого збурення.
Перед тим як писати код, дайте собі відповідь на два питання:
- Чому майже однакові ознаки можуть сильно змінювати коефіцієнти LS?
- Чому lambda слід обирати за перевірочною вибіркою, а не за training error?
Відповідь не треба робити довгою. Достатньо 1–2 речень на кожне питання. Це допомагає перевірити, що ви розумієте задачу до запуску обчислень.
6. Послідовність роботи
Крок 1. Побачити проблему
Порахуйте кореляцію двох ознак та число обумовленості матриці.
Крок 2. Знайти звичайний LS
Оцініть коефіцієнти на вихідних навчальних даних.
Крок 3. Збурити дані
Додайте задане мале відтворюване збурення й повторіть LS. Збережіть і самі нові коефіцієнти, і норму їх зміни. Так можна перевірити, що показник чутливості не записаний вручну.
Крок 4. Реалізувати Ridge
Не штрафуйте вільний член; для інших коефіцієнтів використайте сітку \(\lambda\).
Збережіть коефіцієнти для кожного значення \(\lambda\) у ridge_path.
Це дозволяє окремо перевірити рівняння Ridge для всього шляху, а не тільки для фінальної точки.
Крок 5. Обрати \(\lambda\)
Для кожного значення порахуйте MSE на перевірочній вибірці і виберіть найкраще.
Крок 6. Повторити тест стабільності
Для вибраного best_lambda повторіть Ridge після того самого збурення.
Збережіть нові коефіцієнти, а потім порівняйте їх зміну зі зміною LS.
7. Python
Використовуйте: NumPy; Pandas/Matplotlib за бажанням.
Не намагайтеся вмістити всю роботу в одну велику комірку. Зручніше мати окремі невеликі блоки: дані → модель → обчислення → перевірка → висновок. Назви змінних повинні показувати їхній зміст.
8. Локальна самоперевірка
У робочому notebook наперед створені назви змінних, які читає автоматична перевірка. Не перейменовуйте їх. Ви самі пишете спосіб розв’язання, але фінальний результат записуєте у визначені змінні.
| Змінна | Що записати |
|---|---|
condition_number |
число обумовленості train design matrix |
ls_coefficients |
LS-коефіцієнти на train |
ls_coefficients_perturbed |
LS-коефіцієнти після заданого малого збурення |
ls_sensitivity |
норма зміни LS-коефіцієнтів після збурення |
ridge_path |
матриця коефіцієнтів Ridge: один рядок для кожного lambda_grid |
validation_mse |
масив MSE для всіх lambda_grid |
best_lambda |
lambda з найменшим validation MSE |
ridge_coefficients |
Ridge-коефіцієнти для best_lambda |
ridge_coefficients_perturbed |
Ridge-коефіцієнти після того самого збурення |
ridge_sensitivity |
норма зміни Ridge-коефіцієнтів після збурення |
Після виконання всіх кроків запустіть комірку «Локальна самоперевірка». Для вашого STUDENT_X вона читає наперед обчислені контрольні значення та порівнює з ними всі результатні змінні з таблиці вище. Числові значення порівнюються з указаним допуском; логічні, текстові та дискретні результати — точно. Для множин індексів порядок елементів не має значення, а для напрямів власних векторів враховується еквівалентність v та -v.
✅ OKозначає, що всі результатні змінні збігаються з контрольними значеннями в межах заданих допусків.❌означає, що біля конкретної змінної буде вказано, яке порівняння не пройдено.
Самоперевірка не замінює короткий предметний висновок: після OK поясніть своїми словами, що означає отриманий результат у ситуації цієї лабораторної.
9. Що має бути у звіті
Звіт не повинен бути переписаним notebook. Покажіть вихідні дані, ключові проміжні результати, перевірки та короткий висновок своїми словами. У звіті обов’язково мають бути:
- номер вашого варіанта;
- вихідні дані, які реально використовувалися;
- ключовий проміжний результат, на якому ґрунтується рішення;
- фінальний результат;
- незалежна числова перевірка;
- коротке пояснення, що цей результат означає в початковій прикладній ситуації.
Наприкінці дайте відповідь на головне питання лабораторної одним коротким абзацом.
10. Контрольні питання
- Чому майже залежні ознаки роблять LS-коефіцієнти нестабільними?
Показати відповідь
Різні комбінації великих коефіцієнтів можуть давати дуже схожі прогнози, тому мала зміна даних сильно змінює окремі оцінки.- Чому параметр регуляризації обираємо на перевірочній вибірці?