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

Ermittlung der optimalen Clusterzahl!

 

BigUpp23
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2011, 00:33     Titel: Ermittlung der optimalen Clusterzahl!
  Antworten mit Zitat      
Hallo Leute,

ich hoffe, ihr könnt mir bei meinem Problem helfen.

Ich soll eine Clusteranalyse für meinen Datensatz 'annual_mean' durchführen. Er besteht aus aus einer Matrix (53 Jahre x 447 Wetterstationen)!!!

Zunächst berechne ich die Distanzen etc.:

Code:

y=pdist(annual_mean);
z=linkage(y,'average');
 


So weit so gut......

Mit Hilfe des Befehls 'dendrogram' kann ich nun eine clusterung mit
n clustern durchführen (maximal 53 Cluster):
Code:

[H,T]=dendrogram(z,n);
 


In 'T' wird die Verteilung der Jahre je Cluster ausgegeben.
Bei zwei Clustern würden bspw. 30 der Zeiteinheiten in Cluster 1 stecken und 23 in Cluster 2.


Nun aber zu meinem Problem. Wie berechne ich die log likelihood? Diese benötige ich, um die optimale Clusterzahl zu errechnen!


Die Formel der log likelihood lautet wie folgt:

Hierbei steht s für sigma!

P(u_{j} | \vec{c} ,\vec{s^{2}}) =\frac{1}{\sqrt{2\pi\cdot s_{k}^{2} }}  e^{- \frac{1}{2} \frac{|| u_{j} - c_{k}  ||^{2}}{s_{k}^{2}} }

Diese likelihood muss dann nur noch logarithmiert werden!

Mein bisheriger Lösungsansatz sieht wie folgt aus:

Code:

logl=0;
for j=1:K
    dj=annual_mean(find(T==j),:);
    % mu=Mittelpunkt
    mu=mean(dj);
    % sigma2=Varianz
    sigma2=var(dj);
    for k=1:size(dj)
        logl=logl+(dj-mu)*sigma2*(dj-mu)-(1/2)*log(2*pi)-(1/2)*log(det(sigma2));
       
    end;
   
end;

Dieser Quellcode funktioniert jedoch leider nicht so richtig.
Wie bekomme ich es hin, dass der Mittelpunkt und die Varianz für den gesamten Cluster ermittelt wird? Hier nimmt er ja jede Spalte von 'dj' einzeln. Daher bekomme ich mehrere Werte.
Außerdem gibt es bei der Berechung von logl Probleme mit den Dimensionen von logl,mu und sigma2!


Danke schon mal für eure Hilfe =)
 
Private Nachricht senden Benutzer-Profile anzeigen


BigUpp23
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 14:33     Titel:
  Antworten mit Zitat      
Kann hier denn keiner etwas dazu sagen??? =(
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.08.2011, 14:54     Titel:
  Antworten mit Zitat      
Hallo BigUpp23,

Das Problem liegt wohl in der Formulierung:
"Funktioniert nicht so richtig" und "es gibt Probleme" enthalten keine Details. Eine genaue beschreibung des Problems und eine Kopie der Fehlermeldungen sind immer besser. Hier gibt es zwar viele Leute, die engagiert Probleme lösen, aber das Benennen des genauen Problems wird doch lieber den Fragenden überlassen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 16:04     Titel:
  Antworten mit Zitat      
Hallo BigUpp23,

willst du nur die Likelihood_funktion logarithmieren? Dieser Link müsste dir helfen:

http://www.weibull.com/AccelTestWeb....._parameter_estimation.htm

Wenn nicht schreib noch mal!
 
BigUpp23
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 16:55     Titel:
  Antworten mit Zitat      
Hey, erstmal sorry für die eher unpräzise Schilderung meines Problems.

Wie ich die Log Likelihood bekomme weiß ich eigentlich. Ich habe nur Probleme bei der Umsetzung mit Matlab.

Wenn ich meinen Quellcode nun durchlaufen lasse, bekomme ich folgenden Fehler:
'Error using ==> minus'
'Inner matrix dimensions must agree'

Dies leuchtet mir ja auch ein, denn...

Bei einer Zweiclusterlösung
Code:
[H,T]=dendrogram(z,2);
befinden sich im ersten Cluster 30 Zeiteinheiten (Bspw. Jahr 1953, 1984, 1979, ...) und im zweiten 23 Zeiteinheiten (bspw. Jahr 1956, 1973, 1999, ...).


Jetzt nehme ich den ersten Cluster (Beachte T=Verteilung der Cluster)
Code:
dj=annual_mean(find(T==1),:);

--> Hierfür bekomme ich jetzt eine Matrix (dj) mit 30 Jahre x 447 Stationen. Also alle Zeiteinheiten, die sich im ersten Cluster befinden.

Code:

--> Hierfür bekomme ich einen Vektor (mu) mit 1 x 447. Allerdings befinden sich ja alle 30 Jahre in dem ersten Cluster. Daher bräuchte ich hier den Median der gesamten Matrix, also nur einen Wert und nicht 447!

Code:
sigma2=var(dj);

--> Genauso verhält es sich mit der Varianz (sigma)!


Aber auch, wenn ich für den Mittelpunkt und die Varianz jeweils nur einen Wert hätte, so würde doch wieder der gleiche Fehler auftauchen!? Für 'dj' habe ich ja noch immer eine 30 x 447 Matrix.


Ich hoffe, ich konnte euch mein Problem gut genug schildern!?
Private Nachricht senden Benutzer-Profile anzeigen
 
BigUpp23
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2011, 19:20     Titel:
  Antworten mit Zitat      
Hat denn hier keiner einen Lösungsansatz???
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.