Kategorisierungs- / Segmentierungstechniken

9

Lassen Sie mich zunächst sagen, dass ich hier etwas überfordert bin. Wenn diese Frage also neu formuliert oder als Duplikat geschlossen werden muss, lassen Sie es mich bitte wissen. Es kann einfach sein, dass ich nicht das richtige Vokabular habe, um meine Frage auszudrücken.

Ich arbeite an einer Bildverarbeitungsaufgabe, bei der ich Merkmale in einem Bild identifiziere und sie dann anhand ihrer Eigenschaften klassifiziere, einschließlich Form, Größe, Dunkelheit usw. Ich bin ziemlich erfahren mit dem Bildverarbeitungsteil davon, aber denke nach Ich könnte die Methoden verbessern, die ich zur Klassifizierung der Merkmale verwende.

Im Moment setze ich Schwellenwerte für jeden der gemessenen Parameter und klassifiziere Features dann nach einer einfachen Logik, basierend darauf, welche Schwellenwerte das Feature überschritten hat. Beispiel: (Die tatsächlichen Eigenschaften und Gruppierungen sind komplexer, aber ich versuche, irrelevante Teile meines Projekts für diese Frage zu vereinfachen.) Angenommen, ich gruppiere Features in die Gruppen "Big and Dark", "Big and Light". und Klein". Dann befindet sich ein Merkmal in " Groß und Dunkel" iff (Größe ( A )> Größenschwelle) & (Dunkelheit ( A )> Dunkelschwelle).AAA

Das Ziel ist, dass die Klassifizierung mit der Klassifizierung eines Menschen auf Expertenebene übereinstimmt, sodass ich die Schwellenwerte festlegen kann, um die beste Übereinstimmung zwischen den von Mensch und Computer auf einem Testsatz vorgenommenen Gruppierungen zu erzielen, und dann hoffe, dass die Klassifizierung funktioniert gut mit neuen Daten.

Dies funktioniert bereits ziemlich gut, aber ich sehe einen bestimmten Fehlermodus, der meiner Meinung nach behoben werden kann. Angenommen, Feature gehört bekanntermaßen zu "Big and Dark". Der Mensch klassifizierte es auf diese Weise, weil es, obwohl es gerade noch groß genug war, sehr, sehr dunkel war, was den Mangel an "Größe" etwas wettmachte. Mein Algorithmus würde diese Funktion nicht richtig klassifizieren, da die Klassifizierung auf einer starren binären Logik basiert und das Überschreiten aller Schwellenwerte erfordert.A

Ich möchte diesen Fehler verbessern, indem mein Algorithmus den vom Menschen geleiteten Prozess besser nachahmt, bei dem ein Mangel an einem Parameter durch eine Fülle eines anderen ausgeglichen werden kann. Zu diesem Zweck möchte ich jede der Basiseigenschaften meiner Features in eine Art Punktzahl umwandeln, die ein Prädiktor für die Gruppe ist, zu der das Feature gehört. Ich habe über viele Möglichkeiten nachgedacht, aber es handelt sich meistens um Ad-hoc-Ideen, basierend auf meinem Hintergrund in Vektorrechnung und Physik. Ich habe beispielsweise in Betracht gezogen, jedes Merkmal als Vektor im ND-Raum der Merkmalseigenschaften zu behandeln und die Projektion jedes Merkmals entlang bestimmter Vektoren zu berechnen, von denen jeder den Grad messen würde, zu dem ein Merkmal in die Gruppe gehört.

Ich bin mir sicher, dass es eine strengere und besser etablierte Technik gibt, um solche Dinge zu tun, aber mein Hintergrund in der statistischen Analyse ist relativ schwach, daher suche ich nach einem Schub in die richtige Richtung. Sogar der Name einer Technik oder ein Link zu einem Lehrbuch wäre hilfreich.

TL; DR: Welche Techniken sind nützlich, um Objekte anhand einer großen Anzahl beschreibender Parameter zu klassifizieren?

Colin K.
quelle
@Colin Es wäre schön, sich die Bilder anzuschauen. Sie haben Ihr Problem ausführlich erklärt, es wäre eine schöne Ergänzung. :)
deps_stats
@deps_stats: Danke für die Ermutigung, ich bin froh zu sehen, dass die Leute denken, ich hätte meine Frage zumindest etwas anständig gestellt. Leider sind meine Daten wahrscheinlich nicht auf einer öffentlichen Website zu finden. Es ist nicht genau klassifiziert, aber es ist definitiv nicht für den öffentlichen Verbrauch. Ich werde versuchen, einige künstliche Daten zu generieren, die als gutes Beispiel für den Zweck dieser Frage dienen, aber ich habe möglicherweise für einen Tag oder so keine Zeit dafür.
Colin K
@Colin Kein Problem. Ich arbeite derzeit an der Marktsegmentierung für einen Apothekengroßhändler. Das Problem ist, dass ihre Daten Signalen sehr ähnlich sehen. Ich sehe viele Ähnlichkeiten zwischen meinem Problem und Ihrem Problem. Ich werde versuchen, einige Forschungsergebnisse zu veröffentlichen, die Ihnen helfen könnten.
deps_stats
@deps_stats: Ich wünschte, meine Daten wären eher Signale. Ich bin mit der Signalverarbeitung viel besser vertraut als mit dieser Art der statistischen Modellierung / Analyse.
Colin K
@Colin Haben Sie bereits eine Clusteranalyse durchgeführt? (k-bedeutet, hierarchisches Clustering, Partitionierung um Medoide ...)
deps_stats

Antworten:

5

Nifi

s=iwifi+o
os>tts<tdann nicht. Beachten Sie, dass ein einzelner Schwellenwert auf die gesamte Bewertung angewendet wird (und nicht auf einzelne Merkmalswerte), sodass ein Mangel an einem Parameter tatsächlich durch die Häufigkeit in einem anderen ausgeglichen werden kann. Die Gewichte sind intuitiv interpretierbar, in dem Sinne, dass dieses Merkmal umso wichtiger (oder entscheidender) ist, je höher das Gewicht ist.

Es gibt viele handelsübliche lineare Klassifikatoren, die dies tun können, darunter SVM, LDA (lineare Diskriminanzanalyse), lineare neuronale Netze und viele andere. Ich würde mit linearem SVM beginnen, da es in vielen Fällen gut funktioniert und begrenzte Trainingsdaten tolerieren kann. Es gibt auch viele Pakete in vielen Umgebungen (wie Matlab und R), so dass Sie es einfach ausprobieren können. Der Nachteil von SVM ist, dass es rechenintensiv sein kann. Wenn Sie also viele Klassen lernen müssen, ist es möglicherweise weniger geeignet.

iti

gi=11+exp(fiti),
gf

s=iwfii.
fi, aber nicht durch Multiplikation wie in einem üblichen linearen Klassifikator. Die Punktzahl ist in diesem Fall die Log-Wahrscheinlichkeit, und die Gewichte sind die Beiträge der einzelnen Merkmale zu dieser Log-Wahrscheinlichkeit. Der Nachteil bei der Verwendung in Ihrem Fall besteht darin, dass Sie viele Fächer für Ihre Funktionswerte benötigen und das Lernen dann schwierig werden kann. Es gibt Möglichkeiten, dies zu umgehen (z. B. die Verwendung von Priors), aber da Sie keine Erfahrung damit haben, ist dies möglicherweise schwieriger.

In Bezug auf die Terminologie: Was Sie als "Testsatz" bezeichnet haben, wird in diesem Zusammenhang normalerweise als "Trainingssatz" bezeichnet, und was Sie als "neue Daten" bezeichnet haben, wird als "Testsatz" bezeichnet.

Für ein Buch las ich "Mustererkennung" von Duda, Hart und Stork. Das erste Kapitel ist eine sehr gute Einführung für Anfänger.

Sheldon Cooper
quelle
1
Ich habe eine Kopie von "Pattern Recognition" von D, H und S gekauft. Es ist wirklich spektakulär und das Ganze ist nützlich und leicht zu befolgen. Danke noch einmal. Genau so soll SE funktionieren :)
Colin K