WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Problem - Clustering mit K-Means

 

Help!

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 10:38     Titel: Problem - Clustering mit K-Means
  Antworten mit Zitat      
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?

Danke!
Gruß


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2014, 10:45     Titel:
  Antworten mit Zitat      
Hallo,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Help!

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 11:03     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 20.08.2014, 11:07     Titel:
  Antworten mit Zitat      
Sorry, sollte bei der for-Schleife natürlich heißen:

Code:


Also das er 11 Klassen durchtestet ..
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2014, 11:20     Titel:
  Antworten mit Zitat      
Hallo,

kannst du noch deine Daten oder einen Plot davon zur Verfügung stellen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Help!

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2014, 11:35     Titel:
  Antworten mit Zitat      
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.

Danke schonmal für deine Bemühungen!

SigSimNoise_Silh.fig
 Beschreibung:
Zugehöriger Plot des Silhouettenkoeffizienten

Download
 Dateiname:  SigSimNoise_Silh.fig
 Dateigröße:  2.73 KB
 Heruntergeladen:  371 mal
SigSimNoise.fig
 Beschreibung:
Simulierte Kurven mit Rauschen überlagert

Download
 Dateiname:  SigSimNoise.fig
 Dateigröße:  19.93 KB
 Heruntergeladen:  345 mal
 
Help!

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2014, 09:42     Titel:
  Antworten mit Zitat      
Niemand ne Idee?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.08.2014, 19:44     Titel:
  Antworten mit Zitat      
Hallo,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.