Я будую регресійні моделі. Як крок попередньої обробки, я масштабую свої функції, щоб вони мали середнє значення 0 і стандартне відхилення 1. Чи потрібно також нормалізувати цільові значення?
Я будую регресійні моделі. Як крок попередньої обробки, я масштабую свої функції, щоб вони мали середнє значення 0 і стандартне відхилення 1. Чи потрібно також нормалізувати цільові значення?
Відповіді:
Давайте спочатку проаналізуємо, чому виконується масштабування функцій. Масштабування функцій покращує зближення алгоритмів найбільш крутого спуску, які не мають властивості інваріантності масштабу.
У стохастичних прикладах тренувань з градієнтом інтерактивне оновлення ваги повідомляється повторно так,
Там , де є вагами, γ є розмір крок, ∇ ж це вага градієнта WRT, ℓ є функцією втрат, е ш функції параметризрвані ш , х являє собою навчальний приклад, і у є відповідь / ярлик.
Порівняйте наступні опуклі функції, які представляють належне масштабування та неправильне масштабування.
Крок через оновлення ваги розміру дозволить значно краще зменшити похибку в правильному масштабі, ніж неправильно масштабований випадок. Нижче показано напрямок ∇ w ℓ ( f w ( x ) , y ) довжини γ .
Нормалізація виходу не вплине на форму , тому це взагалі не потрібно.
Єдина ситуація, на яку я можу уявити, що масштабування результатів має вплив, це якщо ваша змінна відповідь дуже велика та / або ви використовуєте змінні f32 (що є загальним для лінійної алгебри GPU). У цьому випадку можна отримати перелив плаваючої точки елемента ваг. Симптом є або значенням Inf, або він перевернеться до іншого крайнього подання.
Взагалі, це не потрібно. Масштабування входів допомагає уникнути ситуації, коли одна чи кілька особливостей домінують над іншими за величиною, в результаті модель навряд чи підбирає внесок менших змінних масштабів, навіть якщо вони сильні. Але якщо ви масштабуєте ціль, ваша середня квадратична помилка автоматично масштабується. MSE> 1 автоматично означає, що ви робите гірше, ніж постійне (наївне) прогнозування.
Ні, лінійні перетворення відповіді ніколи не потрібні. Однак вони можуть бути корисними для інтерпретації вашої моделі. Наприклад, якщо ваша відповідь наводиться в метрах, але, як правило, дуже мала, може бути корисним перерахувати масштаб до міліметрів. Зауважте також, що центрування та / або масштабування входів може бути корисним з тієї ж причини. Наприклад, ви можете приблизно інтерпретувати коефіцієнт як вплив на відповідь на зміну одиниці в предикторі, коли всі інші предиктори встановлені на 0 . Але 0 часто не буде дійсним чи цікавим значенням для цих змінних. Центрирування входів дозволяє інтерпретувати коефіцієнт як ефект на зміну одиниці, коли інші предиктори припускають їх середні значення.
Інші перетворення (наприклад, лог або квадратний корінь) можуть бути корисними, якщо відповідь не є лінійною у предикторів за початковою шкалою. Якщо це так, ви можете прочитати про узагальнені лінійні моделі, щоб побачити, чи підходять вони вам.
Так , вам потрібно масштабувати цільову змінну. Я цитую це посилання :
Цільова змінна з великим розкидом значень, в свою чергу, може призвести до великих значень градієнта помилок, що призведе до різкого зміни значень ваги, що зробить процес навчання нестабільним.
У довідці також є демонстрація коду, коли ваги моделі вибухали під час тренувань, враховуючи дуже великі помилки і, в свою чергу, градієнти помилок, обчислені для оновлення ваги, також вибухали. Якщо коротко, якщо ви не масштабуєте дані та маєте дуже великі значення, не забудьте використати дуже малі значення швидкості навчання. Про це також згадував @drSpacy.