"Нормалізація" змінних для SVD / PCA


17

Припустимо , що ми маємо N вимірних величин, (a1,a2,,aN) , ми робимо ряд M>N вимірювань, а потім хочете виконати сингулярне розкладання за результатами , щоб знайти осі самої високої дисперсії для M точок у N -вимірному просторі. ( Примітка: припустить , що кошти я вже вичитав, так а я= 0 для всіх I ) .aiai=0i

Тепер припустимо, що одна (або більше) змінних має значно іншу характеристичну величину, ніж решта. Наприклад , 1 може мати значення в діапазоні 10 - 100 , а решта може бути близько 0,1 - 1 . Це буде спотворювати вісь самої високої дисперсії в напрямку на 1 осі «и дуже багато.a1101000.11a1

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

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

EDIT: Однією можливістю є нормалізація кожної змінної за її стандартним відхиленням чи чимось подібним. Однак з'являється наступне питання: давайте інтерпретуємо дані як хмара точок у N розмірному просторі. Цю точку хмари можна обертати, і цей тип нормалізації дасть різні кінцеві результати (після SVD) залежно від обертання. (Наприклад, в крайньому випадку, уявіть, як точно обертати дані, щоб вирівняти головні осі з основними осями.)

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


4
Сама проблема, як правило, не є інваріантною обертанням, тому що кожна зі змінних записується звичайною одиницею вимірювання, що відповідає їй. Наприклад, 1 може бути в футах, 2 в мікронах, 3 в літрах і т.д. Навіть тоді , коли всі пристрої однакові, якщо змінні виміру різних видів речей, суми , за якими вони розрізняються, швидше за все , розрізняються способами , характерними цих змінних: ще раз це не є інваріантним обертанням. Тому слід відмовитися від інваріації обертання як керівного принципу чи розгляду. a1a2a3
whuber

Відповіді:


11

Три поширені нормалізації - це центрування, масштабування та стандартизація.

Нехай - випадкова величина.X

Центрування -

xi=xix¯.

Отриманий матиме ¯ x = 0 .xx¯=0

Масштабування -

xi=xi(ixi2).

Отриманий матиме i x i 2 = 1 .xixi2=1

Стандартизація - це центрування, а потім масштабування. Отриманий матиме ¯ x = 0 і i x i 2 = 1 .xx¯=0ixi2=1


Чи можете ви визначити "SS", будь ласка?
Szabolcs

Підсумки квадратів. Сума квадрата Xi.
ttnphns

Причиною встановлення суми квадратів до 1, а не дисперсії, є те, що тоді сингулярні значення відповідатимуть стандартним відхиленням уздовж основних осей (якщо я не помиляюся)?
Szabolcs

Будь ласка, дивіться також мою редакцію питання.
Szabolcs

@Szabolcs, я фактично можу пропустити точку вашої редагування. Але PCA (або SVD) - це лише сам поворот (особливий випадок ортогонального обертання осей). Будь-який переклад (як центрування) або зменшення / дилатація (як масштабування) хмари повинен впливати на результати цього обертання.
ttnphns

7

Ви абсолютно праві, що наявність окремих змінних з дуже різними відхиленнями може бути проблемою для PCA, особливо якщо ця різниця обумовлена ​​різними одиницями або різними фізичними розмірами. З цієї причини, якщо змінні не всі порівнянні (однакова фізична величина, однакові одиниці), рекомендується виконувати PCA на кореляційній матриці замість коваріаційної матриці. Дивіться тут:

Виконання PCA на кореляційній матриці еквівалентно стандартизації всіх змінних до аналізу (а потім робити PCA на коваріаційній матриці). Стандартизація означає центрування, а потім ділення кожної змінної на її стандартне відхилення, так що всі вони стають різницею одиниці. Це можна розглядати як зручну "зміну одиниць", щоб зробити всі одиниці порівнянними.

Можна запитати, чи може бути іноді кращий спосіб "нормалізації" змінних; наприклад, можна вибрати поділ на якусь надійну оцінку дисперсії замість сировинної дисперсії. Про це запитали в наступній темі, і подивіться витікаючу дискусію (хоча жодної однозначної відповіді там не було надано):

Нарешті, ви переживали, що нормалізація за стандартним відхиленням (або чимось подібним) не є інваріантним обертанням. Ну так, це не так. Але, як зауважив @whuber у коментарі вище, не існує інваріантного обертання способу цього: зміна одиниць окремих змінних - це не інваріантна обертання обертання ! Тут нема чого хвилюватися.


Я отримую це за PCA. Але чи рекомендується також виконати будь-яку нормалізацію перед тим, як запустити однозначне розкладання?
hipoglucido

4

Загальна методика перед застосуванням PCA - відняти середнє значення з зразків. Якщо цього не зробити, перший власний вектор буде середнім. Я не впевнений, чи ви це зробили, але дозвольте мені поговорити про це. Якщо ми говоримо в коді MATLAB: це так

clear, clf
clc
%% Let us draw a line
scale = 1;
x = scale .* (1:0.25:5);
y = 1/2*x + 1;

%% and add some noise
y = y + rand(size(y));

%% plot and see
subplot(1,2,1), plot(x, y, '*k')
axis equal

%% Put the data in columns and see what SVD gives
A = [x;y];
[U, S, V] = svd(A);

hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found directly')

%% Now, subtract the mean and see its effect
A(1,:) = A(1,:) - mean(A(1,:));
A(2,:) = A(2,:) - mean(A(2,:));

[U, S, V] = svd(A);

subplot(1,2,2)
plot(x, y, '*k')
axis equal
hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found after subtracting mean')

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

% scale = 0.5, without subtracting mean
U =

-0.5504   -0.8349
-0.8349    0.5504


% scale = 0.5, with subtracting mean
U =

-0.8311   -0.5561
-0.5561    0.8311


% scale = 1, without subtracting mean
U =

-0.7327   -0.6806
-0.6806    0.7327

% scale = 1, with subtracting mean
U =

-0.8464   -0.5325
-0.5325    0.8464


% scale = 100, without subtracting mean
U =

-0.8930   -0.4501
-0.4501    0.8930


% scale = 100, with subtracting mean
U =

-0.8943   -0.4474
-0.4474    0.8943

enter image description here


1
Я мав би зазначити у питанні, що середнє значення вже віднято. Я відповідно відредагую його.
Szabolcs

1
NN

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

1
Якщо ви не центруєте вибірки (віднімаєте засоби з стовпців), перший власний вектор зазвичай не є вектором засобів.
whuber

-1 Незважаючи на те, що ця відповідь стосується лише центрування, тоді як питання стосується масштабування. Також твердження, що перший власний вектор обов'язково є вектором засобів, є неправильним, як зазначає @whuber.
Амеба каже, що поверніть Моніку

-5

Для нормалізації даних для PCA також використовується наступна формула

SC=100Xmin(X)max(X)min(X)

XctX


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