Seite 1 von 1

Clusteranalyse selbst programmieren

Verfasst: Mo Mai 20, 2019 7:10 pm
von habicht-44
Hallo,

im Rahmen einer IT-Weiterbildung soll ich im Kurs Business Intelligence eine Clusteranalyse mit R durchführen.
Es dürfen aber keine Pakete oder Befehle wie "hclust" verwendet werden, sondern Abstandsmatrix, Fusionierungsalgorithmus etc. sollen selbst per Hand programmiert werden.

Jetzt habe ich aber höchstens Anfängerkenntnisse in der Programmierung und hänge ziemlich in der Luft. Könnt Ihr mir in diesem Zusammenhang passende Bücher empfehlen? Über Tipps wie ich hier grundlegend vorgehen müsste wäre ich auch sehr dankbar.

Vielen Dank im Voraus
Beste Grüße

Re: Clusteranalyse selbst programmieren

Verfasst: Mo Mai 20, 2019 10:10 pm
von student
Hallo,

zur Distanz habe ich hier mal etwas gemacht und hoffe es hilft ein wenig weiter....

Re: Clusteranalyse selbst programmieren

Verfasst: Mo Mai 20, 2019 10:21 pm
von bigben
Hallo Habicht,

das ist eine sehr wage Themenbeschreibung und die vollständige Antwortet überschreitet das, was in einen Forumspost passt, gewaltig. Clusteranalyse ist ein wirklich weites Feld. Hast du hclust erwähnt, weil es eine hierarchische Clusteranalyse sein soll, oder tut es auch eine einfachere Variante von Clusteranalyse? kmeans kann man in einem einzigen Youtubevideo gut erklären. https://www.youtube.com/watch?v=4b5d3muPQmA

Die Programmierfrage ist zu unspezifisch. Woher sollen wir wissen, was " höchstens Anfängerkenntnisse in der Programmierung" heißt?

Die Antwort, dass Du ein Buch brauchst, in dem Dein Clusterverfahren beschrieben wird und eines, in dem die Programmierung mir R beschrieben wird, ist Dir bestimmt zu platt, aber sehr viel mehr kann man so einfach noch nicht sagen.

LG,
Bernhard

Re: Clusteranalyse selbst programmieren

Verfasst: Di Mai 21, 2019 2:19 am
von EDi
aber keine Pakete oder Befehle wie "hclust" verwendet werden
wo ist denn hier die Grenze? Nur "base" pakete, aber nichts was darüber hinaus geht (z.b. "stats").

sondern Abstandsmatrix, Fusionierungsalgorithmus etc. sollen selbst per Hand programmiert werden.
Was hast du denn schon probiert bzw. was habt ihr denn so gelernt?
Distanzmatrix ist der erste Schritt für Hierachisches Clustering - damit würde ich anfangen.

Hier eine Beispielmatrix zum anfangen:

Code: Alles auswählen

set.seed(1234)
mat <- matrix(runif(12), nrow = 3)
mat
Die Lösung der euklidischen Distanz (die ja unsinnger Weise nicht verwendet werden darf) ist:

Code: Alles auswählen

dist(mat)
Das ist dein Ziel das du zuerst erreichen musst.
Formel für die Distanz zwischen zwei Vektoren ist einfach, hier ein Starter:

Code: Alles auswählen

euc.dist <- function(x1, x2) sqrt(sum((x1 - x2)^2))
euc.dist(c(1,2,3), c(4,6,7))
Jetzt nurnoch das über all kombinationen der verktoren laufen lassen und in eine Dreiecksmatrix packen und du hat die Distanzmatrix.

hclust() nachbauen ist dann der nächste Schritt...


Buchempfehlung? Ich mag das hier für multivariate Statistik: https://www.elsevier.com/books/numerica ... 44-89249-2
Gut, Ökologie & Business Intelligence klingen zwar unterschiedlich, aber die Methoden überlappen sich aber sehr....

Das hier ist auch sehr nett: http://www.multiresolutions.com/mda-sw/M2/holdall.pdf. Vorallem, wenn mankeine Pakete oder Befehle wie "hclust" verwendet werden soll, gibt das implementierungs Ideen.

Re: Clusteranalyse selbst programmieren

Verfasst: Di Mai 21, 2019 9:35 pm
von habicht-44
Vielen Dank für eure Antworte und die zusätzlichen Code-Beispiele.
Ich schaue mir die Buchempfehlungen auf jeden Fall genauer an und versuche den Code nachzuvollziehen.

Es soll eine hierarchische Clusteranalyse werden.
Wo die Grenze des Erlaubten ist, weiß ich auch nicht genau.
Dies ist meine erste Berührung mit R.
Allerdings soll die Aufgabe laut des Professors auch für Neueinsteiger zu lösen sein.

Hier eine Ausschnitt aus dem E-Mail-Verkehr mit dem Professor zur Aufgabenstellung:

"Daher ist eine Methode wie hclust, welche das Clustering
einfach alleine vollständig macht, nicht zulässig. Sie sollen nicht
zeigen, dass Sie ein Werkzeug nutzen können, sondern dass Sie selbst
ein Problem mit R umsetzen können. Sie programmieren die
Clustereinteiung, die Abstandsberechnung usw."
oder auch
."...wie man eine Funktion wie dist() selbst programmiert, ist Teil der Aufgabe."

Die Vorgehensweise habe ich verstanden, jetzt benötige ich nur noch die richtige Literatur, in welcher eben kein hclust und dist() verwendet wird, sondern das per Hand programmiert wird.