2 Stimmen

Wie kann man eine Reihe von Proben anhand eines kontinuierlichen Merkmals klassifizieren?

Ich habe zum Beispiel folgende Tabelle, die einfach eine grobe Verteilung für 20 Personen über ihr Alter ist

          Altersangabe der Person

  • 2 1
  • 5 5
  • 8 2
  • 10 3
  • 15 1
  • 16 2
  • 17 1
  • 20 4
  • 21 1

Dann könnte ich mit demselben Datensatz eine weitere "bessere" Tabelle erstellen.

          Altersangabe der Person

  • 10- 8
  • 10s 7
  • 20+ 5

In der Tat könnte ich mehrere Tabellen erstellen, die verschiedene Kombinationen von Altersgruppen enthalten, indem ich denselben Datensatz verwende.

Jetzt frage ich mich, wie ich die besten Kombinationen finden kann. Die möglichen "Gütefunktionen", mit denen wir messen könnten, ob eine Kombination gut ist oder nicht, könnten sich aus den folgenden drei Prinzipien ergeben:

  • Es sollte weder zu viele noch zu wenige Klassen geben.
  • Die Spannen der Klassen sollten nicht zu sehr variieren.
  • Die Verteilung sollte gleichmäßig genug sein, d. h. die Anzahl der von jeder Klasse abgedeckten Punkte sollte nicht zu sehr variieren.

Da diese Frage eine Situation darstellt, die gerade allgemein genug ist, um eine Art spezifischer Probleme zu beschreiben, sollten einige ausgefeilte Lösungen dafür bereits vorhanden sein. Aber ich habe sie nicht gefunden. Kann mir jemand Vorschläge machen?

Ich habe mir einige Klassifizierungsalgorithmen wie PCA, k-mean oder "Max-Entropie-basierte Algorithmen" angeschaut, aber es scheint, dass sie einfach zu allgemein sind, um dieses spezifische Problem abzudecken, indem sie alle drei oben genannten Prinzipien befolgen.

0voto

Tim Cooper Punkte 9608

Ich würde wie folgt vorgehen:

Konstruieren Sie eine Bewertungsfunktion:

double goodness(double firstThreshold, double bucketWidth, int numBuckets)

die auf der Grundlage Ihrer Grundsätze eine Gütebewertung liefert. Ich würde dann eine Reihe von Parameterkombinationen durchprobieren und die Kombination mit der besten Gütebewertung auswählen. Wenn wir 4-10 Werte für jeden Parameter ausprobieren, wird Brute-Force funktionieren und Ihnen wahrscheinlich schöne runde Zahlen für die Cutoffs liefern. Wenn Sie anspruchsvollere oder schnellere Ergebnisse erzielen wollen, können Sie andere Suchmethoden wie Hill-Climbing, Balkensuche oder simuliertes Glühen ausprobieren, aber ich glaube, das wäre für Ihre Situation zu viel des Guten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X