Clustering und Matlab

8

Ich versuche einige Daten zu sammeln, die ich aus dem KDD 1999 Cup-Datensatz habe

Die Ausgabe aus der Datei sieht folgendermaßen aus:

%Vor%

mit 48 tausend verschiedenen Datensätzen in diesem Format. Ich habe die Daten aufgeräumt und den Text entfernt, nur die Zahlen behalten. Die Ausgabe sieht jetzt so aus:

Ich habe eine kommagetrennte Datei in Excel erstellt und als CSV-Datei gespeichert und dann eine Datenquelle aus der CSV-Datei in Matlab erstellt. Ich habe versucht, sie durch die fcm-Toolbox in Matlab auszuführen (findcluster gibt 38 Datentypen aus, die mit 38 erwartet werden) Säulen).

Die Cluster sehen jedoch nicht wie Cluster aus oder akzeptieren und arbeiten nicht so, wie ich es brauche.

Könnte jemand helfen, die Cluster zu finden? Ich bin neu bei Matlab, habe also keine Erfahrung und bin auch neu im Clustering.

Die Methode:

  1. Wählen Sie die Anzahl der Cluster (K)
  2. Zentroide initialisieren (zufällig ausgewählte K-Muster aus dem Datensatz)
  3. Weisen Sie jedes Muster dem Cluster mit dem nächstliegenden Schwerpunkt zu
  4. Berechnen Sie die Mittelwerte jedes Clusters als seinen neuen Schwerpunkt
  5. Wiederholen Sie Schritt 3, bis ein Abbruchkriterium erfüllt ist (kein Muster in einen anderen Cluster verschoben wurde)

Das versuche ich zu erreichen:

Das bekomme ich:

%Vor%     
Garrith Graham 10.10.2011, 16:34
quelle

1 Antwort

11

Da Sie Machine-Learning / Data-Mining noch nicht kennen, sollten Sie solche fortgeschrittenen Probleme nicht angehen. Schließlich wurden die Daten, mit denen Sie arbeiten, in einem Wettbewerb verwendet (KDD Cup'99), also erwarten Sie nicht, dass es einfach ist!

Außerdem waren die Daten für eine Klassifizierungsaufgabe (überwachtes Lernen) gedacht, bei der das Ziel die richtige Klasse vorhersagen soll (schlechte / gute Verbindung). Sie scheinen an Clustering (unüberwachtes Lernen) interessiert zu sein, was im Allgemeinen schwieriger ist.

Diese Art von Datensätzen erfordert viel Vorverarbeitung und intelligente Extraktion von Merkmalen. Die Leute verwenden normalerweise Domänenwissen (Network Intrusion Detection), um bessere Eigenschaften aus den Rohdaten zu erhalten. Die direkte Anwendung einfacher Algorithmen wie K-Means führt im Allgemeinen zu schlechten Ergebnissen.

Zunächst müssen Sie die Attribute auf die gleiche Größe normieren: Wenn Sie die euklidische Distanz als Teil von Schritt 3 in Ihrer Methode berechnen, dominieren die Features mit Werten wie 239 und 486 andere Features mit kleinen Werten wie 0.05 , wodurch das Ergebnis gestört wird.

Ein weiterer wichtiger Punkt ist, dass zu viele Attribute eine schlechte Sache sein können (Fluch der Dimensionalität). Daher sollten Sie sich Techniken zur Merkmalauswahl oder Dimensionalitätsreduktion ansehen.

Schließlich schlage ich vor, dass Sie sich mit einem einfacheren Datensatz vertraut machen ...

    
Amro 11.10.2011, 04:44
quelle