Drehmatrix im n-dimensional Raum (R^n) (oder die Suche nach anderen Lösungsansätzen)

Neue Frage »

fernerkundler Auf diesen Beitrag antworten »
Drehmatrix im n-dimensional Raum (R^n) (oder die Suche nach anderen Lösungsansätzen)
Meine Frage:
Hallo zusammen, schön das es euch gibt!

Also, hier ist mein Problem: Die Komponenten meiner Hauptkomponentenanalyse werden ?instabil?, d.h. die Koordinatenachsen des transformierten Hauptkomponentenraums (n=4) verlaufen nicht entlang der ?richtigen? Varianzen. Mir sind die Varianzen bekannt und die neuen Hauptkomponentenachsen sollen entlang eben dieser Varianzen verlaufen (daher will ich die Hauptkomponenten-Koordinatenachsen in diese Varianzen drehen ( ; alle gleichzeitig, so dass die Orthonormalität bestehen bleibt)).

Bis zu einem gewissen Zeitpunkt liegen die Achsen auch entlang der ?richtigen? Varianzen, doch mit der weiteren Zugabe von Datenpunkten wenden sie sich ab (eben in die Richtung der größten Varianz; für meine Aufgabe ist es wichtig weitere Daten hinzuzufügen, um eine repräsentative Stichprobe zu gewährleisten).

Ich hoffe, das Problem ist verständlich ausgedrückt. Um es klarer zu machen habe ich Schaubilder dabei:

Zu sehen sind die rotierten Daten, die mit den 1. und 2. Hauptkomponentenkoeffizienten (Eigenvektoren) transformiert wurden, z.B.
hk1 = r * eig[0] + g * eig[1] + b * eig[2] + n * eig[3]
hk2 = r * eig[a] + g * eig['b] + b * eig[c] + n * eig[d]
Wobei r,g,b,n die Ausgangswerte und eig[0], .. eig[3] und eig[a], .. eig[d] die Hauptkomponentenkoeffizienten der 1. und 2. Komponente repräsentieren.

Schaubild1: Rotation der Daten durch Hauptkomponente 1. und 2. zum Zeitpunkt T1
[attach]50642[/attach]

So ein Ergebnis wie in Schaubild1 ist gewünscht. Die Daten verlaufen entlang der ?richtigen Varianz?, also die Varianz entlang der 1. und 2. Komponente(nachsen). Lediglich auszusetzen bezüglich meines Zweckes, ist die Schieflage, die durch die rote Linie 1 und den roten Pfeil a angedeutet ist. Ein paar Grad nach oben (gegen den Uhrzeigersinn) und die 1. Komponente würde die Daten perfekt projizieren (wahrscheinlich ziehen die Datenpunkte im cyan Rechteck b die Daten nach ?unten?).

Nun gebe ich weitere Datenpunkte in die Hauptkomponentenanalyse hinein (um größere Repräsentativität zu erhalten) und, grrrrrr, alles gerät außer Fugen:

Schaubild2: Rotation der Daten durch Hauptkomponente 1. und 2. zum Zeitpunkt T2
[attach]50643[/attach]

Also hier noch einmal meine Frage: Wie kann ich alle Hauptkomponentenachsen erneut drehen, oder Ebene für Ebene rotieren, so dass einerseits meine bekannten Varianzen (parallel zur Komponentenachse) wiedergegeben werden und andererseits weiterhin die Orthogonalität bestehen bleibt?

Kann ich hier Rotationsmatrizen nutzen?

(Es gibt bei mir nicht nur 4 dimensionale Daten, sondern auch welche mit 8 Dimensionen. Wenn ich im Internet suche, finde ich nur wissenschaftliche Artikel und mega abgespacte Rotationen mit Quaternionen oder mathematische Herleitungen, die ich nicht mal im Ansatz verstehe)

Gibt es vielleicht alternative Lösungsansätze:
# Ausreißersuche und -entfernung (Habe die Daten gecheckt und alle sind im erwarteten Bereich)?
# Kennt ihr eine kontrollierbare Art der Hauptkomponentenanalyse oder andere Methoden die mich zum Ziel bringen könnten?
# ? Habt ihr noch weitere Tipps ?


Vielen vielen Dank,

Euer Fernerkundler


Meine Ideen:
Ich bin steckengeblieben bei der Erstellung/Validierung von Rotationmatizen

# X-Achse
trans = np.array([[np.cos(theta), -np.sin(theta), 0, 0],
[np.sin(theta), np.cos(theta), 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])

# Y-Achse
trans = np.array([[np.cos(theta), 0, 0, -np.sin(theta)],
[0, 1, 0, 0],
[0, 0, 1, 0],
[np.sin(theta), 0, 0, np.cos(theta)]])

# Z-Achse
trans = np.array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, np.cos(theta), -np.sin(theta)],
[0, 0, np.sin(theta), np.cos(theta)]])

# A-Achse
trans = np.array([[1, 0, 0, 0],
[0, np.cos(theta), -np.sin(theta), 0],
[0, np.sin(theta), np.cos(theta), 0],
[0, 0, 0, 1]])

np = numpy, eine python library (https://numpy.org/)
Nils Hoppenstedt Auf diesen Beitrag antworten »
RE: Drehmatrix im n-dimensional Raum (R^n) (oder die Suche nach anderen Lösungsansätzen)
Könntest du vielleicht erstmal ganz kurz zusammenfassen, worum es eigentlich geht?? Wie sehen die Daten aus und was hast du vor?
 
 
fernerkundler Auf diesen Beitrag antworten »
RE: Drehmatrix im n-dimensional Raum (R^n) (oder die Suche nach anderen Lösungsansätzen)
Hi Nils!

Danke für den Hinweis! Also hier:

Daten
Ausgangsdaten sind gemessene Reflexionswerte für jeden Pixel des Bildes, z.B.
[attach]50648[/attach]



pixel0 hat also einen Wert für blue (0.0688), green (0.0703), red (0.0591) und nir (nah-infrarot) (0.0460)
Alle Werte sind > 0 und < 1 (außer zwei Werte im nir haben genau 0, möglicherweise Messfehler)


Methode
Ich leite nun die Hauptkomponenten (HK) aus den Ausgangsdaten ab mit der Hauptkomponentenanalyse (HKA). Ich erhalte die Hauptkomponenten-Koeffizienten (HKK). Zum Beispiel für Schaubild2 sehen die HKK wie folgt aus:
[attach]50647[/attach]

Z.B. hat dann


Resultat
Ich wende nun die Hauptkomponenten-Koeffizienten (HKK) auf die Ausgangsdaten an mit:

hk1 = blue * HK1[0] + green * HK1[1] + red * HK1[2] + nir * HK1[3]
hk2 = blue * HK2[0] + green * HK2[1] + red * HK2[2] + nir * HK2[3]
hk3 = blue * HK3[0] + green * HK3[1] + red * HK3[2] + nir * HK3[3]
hk4 = blue * HK4[0] + green * HK4[1] + red * HK4[2] + nir * HK4[3]

Nun schaue ich mir die hk1 und hk2 an indem ich ein Schaubild erstelle, das ist Schaubild2:

Schaubild2: HK1 und HK2 angewendet auf die Ausgangsdaten (zu einem späteren Zeitpunkt, enthält mehr Datenpunkte als in Schaubild1)
[attach]50650[/attach]

Das Resultat ist nicht gut entsprechend meiner Anwedung.


Was habe ich vor?
Ich will nun eine Koordinatensystemtransformation machen, also HK1, HK2, HK3 und HK4 drehen (bzw. das System drehen), so dass sie wie in Schaubild1 gelagert sind. Die Drehung muss aber die Orthogonalität der Komponenten erhalten (annähernd reicht).

Schaubild1: Eine frühere HK1 und HK2 angewendet auf die Ausgangsdaten (früherer Zeitpunkt, enthält weniger Datenpunkte als in Schaubild2)
[attach]50651[/attach]

Ich suche n-dimensionale Rotationsmatrizen (glaube ich)

Sehr wahrscheinlich gehe ich das Problem nicht richtig an smile Hammer
fernerkundler Auf diesen Beitrag antworten »
RE: Drehmatrix im n-dimensional Raum (R^n) (oder die Suche nach anderen Lösungsansätzen)
Achso die Daten bestehen nicht nur aus einem Pixel sondern es gibt Millionen.

Die Aussage "Alle Werte sind > 0 und < 1 (außer zwei Werte im nir haben genau 0, möglicherweise Messfehler)" bezieht sich auf die Millionen von Datenpunkten
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »