PDA

View Full Version : [LÖSUNG] - Ergebnis 3.2


huevo
15-05-2007, 18:44
Wenn wir aus iris_1.dat für die Klassen die KoVarianzMatrizen berechnen bekommen wir folgende Zwischenergebnisse:

Klasse = 1:
0.1604 0.1181 0.0241 0.0194
0.1181 0.1358 0.0062 0.0222
0.0241 0.0062 0.0392 0.0066
0.0194 0.0222 0.0066 0.0109

Klasse = 2
0.3003 0.1095 0.1865 0.0520
0.1095 0.1244 0.0886 0.0465
0.1865 0.0886 0.1969 0.0640
0.0520 0.0465 0.0640 0.0426

Klasse = 3
0.5244 0.1215 0.4323 0.0619
0.1215 0.1304 0.0988 0.0604
0.4323 0.0988 0.4175 0.0673
0.0619 0.0604 0.0673 0.0651

Hat von euch jemand auch diese Ergebnisse bekommen?

huevo
16-05-2007, 15:19
Unsere Ergebnisse mit iris_1 als Trainingsset und iris_2 als Testset

Vollständige Kovarianzmatrix für jede Klasse, Richtig %:
97.3333

Kovarianzmatrizen diagonal, Richtig %:
97.3333

Alle Klasse identische Kovarianzmatrizen, Richtig %:
96

Hat wer ähnliches?

THE_ONE
16-05-2007, 18:00
Unsere Ergebnisse:

Fehlerraten:

original: 2.66667
Kovarianzmatrizen mit lauter Nullen außer in der Diagonalen: 2.66667
gleiche Kovarianzmatrizen: 4%

Also haben wir die selben Ergebnisse wie ihr zuvor(huevo)

THE_ONE
16-05-2007, 18:10
Interessant wäre auch zu wissen, warum man das machen könnte. Dass man Elemente einfach auf 0 setzt bzw. warum man die selben Kovarianzmatrizen nimmt. Denn in beiden Fällen verschenkt man doch Information.
:omg:

MFG THE_ONE

daywalker05
17-05-2007, 12:52
Hi!

Ich hab bezüglich dem zweiten Punkt in der Aufgabenstellung ein paar Fragen.

Wie berechnet ihr die Mahalanobis-Distanz? Mit pdist, mahal, oder so ... ?

Und was genau hat es mit diesen identischen Kovarianzmatrizen auf sich?:confused:

buschti
17-05-2007, 13:40
Interessant wäre auch zu wissen, warum man das machen könnte. Dass man Elemente einfach auf 0 setzt bzw. warum man die selben Kovarianzmatrizen nimmt. Denn in beiden Fällen verschenkt man doch Information.
:omg:

MFG THE_ONE

Das sind halt Vereinfachungen, die manchmal auch genügen und gleich gute Ergebnisse liefern können.
Bei identischer Kovarianzmatrix wird halt davon ausgegangen, daß die Verteilung und Abhängigkeit der Daten nicht von der Klasse abhängen.
Beim Setzen der Diagonalelemente auf Null werden die Kovarianzen der Merkmale außer Acht gelassen.

LG
Sebastian (EFME-Tutor)

buschti
17-05-2007, 13:44
Hi!

Ich hab bezüglich dem zweiten Punkt in der Aufgabenstellung ein paar Fragen.

Wie berechnet ihr die Mahalanobis-Distanz? Mit pdist, mahal, oder so ... ?


Einfach mit der Formel aus dem Skriptum. Dazu bruacht man den Klassen-Mittelwertvektor und die Kovarianzmatrix.


Und was genau hat es mit diesen identischen Kovarianzmatrizen auf sich?:confused:


Du berechnest die die wie in der Angabe beschrieben und nimmst beim Klassifizieren immer diese, egal mit welchem Mittelwertvektor Du das Sample vergleichst.

LG
Sebastian (EFME-Tutor)

Spite82
17-05-2007, 13:54
Scheint ich check nicht wie ich die Covarianz-Matrix berechne^^, kann mir vielleicht mal wer sagen wie das funzt, bzw. wie groß bei euch das P(x,y) ist (bei mir wärs ja 1/(25*25))....
Bzw. was überhaupt das x und y sind??

Ich habs mal so (is aber anscheinend falsch, weil ich bekomme andere Werte bei der Covarianz-Matrix):

Berechne Mü (Mittelwert) der einzelnen Spalten jeder Klasse, also alle Werte zusammen/Anzahl der Werte in der Klasse. Ok das stimmt glaube ich ;)

Dann geh ich alle Kombinationen aus den 4 Mü's durch?? So hab ich das jetzt, weil ich keine Ahnung habe was sonst das x und y sein soll, also ich hab 4 Mü (für jede Spalte eins), dann sag ich: (x in spalte1-Mü1)*(y in spalte1*mü1)*P(x,y) oder??
Also gehe alle Zeilen durch und addiere immer den errechneten Wert von oben dazu?

Oder ist das kompletter Schwachsinn?
Bitte um Hilfe

Lg
Spite

edit:
d.h.
wenn mir jemand sagen kann was hier die x,y-Werte sind, wär ich sehr froh ;)

Spite82
17-05-2007, 14:36
So hab einen kleinen Fehler gefunden in meinem Code, aber die Werte sind noch immer "nicht ganz" richtig.....
Aber die Werte sind sehr ähnlich, 1.Klasse zB

Mü:
5.0280 3.4800 1.4600 0.2480

Cov:
0.1540 0.1134 0.0231 0.0187
0.1134 0.1304 0.0060 0.0214
0.0231 0.0060 0.0376 0.0063
0.0187 0.0214 0.0063 0.0105

Woran könnts liegen?? (hab jetzt die Anzahl der Elemente in der aktuellen Klasse für die Wahrscheinlichkeit genommen, also 1/25)

Lg
Spite

edit:
Wenn ich aber für P nicht 1/25 nehme, sonder 1/(25-1) passts, wiedso nehmt ihr jeweils eins weniger?

buschti
17-05-2007, 14:59
Scheint ich check nicht wie ich die Covarianz-Matrix berechne^^, kann mir vielleicht mal wer sagen wie das funzt, bzw. wie groß bei euch das P(x,y) ist (bei mir wärs ja 1/(25*25))....
Bzw. was überhaupt das x und y sind??


Sorry, weiß jetzt nicht, was Du da meinst. Hab das Vorlesungsskriptum nicht zur Hand. Meinst Du vielleicht die einzelne Kovarianz zweier stochastischer Größen, nicht die Kovarianz-Matrix?


Ich habs mal so (is aber anscheinend falsch, weil ich bekomme andere Werte bei der Covarianz-Matrix):

Berechne Mü (Mittelwert) der einzelnen Spalten jeder Klasse, also alle Werte zusammen/Anzahl der Werte in der Klasse. Ok das stimmt glaube ich ;)


Du brauchst den Mittelwert aller Samples. Da wir 4 Features haben, ist das bei uns ein Vektor mit 4 Elementen.


Dann geh ich alle Kombinationen aus den 4 Mü's durch?? So hab ich das jetzt, weil ich keine Ahnung habe was sonst das x und y sein soll, also ich hab 4 Mü (für jede Spalte eins), dann sag ich: (x in spalte1-Mü1)*(y in spalte1*mü1)*P(x,y) oder??
Also gehe alle Zeilen durch und addiere immer den errechneten Wert von oben dazu?


Du ziehst vom aktuellen Sample den Mittelwertvektor ab, multiplizierst diesen Vektor mit seiner transponierten (oder umgekehrt, je nachdem), dann bekommst Du eine 4x4 Matrix. Diese 4x4 Matrizen summierst Du auf für alle Samples und dividierst das Ergebnis am Schluß noch durch die Anzahl der Samples - 1.


LG
Sebastian (EFME-Tutor)

buschti
17-05-2007, 15:01
Wenn ich aber für P nicht 1/25 nehme, sonder 1/(25-1) passts, wiedso nehmt ihr jeweils eins weniger?

Man muß 25-1 nehmen, um die Erwartungstreue des Schätzers zu gewährleisten.

LG
Sebastian (EFME-Tutor)

Spite82
17-05-2007, 15:59
Ja Danke für deine Antworten!!
Habs derweil e schon geschafft ;)
Habs jetzt noch umgeändert, sodass die Vektoren gleich in "einem Abwasch" berechnet werden, nicht so wie ichs vorher hatte mit 2 Schleifen....

Danke und Lg
Spite

Spite82
17-05-2007, 16:34
Gut, also jetzt sollte alle passen, habe die Mittelwertvektoren und die Kovarianzmatrizen richtig ;)

Noch eine Frage zur Formel im Skriptum:

Wenn ich jetzt die Distanzen ausrechnen will, nehme ich die Werte aus der 2. Dat-Datei (zB x), nehme aber die mü und Kovarianz-Werte vom Trainigsset?? Oder wie??

Lg
Spite

buschti
17-05-2007, 16:41
Gut, also jetzt sollte alle passen, habe die Mittelwertvektoren und die Kovarianzmatrizen richtig ;)

Noch eine Frage zur Formel im Skriptum:

Wenn ich jetzt die Distanzen ausrechnen will, nehme ich die Werte aus der 2. Dat-Datei (zB x), nehme aber die mü und Kovarianz-Werte vom Trainigsset?? Oder wie??


Ja genau.

Spite82
17-05-2007, 19:17
Ja genau.
Optimal, werds mal einbaun ;)
Noch eine Frage, in der Formel, das p, ist das die Anzahl der Daten oder was ist das?

Lg
Spite

edit:
oder ist p bei uns 4, weil wir ein Covarianz-Matrix haben, die 4x4 ist?

Spite82
17-05-2007, 20:49
Also gut, bei mir kommt nur Schwachsinn raus ;)
Die einzelnen Datensätze werden fast immer zur 3.Klasse gezählt....
Bin auch draufgekommen, dass meine 3.Covarianzmatrix auch leicht anders aussieht wie die 3. ganz oben..... komisch:

0.5238 0.1196 0.4319 0.0616
0.1196 0.1247 0.0979 0.0595
0.4319 0.0979 0.4174 0.0672
0.0616 0.0595 0.0672 0.0649Kanns daran liegen? Aber die Berechnung müsste stimmen....

Allgemein sind die det() auch sehr klein, stimmt das? irgendwas 1.6e-6 oder so beim ersten...

Hab die Formel jetzt shcon sehr oft durchgesehen, und finden den Fehler nicht.... :(

Lg
Spite

Spite82
17-05-2007, 20:59
Mal eine Frage, kanns sein, das ich die Maximale Distanz brauche, und dann stimmts?? Weil wenn ich die Maximale-Distanz hernehme, passts.....?????!!!!

Lg
Spite

Spite82
17-05-2007, 21:04
Naja, wenn ichs teste habe ich eine Recognition-Rate von:

Vollständige Kovarianzmatrix für jede Klasse, Richtig %:
97.3333

Kovarianzmatrizen diagonal, Richtig %:
96

Alle Klasse identische Kovarianzmatrizen, Richtig %:
96

was eventuell an meiner etwas anderen Cov-Matrix beim 3. liegen kann ;)

Ansonsten ok, oder?

Lg
Spite

Spite82
17-05-2007, 21:40
Edit:
Problem gelöst ;)
Natürlich minimale Distanz, nur hab ich die ganze Formel berechnet ;), naja egal jetzt passt zumindest ;)

Lg
Spite

lOOP
19-05-2007, 20:59
muss man die covarianzmatrizzen händisch oder mit dem Matlab befehl rechnen?

buschti
20-05-2007, 15:32
muss man die covarianzmatrizzen händisch oder mit dem Matlab befehl rechnen?

Ihr könnt schon den Matlab-Befehl verwenden, allerdings müßt Ihr für die identische Kovarianzmatrix die Kovarianzmatrizen 'händisch' ausrechnen, also könnt Ihr gleich auch alles händisch machen.
Ich würde den Matlab-Befehl verwenden, um Eure Lösung auf Richtigkeit zu überprüfen.

LG
Sebastian (EFME-Tutor)

narcotizer
20-05-2007, 18:38
irgendwie bekomm ich die formel aus dem scriptum nicht so hin dass ich richtige ergebnisse bekomme. stimmt diese formel von seite 99 oder muss man hier eine andere verwenden... ?? komm nicht weiter...
bitte um hilfe...

Sir Bobolo
20-05-2007, 19:16
bei mir schaut alles eigentlich ganz gut aus nur die formel für die m-distanz wirft dauernd den fehler dass die matrixdimensionen zusammenpassen müssen.

von1Dist(I)=(1/((2*pi)^(4/2)*det(C1)^(1/2))^((-1/2)*(TSet(I,:)-mue1)'*det(C1)^(-1)*(TSet(I,:)-mue1)));

hat wer vielleicht eine idee worauf ich vergessen haben könnte?

narcotizer
20-05-2007, 19:55
wir haben das so gerechnet
du musst das erste TSet(i,: ) - mue1 nicht transponieren dann sollte es an und für sich gehen (bei * gleich viele spalten wie zeilen oder so und der vektor wird ja in matlab (1,1,1,1) dargestellt und nicht
(1
2
3
4)... kommt halt darauf an aber deswegen passt das erste nur den zweiten musst du transponieren

zwisch = Test(i,4) - M1;
Erg1 = exp((zwisch * (inv(Cov1))) * zwisch' * -0.5);
Erg1 = (1 / ((2*pi).^2 .* det(Cov1).^0.5)) .* Erg1;

die rechnung funktioniert aber das ergebnis stimmt nicht...
aber versuch das mal mit deinen werten so angeordnet vielleicht geht es ja bei dir... dann hab ich irgendwo einen tippfehler oder sowas aber ich such schon seit stunden und komm net drauf...

buschti
20-05-2007, 21:01
Achtung, es ist nicht die ganze Formel für die multivariate Normalverteilung zu berechnen. Das brauchen wir hier gar nicht.
Wir wollen nur die Mahalanobis-Distanz. Und dafür braucht man die Kovarianzmatrix.

LG
Sebastian (EFME-Tutor)

Spite82
20-05-2007, 21:31
Ja, das war auch mein Fehler, den ich zuerst gemacht habe :(
Also nur das rechnen, was im Skriptum in der formel d^2(x) steht (gleich unter der anderen Formel), DAS ist nämlich die Distanz....

Lg
Spite

Malyscha
20-05-2007, 21:56
Ich versteh nicht, wie man die Kovarianzmatrix für die 2. Vereinfachung berechnet, also wo sie für alle gleich ist. Hab da irgendwie Probleme mit der englischen Anleitung... Wär echt nett, wenn mir jemand erklären könnte, wie man diese Matrix berechnet!

Spite82
20-05-2007, 22:11
Also ich habs so (eventuell umstandlich :) ):
Alle normal berechnen - elementweise zusammenrechnen und durch 3 dividieren (also sozusagen eine "Mean-Covarianz-Matrix" bilden) und die Werte dann in alle Matrizen kopieren, geht aber sicher auch anders....

Lg
Spite

Malyscha
20-05-2007, 23:22
Also einfach die Mittelwert-Matrix aus den 3 Matrizen bilden?! So hört sich das endlich mal verständlich an :o danke!

lOOP
20-05-2007, 23:25
hab das ein bisschen anders gerechnet anstatt die Kovarianz für eine Klasse durch N-1 in unserem fall 24 zu dividieren hab ich einfach weiter summiert und danach einfach durch 74 dividiert. Ist denke ich noch einfacher.

brnas
21-05-2007, 00:58
Das sind halt Vereinfachungen, die manchmal auch genügen und gleich gute Ergebnisse liefern können.
Bei identischer Kovarianzmatrix wird halt davon ausgegangen, daß die Verteilung und Abhängigkeit der Daten nicht von der Klasse abhängen.
Beim Setzen der Diagonalelemente auf Null werden die Kovarianzen der Merkmale außer Acht gelassen.

LG
Sebastian (EFME-Tutor)

Alle Elemente AUSSER die in der Diagonalen werden auf Null gesetzt oder?
Btw. was liefert uns diese Kovarianzmatrix? Ich kann mir darunter leider herzlich wenig vorstellen. ich weiß nur das die diagonale genau die varianzen von den elementen beinhaltet. aber warum das dann das selbe ergebnis liefert?! keine ahnung..

buschti
21-05-2007, 11:26
hab das ein bisschen anders gerechnet anstatt die Kovarianz für eine Klasse durch N-1 in unserem fall 24 zu dividieren hab ich einfach weiter summiert und danach einfach durch 74 dividiert. Ist denke ich noch einfacher.

So ist es gedacht. Wichtig ist, daß man dann alle 3 Mittelwertvektoren für die Berechnung heranzieht, und nicht einen einzigen Mittelwertvektor aus allen 75 Samples.

LG
Sebastian (EFME-Tutor)

buschti
21-05-2007, 11:33
Alle Elemente AUSSER die in der Diagonalen werden auf Null gesetzt oder?

Stimmt natürlich, sorry


Btw. was liefert uns diese Kovarianzmatrix? Ich kann mir darunter leider herzlich wenig vorstellen. ich weiß nur das die diagonale genau die varianzen von den elementen beinhaltet. aber warum das dann das selbe ergebnis liefert?! keine ahnung..


Das selbe Ergebnis liefern sie ja nicht direkt, die Fehlerraten vom Classifier verschlechtern sich halt nicht. Es scheint, als ob die Abhängigkeiten der Features voneinander für diese Daten nicht von entscheidender Bedeutung sind.

LG
Sebastian (EFME-Tutor)

ksi
21-05-2007, 15:05
hab das ein bisschen anders gerechnet anstatt die Kovarianz für eine Klasse durch N-1 in unserem fall 24 zu dividieren hab ich einfach weiter summiert und danach einfach durch 74 dividiert. Ist denke ich noch einfacher.
So ist es gedacht.

Aber kann ich dann nicht auch einfach die Werte von cov nehmen, die mit 24 multiplizieren und anschließend durch 74 dividieren? müsste doch das selbe rauskommen?!

buschti
21-05-2007, 15:27
Aber kann ich dann nicht auch einfach die Werte von cov nehmen, die mit 24 multiplizieren und anschließend durch 74 dividieren? müsste doch das selbe rauskommen?!

jepp, da geht natürlich auch...

LG
Sebastian (EFME-Tutor)