Variablen für SVD / PCA "normalisieren"

17

Angenommen, wir haben N messbare Variablen , führen eine Anzahl von Messungen durch und möchten dann eine Singulärwertzerlegung für die Ergebnisse durchführen, um die Achsen mit der höchsten Varianz für die Punkte zu finden im dimensionalen Raum. ( Hinweis: davon aus, dass die Mittel der bereits abgezogen worden, so ein i= 0 für alle i .)M > N M N(a1,a2,,aN)M>NMNaiai=0i

Nehmen wir nun an, dass eine (oder mehrere) der Variablen eine signifikant andere charakteristische Größe als der Rest hat. Zum Beispiel könnte a1 Werte im Bereich von 10100 während der Rest bei 0.11 . Dadurch wird die Achse mit der höchsten Varianz sehr stark in Richtung der Achse a1 verschoben.

Der Unterschied in der Größe kann einfach auf eine unglückliche Wahl der Maßeinheit zurückzuführen sein (wenn es sich um physikalische Daten handelt, z. B. Kilometer gegen Meter), aber tatsächlich können die verschiedenen Variablen völlig unterschiedliche Dimensionen haben (z. B. Gewicht gegen Volumen) Es gibt möglicherweise keine offensichtliche Möglichkeit, "vergleichbare" Einheiten für sie auszuwählen.

Frage: Ich würde gerne wissen, ob es Standard- / Standardmethoden zur Normalisierung der Daten gibt, um dieses Problem zu vermeiden. Ich interessiere mich mehr für Standardtechniken, die zu diesem Zweck vergleichbare Größen für erzeugen, a1aNals etwas Neues zu erfinden.

BEARBEITEN: Eine Möglichkeit besteht darin, jede Variable durch ihre Standardabweichung oder ähnliches zu normalisieren. Dann tritt jedoch das folgende Problem auf: Wir interpretieren die Daten als Punktwolke im N dimensionalen Raum. Diese Punktwolke kann gedreht werden, und diese Art der Normalisierung liefert je nach Drehung unterschiedliche Endergebnisse (nach der SVD). (Stellen Sie sich im extremsten Fall vor, Sie würden die Daten präzise drehen, um die Hauptachsen an den Hauptachsen auszurichten.)

Ich gehe davon aus, dass es keine rotationsinvariante Methode gibt, aber ich würde mich freuen, wenn jemand mich auf eine Diskussion dieses Themas in der Literatur hinweisen könnte, insbesondere in Bezug auf Vorbehalte bei der Interpretation der Ergebnisse.

Szabolcs
quelle
4
Das Problem selbst ist normalerweise nicht rotationsinvariant, da jede der Variablen mit einer dafür geeigneten herkömmlichen Maßeinheit aufgezeichnet wird. ZB könnte in den Füßen, sein ein 2 in & mgr ; m, ein 3 in Litern, etc. Auch wenn alle Geräte gleich sind, wenn die Variablen verschiedene Arten von Dingen messen, die Beträge , mit denen sie wahrscheinlich in einer Weise unterscheiden variieren charakteristisch dieser Variablen: Auch dies ist keine Rotationsinvariante. Daher sollten Sie die Rotationsinvarianz als Leitprinzip oder Überlegung aufgeben. ein1ein2ein3
whuber

Antworten:

11

Die drei häufigsten Normalisierungen sind Zentrieren, Skalieren und Standardisieren.

Sei eine Zufallsvariable.X

Die Zentrierung ist

xi=xix¯.

Die resultierende wird ¯ x * = 0 .xx¯=0

Die Skalierung ist

xi=xi(ixi2).

Das resultierende wird i x i 2 = 1 haben .xixi2=1

Standardisierung ist Zentrieren-dann-Skalieren. Die sich ergebende wird ¯ x * = 0 und Σ i x * i 2 = 1 .xx¯=0ixi2=1

ttnphns
quelle
Können Sie bitte "SS" definieren?
Szabolcs
Quadratsumme. Summe der quadrierten Xi.
TTNPHNS
Der Grund für das Setzen der Quadratsumme auf 1 und nicht der Varianz ist, dass dann die Singularwerte den Standardabweichungen entlang der Hauptachsen entsprechen (sofern ich mich nicht irre)?
Szabolcs
Bitte beachten Sie auch meine Bearbeitung der Frage.
Szabolcs
@ Szabolcs, ich kann tatsächlich einen Punkt Ihrer Bearbeitung verpassen. PCA (oder SVD) ist jedoch nur eine Drehung selbst (ein Sonderfall der orthogonalen Drehung der Achsen). Jede Verschiebung (wie Zentrierung) oder Verkleinerung / Erweiterung (wie Skalierung) der Wolke sollte sich auf die Ergebnisse dieser Drehung auswirken.
TTNPHNS
6

Sie haben völlig Recht, dass es für PCA problematisch sein kann, einzelne Variablen mit sehr unterschiedlichen Abweichungen zu haben, insbesondere wenn dieser Unterschied auf unterschiedliche Einheiten oder unterschiedliche physikalische Abmessungen zurückzuführen ist. Aus diesem Grund wird empfohlen, anstelle der Kovarianzmatrix eine PCA für die Korrelationsmatrix durchzuführen, es sei denn, die Variablen sind alle vergleichbar (gleiche physikalische Größe, gleiche Einheiten). Siehe hier:

Eine PCA für die Korrelationsmatrix ist gleichbedeutend mit einer Standardisierung aller Variablen vor der Analyse (und einer anschließenden PCA für die Kovarianzmatrix). Standardisieren bedeutet, jede Variable zu zentrieren und dann durch ihre Standardabweichung zu dividieren, so dass alle von der Einheitsvarianz abweichen. Dies kann als praktischer "Einheitenwechsel" angesehen werden, um alle Einheiten vergleichbar zu machen.

Man kann sich fragen, ob es manchmal einen besseren Weg gibt, Variablen zu "normalisieren". Beispielsweise kann man sich dafür entscheiden, durch eine robuste Varianzschätzung zu dividieren, anstatt durch die rohe Varianz. Dies wurde im folgenden Thread gefragt und in der folgenden Diskussion nachgelesen (obwohl dort keine definitive Antwort gegeben wurde):

Schließlich haben Sie befürchtet, dass das Normalisieren mit Standardabweichung (oder ähnlichem) nicht rotationsinvariant ist. Nun ja, das ist es nicht. Wie @whuber im obigen Kommentar bemerkte, gibt es dafür keine rotationsinvariante Methode: Das Ändern von Einheiten einzelner Variablen ist keine rotationsinvariante Operation ! Hier gibt es nichts zu befürchten.

Amöbe sagt Reinstate Monica
quelle
4

Eine übliche Technik vor dem Aufbringen von PCA besteht darin, den Mittelwert von den Proben zu subtrahieren. Wenn Sie dies nicht tun, ist der erste Eigenvektor der Mittelwert. Ich bin nicht sicher, ob Sie es getan haben, aber lassen Sie mich darüber sprechen. Wenn wir in MATLAB-Code sprechen: das ist

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')

Wie aus der Abbildung ersichtlich, sollten Sie den Mittelwert von den Daten subtrahieren, wenn Sie die (Co) Varianz besser analysieren möchten. Dann liegen die Werte nicht zwischen 10-100 und 0.1-1, sondern ihr Mittelwert ist alle Null. Die Varianzen werden als Eigenwerte (oder Quadrat der Singularwerte) ermittelt. Die gefundenen Eigenvektoren werden für den Fall, dass wir den Mittelwert ebenso subtrahieren wie für den Fall, dass wir dies nicht tun, nicht von der Skalierung einer Dimension beeinflusst. Ich habe zum Beispiel Folgendes getestet und beobachtet, das besagt, dass das Subtrahieren des Mittelwerts für Ihren Fall von Bedeutung sein kann. Das Problem kann sich also nicht aus der Varianz ergeben, sondern aus der Übersetzungsdifferenz.

% 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

Bildbeschreibung hier eingeben

Petrichor
quelle
1
Ich hätte in der Frage erwähnen sollen, dass der Mittelwert bereits abgezogen wurde. Ich werde es entsprechend bearbeiten.
Szabolcs
1
NN
1
Mir ist klar, dass es möglicherweise keine rotationsinvariante Methode gibt, aber ich würde gerne zumindest einige Diskussionen zu diesen Themen lesen ... Hinweise sind willkommen. Hinweis: Ich habe keine Ausbildung in angewandter Statistik (nur Mathematik, wie z. B. Linalg, Prob-Theorie), deshalb lerne ich dieses Zeug, während ich gehe.
Szabolcs
1
Wenn Sie die Samples nicht zentrieren (die Mittelwerte von den Spalten subtrahieren), ist der erste Eigenvektor normalerweise nicht der Vektor der Mittelwerte.
Whuber
-1 Abgestimmt, weil es bei dieser Antwort nur um die Zentrierung geht, wohingegen es um die Skalierung geht. Auch die Behauptung, dass der erste Eigenvektor notwendigerweise der Vektor des Mittels ist, ist falsch, wie von @whuber bemerkt.
Amöbe sagt Reinstate Monica
-5

Zur Normalisierung der Daten für PCA wird auch die folgende Formel verwendet

SC=100X-Mindest(X)max(X)-Mindest(X)

XctX

Ali
quelle
7
Wer hat etwas über Länder oder Jahre gesagt?
Nick Stauner