hauptkomponentenanalyse (pca) dmath fragen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
laz78
Beiträge: 9
Registriert: Mi 26. Apr 2017, 21:44

hauptkomponentenanalyse (pca) dmath fragen

Beitrag von laz78 »

vorab zur info: ich habe lange gebraucht bis ich die pca halbwegs verstanden habe. habe nicht studiert, deswegen mangelt es teilweise an grundlagenwissen und dem verständnis für bestimmte begriffe und/oder formeln. wenn man mir das vereinfacht erklärt oder mir quellcode zeigt, verstehe ich aber was da passiert (meistens) :D ... nach langer suche habe ich nun vor einigen tagen die unit dmath(version 090) gefunden und darin ist ein (hoffentlich) vollständiges beispiel mit den berechnungen einer pca.

http://wiki.freepascal.org/DMath

https://sourceforge.net/projects/dmath/

ich beziehe mich auf die https://sourceforge.net/p/dmath/code/HEAD/tree/demo/console/curfit/pcatest.pas

dazu habe ich einige fragen:

1.) hier wird die correlation matrix (R) aus der variance-covariance matrix (V) berechnet, in zeile 100 und 103. ist das korrekt so? hab ich so noch in keinem anderen beispiel gesehen, da wurde immer entweder correlation oder covariance berechnet?

2.) wenn ich es richtig verstanden hab nimmt man die correlation bei inputs die bereits normalisiert sind, die covariance wenn die inputs verschiedene ranges aufweisen, ist das korrekt?
meine inputs sind bereits aufbereit und haben die range - 0.9 <> + 0.9, somit sollte die im beispiel verwendete correlation matrix für mich ok sein oder?

3.) hier wird standardisiert

Code: Alles auswählen

ScaleVar(XX, 1, N, Nvar, M, S, Z); // in zeile 115

("Scales a set of variables by subtracting means and dividing by SD's"), die matrix der skalierten daten liegt dann in (Z). aber (Z) fließt überhaupt nicht in die PCA ein???

Code: Alles auswählen

PCA(R, Nvar, Lambda, C, Rc); // in zeile 119

wie man sehen kann, wird die PCA mit der correlation matrix (R) gemacht, (Z) wandert dann in

Code: Alles auswählen

PrinFac(Z, 1, N, Nvar, C, F); // zeile 128

dort werden dann mittels der eigenvectoren (C) aus der PCA die "principal factors" berechnet. was ich hier nicht verstehe, es werden die inputdaten mittels mean/std standardisiert, diese "umgehen die pca" und werden erst dann mit den eigenvectoren aus der pca verrechnet?

ist das richtig so? wendet der ersteller hier die sogenannte mittelwertkorrektur an ?

4.) "Bekanntlich bleibt die Kovarianzmatrix unveraendert, wenn die Daten nur verschoben werden, d.h. die Eigenwerte und Eigenvektoren aendern sich nicht." >>> ist das korrekt angewendet hier?

vielen lieben dank an alle die sich zeit nehmen :wink:

Code: Alles auswählen

 ******************************************************************
 // http://www.statoek.wiso.uni-goettingen. ... mvsec4.pdf
 ******************************************************************
 // 4.3   Weiteres zur Hauptkomponentenanalyse
 ******************************************************************
 // Mittelwertkorrektur: Bisher haben wir die Hauptkomponentenanalyse auf die Ursprungsdaten angewendet.
 // Das bedeutet auch, dass die zugrunde liegenden Zufallsvariablen einen  von  Null verschiedenen
 // Erwartungswertvektor haben. Damit haben auch die Hauptkomponenten eine von Null verschiedene Erwartung.
 ******************************************************************
 // Es ist zweckmaessig den Erwartungswertvektor (mean) abzuziehen.
 // Die Daten werden also zunaechst verschoben, bevor die Transformation in die Hauptkomponenten durchgefuehrt wird.
 ********************************************************

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: hauptkomponentenanalyse (pca) dmath fragen

Beitrag von wp_xyz »

Ich kann dir hier nicht wirklich helfen, weil ich mit pca selbst keine eigene Erfahrung habe. Aber hast du schon daran gedacht, einmal den Autor direkt anzuschreiben? Seine E-Mail-Adresse steht unten auf https://www.unilim.fr/pages_perso/jean.debord/index.htm. Es gibt auch eine Mailing-List (https://groups.yahoo.com/neo/groups/tpmathlib/info), die aber wenig Aktivität zeigt.

Hast du Kapitel 18.2 des Manuals gelesen?

laz78
Beiträge: 9
Registriert: Mi 26. Apr 2017, 21:44

Re: hauptkomponentenanalyse (pca) dmath fragen

Beitrag von laz78 »

ja die mailing list ist seit 2015 inaktiv und der autor selbst scheint seit vielen jahren nichts mehr dran gemacht zu haben. der grund warum ich hier frage ist, es wäre super wenn ich jemanden finde der sich evtl. auch mit dem thema oder evtl. sogar dieser unit oder überhaupt pca allgemein beschäftigt und mit dem ich auf deutsch sprechen kann. das thema ist schon schwierig genug und leider gibts in diesem bereich viele unklare formulierungen, begriffsverwechslungen, falsche bezeichnungen, fehlerhafte vorgehensweisen. ich will ja wissen ob der autor hier alles richtig implementiert hat, ihn selbst zu fragen wäre da evtl. unvorteilhaft? :wink:

18.2 bis 18.3 waren eine goldgrube für mich, es sind aber auch so ziemlich die einzigen infos über die pca die sich in der gesamten doku finden lassen oder? ich war darüber schon glücklich :D

glücklicherweise konnte ich die berechnungen heute komplett verifizieren, ich hatte da noch eine youtube video über eine pca, die nette dame hatte ihre inputdaten zur verfügung gestellt und ich habe diese inputs in meine pca geladen. dann habe ich meine ergebnisse mit ihren im youtube video vergleichen und es stimmt zu 100%. da die youtuberin eine dritt-software für die pca verwendet (die nichts mit dmath/lazarus zu tun hat) gehe ich davon aus das alle berechnungen korrekt sind.

https://www.youtube.com/watch?v=f9mZ8dSrVJA der link zu ihrem csv input file ist in den kommentaren darunter.

die berechnungen stimmen also, damit wäre 1.) beantwortet. mal gucken, vielleicht findet sich ja noch jemand der sich mit dem thema befaßt ?

lg, schönes wochenende und danke für die links :wink:

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: hauptkomponentenanalyse (pca) dmath fragen

Beitrag von wp_xyz »

Weil ich selbst etwas über PCA erfahren wollte, bin ich auf dieses relativ verständliche Tutorial gestoßen: http://www.cs.otago.ac.nz/cosc453/stude ... onents.pdf. Benötigt natürlich auch etwas Mathematik, bleibt aber, wenn ich mich recht erinnere, auf Gymnasialniveau.

laz78
Beiträge: 9
Registriert: Mi 26. Apr 2017, 21:44

Re: hauptkomponentenanalyse (pca) dmath fragen

Beitrag von laz78 »

guter link, danke wp_xyz :wink:

wenns dich interessiert halte ich mit einer noch einfacheren erklärung dagegen :D allerdings fehlt hier komplett die berechnung, aber super erklärt....

http://www.chemgapedia.de/vsengine/vlu/vsc/de/ch/13/vlu/daten/multivariate_datenanalyse_sensor/hauptkomponentenanalyse.vlu.html

komischerweise, seit ich die dmath gefunden habe und dadurch den einstieg ins pca thema fliegen mir die informationen/formeln die ich vorher mühsam suchen musste nur noch zu. ich weiss jetzt den ablauf, kenne die begriffe und zack auf einmal wirds heller :wink:

ich kann dir die dmath zum testen einer pca nur empfehlen, das beispiel pcatest.pas hab ich als einstieg genutzt und die ergebnisse wie gesagt mit dem youtube video + dessen inputs exakt nachstellen können.

darin sind alle nötigen schritte komplett enthalten.

Antworten