Нормалізація даних і стандартизація в нейронних мережах


40

Я намагаюся передбачити результат складної системи за допомогою нейронних мереж (ANN). Значення результату (залежно) коливаються від 0 до 10000. Різні вхідні змінні мають різні діапазони. Усі змінні мають приблизно нормальний розподіл.

Я розглядаю різні варіанти масштабування даних перед тренуванням. Один із варіантів - масштабувати вхідні (незалежні) та вихідні (залежні) змінні до [0, 1] шляхом обчислення функції кумулятивного розподілу використовуючи середнє та стандартне значення відхилень кожної змінної, незалежно. Проблема цього методу полягає в тому, що якщо я використовую функцію активації сигмоїдів на виході, я, швидше за все, пропущу екстремальні дані, особливо ті, які не бачили у навчальному наборі

Ще один варіант - використовувати z-бал. У такому випадку у мене немає крайньої проблеми з даними; однак я обмежений лінійною функцією активації на виході.

Які ще прийняті методи нормалізації, які використовуються в ANN? Я намагався шукати відгуки на цю тему, але нічого корисного не знайшов.


Іноді використовується нормалізація Z-балів, але у мене дивне відчуття, що це може бути інша назва відповіді Байєра ??
osknows

Це те саме, за вибілюючою частиною.
байерж

1
Якщо ви прогнозуєте значення (як ви є), а не ймовірність (тобто регресія, а не класифікація), ви завжди повинні використовувати функцію лінійного виводу.
seanv507

Ранг-Гаусс Майкла Джарера . Це ранг, тоді роблять його гауссом.
користувач3226167

Відповіді:


32

Стандартний підхід полягає в масштабуванні входів, щоб вони мали середнє значення 0 та дисперсію 1. Також багато допомагає лінійна декорреляція / відбілювання / pca.

Якщо вас цікавлять хитрощі торгівлі, я можу порекомендувати ефективний фоновий папір LeCun.


1
Звичайно, ніколи не слід намагатися сліпо нормалізувати дані, якщо дані не слідують за (єдиним) нормальним розподілом. stats.stackexchange.com/a/816/4581
user4581

24
З нейронними мережами вам доведеться. В іншому випадку ви одразу наситите приховані одиниці, тоді їх градієнти будуть майже нульовими і навчання не буде можливим. Йдеться не про моделювання (нейронні мережі не передбачають розподілу вхідних даних), а про числові проблеми.
байерж

Я досить розгублений. У цьому посиланні ( machinelearningmastery.com/… ) йдеться про те, що стандартизація корисна, коли алгоритм, який ви використовуєте, робить припущення щодо ваших даних, що мають розподіл Гаусса (не у випадку з NN). Інакше йдеться про те, що вам слід скористатися нормалізацією. Може хтось мене просвітить?
ihebiheb

21

1- Нормалізація мінімальної максимуму зберігає початковий розподіл балів за винятком коефіцієнта масштабування та перетворює всі бали у загальний діапазон [0, 1]. Однак цей метод не є надійним (тобто метод є дуже чутливим до людей, що втрачають чужий статус.

2- Стандартизація (нормалізація Z-балів) Найчастіше використовується техніка, яка розраховується за допомогою середнього арифметичного та стандартного відхилення даних даних. Однак, як середнє, так і стандартне відхилення чутливі до людей, що виживають, і ця методика не гарантує загального числового діапазону для нормалізованих балів. Більше того, якщо вхідні бали не розподілені по Гауссу, ця методика не зберігає вхідний розподіл на виході.

3- Медіана та MAD: Середнє та середнє абсолютне відхилення (MAD) нечутливі до виснажувачів та точок у крайніх хвостах розподілу. тому він надійний. Однак ця методика не зберігає вхідний розподіл і не перетворює бали у загальний числовий діапазон.

4-тан-оцінки: Тан-оцінки, представлені Hampel та ін. є надійними та високоефективними. Нормалізація задана

тан-оцінки де μGH та σGH - середні та стандартні відхилення оцінок відповідно розподілу справжнього балу, наведеного оцінниками Гампеля.

Тому я рекомендую танг-оцінки.

посилання https://www.cs.ccu.edu.tw/~wylin/BA/Fusion_of_Biometrics_II.ppt


Мені важко знайти інформацію про цей тан-оцінювач. Чи може хтось пролити на це світло?
Бен Огорек

Нарешті знайдений документ, який виконує хорошу роботу з описом тонких оцінок для нормалізації: wjscheirer.com/papers/wjs_eccv2010_fusion.pdf . Вони не здаються життєздатними як варіант нормалізації загального призначення. "[Оцінки Тана] набагато складніше обчислити, порівняно з адаптивними z-оцінками ... Хвостові точки для трьох різних інтервалів від середньої оцінки розподілу повинні бути визначені спеціально. Ці параметри можуть бути складними визначити експериментально, і якщо їх вибрано неправильно, обмежте ефективність тан-оцінок. "
Бен Огорек

8

Я дав подібну відповідь тут. Проводячи множинні регресії, коли слід зосереджувати свої прогнозні показники та коли їх стандартизувати? але думав, що це досить інший контекст, щоб відповідь могла йти сюди.

Є чудовий ресурс Usenet http://www.faqs.org/faqs/ai-faq/neural-nets/part2/section-16.html

У простому контексті воно дає деякі питання та міркування, коли хочеться нормалізувати / стандартизувати / змінити масштаб даних. Оскільки вона розглядає предмет з точки зору машинного навчання, а оскільки ваше питання стосується ML, це може мати певну актуальність.


Тут слід написати основні моменти кожного посилання, тому додаткова «навігація» не потрібна
leoschet

2

Ви могли б зробити

  • нормалізація min-max (Нормалізація входів / цілей, щоб потрапити в діапазон [−1,1]), або
  • нормалізація середнього середнього відхилення (нормалізація входів / цілей, щоб мати нульову середню і дисперсію одиниці / стандартне відхилення)

1

Якщо ви працюєте python, sklearnє метод для цього, використовуючи різні методи в їх preprocessingмодулі (плюс вишукану функцію конвеєра з прикладом у своїх документах):

import sklearn

# Normalize X, shape (n_samples, n_features)
X_norm = sklearn.preprocessing.normalize(X)

0

Ну, [0,1] - це стандартний підхід. Для нейронних мереж найкраще працює в діапазоні 0-1. Мінімальне масштабування (або нормалізація) - це підхід.

Тепер, що стосується інших людей, у більшості сценаріїв ми маємо їх вирізати, тому що вони не є загальним явищем, ви не хочете, щоб люди, які випадають, впливали на вашу модель (якщо виявлення аномалії не є проблемою, яку ви вирішуєте). Ви можете його відрізати за емпіричним правилом 68-95-99.7 або скласти сюжетну коробку, спостерігати і відповідно відсікати її.

Формула MinMax - (xi - min(x)) / (max(x) - min(x)) або може використовуватиsklearn.preprocessing.MinMaxScaler


-1

"Прийнято" - це те, що найкраще працює для вас - тоді ви приймаєте це.

На моєму досвіді, пристосування розподілу із сімейства Джонсонів дистрибутивів до кожної з безперервних функцій працює добре, оскільки дистрибуції є надзвичайно гнучкими і можуть перетворити більшість одномодальних функцій у стандартні звичайні дистрибутиви. Це допоможе і з мультимодальними функціями, але важливо, що це, як правило, ставить функції в найбільш бажану можливу форму (стандартні дані, розподілені Гауссом, ідеально підходять для роботи - вони сумісні, а іноді і оптимальні для більшості кожного доступний статистичний / ML метод).

http://qualityamerica.com/LSS-Knowledge-Center/statisticinference/johnson_distributions.php

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.