Verfasst am: 20.08.2014, 10:38
Titel: Problem - Clustering mit K-Means
Huhu,
ich habe verschiedene Kurven - teilweise recht ähnlich, teilweise sehr verschieden - und möchte diese mittels dem in Matlab vorhandenen kmeans in verschiedene Cluster einteilen.
Das Problem ist nun, dass ich die Anzahl der Klassen nicht kenne, diese ja aber vorgeben muss.
Also lasse ich einfach eine for-Schleife mit allen möglichen Klassenanzahlen durchlaufen und gebe mir gleichzeitig immer noch den Silhouettenkoeffizient aus.
Nun zu meinem Problem: als bestmögliches Ergebnis erhalte ich immer die maximal mögliche Anzahl an Klassen (was allerdings nicht wirklich sinnvoll ist).
Mache ich da noch iwo einen Fehler oder ist dies einfach ein Overfitting-Problem?
bitte Beispiel-Code angeben, damit man sieht, welche Optionen du verwendest.
Was heißt z.B. für dich "ähnlich"? Geringe Abweichung in der Norm oder hohe Korrelation?
Grüße,
Harald
Help!
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.08.2014, 11:03
Titel:
Also ich hab ne 11x184 Matrix (M), d.h. 11 Kurven mit je 184 Werten.
Mein Code wäre:
Code:
for k=1:size(M,2) [idx]=kmeans(M,k,'Replicates',100,'distance','sqEuclidean');
k_means.idx(:,k)=idx;
[silh,h]=silhouette(M,idx,'sqEuclidean');
sil_koeff(k)=mean(silh);
end
Mein erster Ansatz war, jeweils die Metrik aller Kurven zu berechnen und diese über einen Schwellwert zu trennen.
Dies funktionierte schon recht gut, allerdings erhoffte ich mir durch das K-Means Verfahren noch eine Steigerung.
Help!
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.08.2014, 11:07
Titel:
Sorry, sollte bei der for-Schleife natürlich heißen:
kannst du noch deine Daten oder einen Plot davon zur Verfügung stellen?
Grüße,
Harald
Help!
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 20.08.2014, 11:35
Titel:
Ich teste das hier im Moment mit simulierten Daten und einer 10x184 Matrix - aber das sollte ja kein Problem sein bzw. ergibt sich auch hier das gleiche Problem.
Hab dir die Plots mal hochgeladen - einmal die mit Rauschen überlagerten Kurven und einmal der zugehörige Plot des Silhouettenkoeffizient, der mir als bestes Ergebnis eben die max. Anzahl an Clustern ausgibt.
ich kenne mich da nicht in der Tiefe aus, meine jedoch mich zu erinnern, dass kmeans sinnvolle Resultate liefert, wenn die Balken von silhouette alle etwa gleich lang sind. Ich würde also range(silh) betrachten, was von 4 auf 5 stark ansteigen würde. 4 ist also gut, 5 nicht mehr. Das deckt sich hier zumindest mit den optischen Eindrücken.
Grüße,
Harald
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.