Hallo Phil,
danke für deinen umfassenden Beitrag, ich werde mal versuchen punktuell darauf einzugehen.
Full ack. Ich habe wohl einfach das Problem unterschätzt und dachte, es sei (für die Problemlösung) hinlänglich beschrieben. Aber ohne mein Ziel zu kennen, ist es wohl doch nicht so einfach, weil es vielleicht sogar einen besseren grundlegenden Ansatz gibt, um mein Ziel zu erreichen.
Die Prototypen sollen zu Anfang möglichst weit voneinander entfernt sein. Die Punkte halt gemäß ihrer Ausprägungen. Ist mein neuer Ansatz eine Interpolation? Wüsste nicht warum. Hier mal ein vollständiges Beispiel:
Es gibt 2 Prototypen und 6 Eigenschaften.
Prototyp Mann Xm: Eigenschaften: (1, 1, 1, 0, 0, 0), Koordinate in der Ebene: 100, 0
Prototyp Frau Xf: Eigenschaften: (0, 0, 0, 1, 1, 1), Koordinate in der Ebene: 0, 100
Neuer Punkt C: (0.1, 0.2, 0.3, 0.4, 0.5, 0.6)
C * Xm = 0.6
C * Xf = 1.5
Offensichtlich ist der neue Vektor der Frau deutlich näher als dem Mann.
Nomierung der Summe auf 1 (Rundensfehler egal). Der neue Vektor würde ohne Normierung bereits in die richtige Richtung zeigen, aber viel zu lang sein, daher die Normierung:
0.6 / 2.1 = 0.288
1.5 / 2.1 = 0.714
Nun summiere ich die Produkte der Prototyp-Punkte mit dem Ergebnis aus (C * Xx).
Vmann = (100, 0) * 0.288 = (28.8, 0)
Vfrau = (0, 100) * 0.714 = (0, 71.4)
Koordinaten C = Vmann + Vfrau = (28.8, 71.4)
Fertig. Der neue Punkt liegt also deutlich näher bei der Frau, was gemäß der Ausprägungen richtig ist.
Hmm, da muss ich passen, ich studiere weder Mathe, noch reine Informatik und komme da gerade nicht hinterher Rezeptives Feld? Warum wird er nicht anhand der Eigenschaften zugeordnet? VIelleicht nur ein Missverständis, weil ich gestern Nacht nicht alles genau beschrieben habe?
Es geht um Klassifizierung. Die Prototypen sind vorgegeben und ein neuer Eingabevektor wird gemäß seiner Eigenschaften bewertet. Es wird also für jeden vorhanden Prototypen ein Ähnlichkeitswert errechnet (das ist auch schon alles implementiert). Nach dem ein gewisses Verfahren also ausgeführt wurde, weiß ich, wie groß die Ähnlichkeit meines Eingabevektors zu jedem einzelnen Prototypen ist. Die Werte sind exakt und können folglich interpretiert werden. Ziel ist es nun eine *ungefähre* Visualisierung dessen zu erreichen. Man soll also auf Anhieb *grafisch* sehen können, wie ähnlich ein Eingabevektor den vorhandenen Prototypen ist,
Entschuldige, da kommt mein mathematischer Wissensmangel erneut zum Tragen. Warum hat jeder Prototyp nur 2 Dimensionen? Dass es im R^n nur n linear unabhängig Vektoren gibt, ist mir noch aus einer Mathevorlesung bekannt.
P1 = (1, 0, 0)
P2 = (0, 1, 0)
P3 = (0, 0, 1)
Die sind doch disjunkt, oder nicht?
Erm...
Das hört sich alles unheimlich spannend an, das mit dem Cube kann ich auch noch nachvollziehen, aber den Rest leider nicht. PCA, ICA, LDA? Ich habe gerade mal gegoogelt und geschaut. Sieht alles ganz schön mächtig aus, für einen nicht-Mathematiker Gibt es denn mit meinem aktuellen Verfahren ein Problem? Es ist ja schon recht simpel.
Puh, moment. Ich sehe das Problem nicht. Ich errechne also diese Ähnlichkeitswerte für einen Eingabevektor zu den Prototypen. Punkt, mehr erst mal nicht. Und das möchte ich dann einfach nur in 2D visualisieren, wie oben geschrieben.
Das funktioniert gerade folgendermaßen:
function y = n_eck(n, dim_y)
mittelpunkt = [ 1 1 ] * dim_y / 2
radius = dim_y / 2;
y = [ ];
for i = 0:(n - 1)
v = mittelpunkt - radius * [ cos(2 * pi * i / n) , sin(2 * pi * i / n) ];
y = [y; v];
endfor
endfunction
Wobei n die Anzahl der Ecken ist und dim_y die Größe meiner Fläche.
Noch mal ein Schlußwort. Ich freue mich über deine Antworten, finde das auch sehr spannend und versuche daraufhin immer was nachzulesen, aber prinzipiell kann ich nicht auf dem hohen mathematischen Niveau mitdiskutieren, wie gesagt, bin weder Mathematiker noch Informatiker (oder Physiker). Dass ich oben nicht auf alles von dir eingegangen bin liegt also nicht in mangelnder Lust ;-)