View Full Version : [LÖSUNG] - Ergebnis 3.2
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?
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?
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)
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:
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)
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)
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 ;)
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?
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)
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)
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
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
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.
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?
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
Mal eine Frage, kanns sein, das ich die Maximale Distanz brauche, und dann stimmts?? Weil wenn ich die Maximale-Distanz hernehme, passts.....?????!!!!
Lg
Spite
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
Edit:
Problem gelöst ;)
Natürlich minimale Distanz, nur hab ich die ganze Formel berechnet ;), naja egal jetzt passt zumindest ;)
Lg
Spite
muss man die covarianzmatrizzen händisch oder mit dem Matlab befehl rechnen?
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...
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)
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!
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!
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.
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..
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)
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)
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?!
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)
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.