Algorithmus zum Generieren einer numerischen Konzepthierarchie

8

Ich habe ein paar numerische Datensätze, für die ich eine Konzepthierarchie erstellen muss. Im Moment mache ich das manuell, indem ich die Daten (und ein entsprechendes Liniendiagramm) beobachte. Basierend auf meiner Intuition habe ich einige akzeptable Hierarchien erstellt.

Dies scheint eine Aufgabe zu sein, die automatisiert werden kann. Weiß jemand, ob es einen Algorithmus zum Generieren einer Konzepthierarchie für numerische Daten gibt?

Um ein Beispiel zu geben, habe ich den folgenden Datensatz:

%Vor%

alt text http://i40.tinypic.com/fd7xxu.jpg

für die ich die folgende Hierarchie erstellt habe:

  • NIEDRIGSTES (& lt; 1000)
  • NIEDRIG (1000 - 2500)
  • MEDIUM (2501 - 7500)
  • HOCH (7501 - 30000)
  • HÖCHSTE (& gt; 30000)
Christophe Herreman 25.03.2010, 16:54
quelle

6 Antworten

5

Vielleicht brauchen Sie einen Clustering -Algorithmus?

Zitat aus dem Link:

  

Clusteranalyse oder Clustering ist die   Zuordnung einer Reihe von Beobachtungen   in Teilmengen (Clustern genannt), so dass   Beobachtungen im selben Cluster sind   in gewissem Sinne ähnlich. Clustering ist ein   Methode des unbeaufsichtigten Lernens und a   übliche Technik für statistische Daten   Analyse in vielen Bereichen verwendet

    
Eli Bendersky 25.03.2010, 16:57
quelle
4

Jenks Natural Breaks ist ein sehr effizientes Single-Dimension-Clustering-Schema: Ссылка

Wie Kommentare bemerkt haben, ist dies sehr ähnlich zu k-means. Allerdings habe ich festgestellt, dass es noch einfacher zu implementieren ist, vor allem die Variation in der Kartographie von Borden Dent: Ссылка

    
John with waffle 25.03.2010 17:11
quelle
3

Ich denke, Sie suchen nach etwas, das Daten Diskretisierung ähnlich ist, das in AI häufig ist, um kontinuierliche Daten zu konvertieren (oder diskrete Daten mit einer so großen Anzahl von Klassen, dass sie unhandlich sind) in diskrete Klassen.

Ich weiß, dass Weka Fayyad & amp; Iranis MDL-Methode sowie Kononeko MDL-Methode, ich werde sehen, ob ich einige Referenzen ausgraben kann.

    
Dusty 25.03.2010 17:06
quelle
1

Dies ist nur ein eindimensionales Problem, daher kann es eine dynamische Programmierlösung geben. Nehmen Sie an, dass es Sinn macht, die Punkte in sortierter Reihenfolge zu nehmen und dann n-1 Schnitte zu machen, um n Cluster zu erzeugen. Angenommen, Sie können eine Penalty-Funktion f () für jeden Cluster aufschreiben, z. B. die Varianz innerhalb des Clusters oder den Abstand zwischen Min und Max im Cluster. Sie können dann die Summe von f () in jedem Cluster ausgewertet minimieren. Arbeite von einem Punkt zu einem Zeitpunkt, von links nach rechts. Ermitteln Sie an jedem Punkt für 1 .. # clusters - 1 die beste Methode, um die Punkte so weit in so viele Cluster aufzuteilen, und speichern Sie die Kosten für diese Antwort und die Position ihrer äußersten rechten Teilung. Sie können dies für den Punkt P und die Clustergröße c wie folgt ausarbeiten: Betrachten Sie alle möglichen Schnitte links von P. Für jeden Schnitt addieren Sie f () in der Gruppe von Punkten rechts vom Schnitt zu den (gespeicherten) Kosten der besten Lösung für die Clustergröße c-1 an der Stelle unmittelbar links vom Schnitt. Sobald Sie sich ganz nach rechts durchgearbeitet haben, machen Sie noch einmal den gleichen Trick, um die beste Antwort für die Clustergröße c zu finden, und verwenden Sie die gespeicherten Orte der äußersten rechten Spalte, um alle Splits wiederherzustellen, die die beste Antwort liefern.

Dies könnte tatsächlich teurer sein als eine k-means-Variante, hat aber den Vorteil, eine globale beste Antwort (für Ihr gewähltes f () unter diesen Annahmen zu finden).

    
mcdowella 27.03.2010 06:34
quelle
0

Ich habe mich gefragt.

Offensichtlich suchen Sie nach sauberen Pausen. Bevor Sie sich also in komplizierte Algorithmen begeben, können Sie sich vielleicht einen differentiellen Ansatz vorstellen.

%Vor%

Jetzt hängt es von der Anzahl der Pausen ab, die wir suchen, es ist eine Frage der Auswahl:

%Vor%

Ich weiß nicht wie es euch geht, aber es fühlt sich meiner Meinung nach natürlich an, und ihr könnt sogar einen Grenzwertansatz verwenden, der besagt, dass eine Abweichung von weniger als x% keinen Schnitt wert ist.

Zum Beispiel scheint hier 4 categories keinen Sinn zu ergeben.

    
Matthieu M. 26.03.2010 10:40
quelle