Problem beim Vergleichen von Klassifizierern für die Mustererkennung

7

Ich habe einen Klassifikator M entworfen, der Gesten erkennt und sie immer einer beliebigen Kategorie zuordnet. Eine Geste wird basierend auf dem Hamming-Abstand zwischen der Abtastzeitreihe y und der Trainingszeitreihe x klassifiziert. Das Ergebnis des Klassifikators sind Wahrscheinlichkeitswerte. Es gibt 3 Klassen / Kategorien mit den Bezeichnungen A, B, C, die Handgesten klassifizieren, wobei für jede zu klassifizierende Klasse 100 Stichproben vorhanden sind (einzelnes Merkmal und Datenlänge = 100). Die Daten sind verschiedene Zeitreihen (x-Koordinate gegen Zeit). Der Trainingssatz wird verwendet, um Wahrscheinlichkeiten zuzuweisen, die angeben, welche Geste wie oft aufgetreten ist. Wenn also von 10 Trainingsbeispielen Geste A sechsmal auftrat, ist die Wahrscheinlichkeit, dass eine Geste unter Kategorie A fällt, gleich

P (A) = 0,6 ähnlich P (B) = 0,3

und

P (C) = 0,1

Jetzt versuche ich, die Leistung dieses Klassifikators mit dem Bayes-Klassifikator, K-NN, der Hauptkomponentenanalyse (PCA) und dem neuronalen Netzwerk zu vergleichen.

  1. Auf welcher Grundlage, mit welchem ​​Parameter und mit welcher Methode sollte ich dies tun, wenn ich ROC oder Kreuzvalidierung in Betracht ziehe, da die Merkmale für meinen Klassifizierer die Wahrscheinlichkeitswerte für das ROC-Diagramm sind. Welche Merkmale sollen also für k-nn, Bayes-Klassifizierung und PCA gelten?
  2. Gibt es einen Code dafür, der nützlich sein wird?
  3. Was sollte der Wert von k sein, gibt es 3 Klassen von Gesten?

Bitte helfen Sie. Ich bin in einer Verlegenheit.

user1214586
quelle
Ist PCA nicht eine Hauptkomponentenanalyse ?
Om-Nom-Nom
Wie hängt diese Frage mit Ihrer früheren Frage cs.stackexchange.com/questions/840/… zusammen ?
Dave Clarke
Dies ist eine kürzere Version dieser Frage, die nur für den Vergleich der Klassifikatoren von Bedeutung ist.
user1214586
@ user1214586: Ist der alte noch relevant?
Raphael
@Raphael: Ja, die alte Frage ist relevant, da der Teil, der sich auf die Auswahl und Verwendung von k-nn- und matlab-Code sowie die Vorgehensweise mit anderen Klassifikatoren bezieht, nicht beantwortet / unklar ist. Vielen Dank und wäre für eine Lösung verpflichtet.
user1214586

Antworten:

7

Es gibt keine einfache Möglichkeit, dies zu tun. Tatsächlich erklärt ein kürzlich veröffentlichter Artikel von Charles Parker einige der Probleme bei der Verwendung von ROC-Kurvenmessungen (in meinem Blog gibt es einen freundlichen Überblick - Selbstwerbung !!). In seinem Artikel werden einige Empfehlungen zum besten Vergleich verschiedener Klassifikatoren gegeben, sodass Sie dort etwas Nützliches finden.

Suresh
quelle
Was macht man dann, wenn sie einen Klassifikator vorschlagen oder einen bestehenden verbessern? Gibt es keine allgemeine Standardmethode zum Vergleichen?
user1214586
Sollte im Fall einer Klassifizierung mehrerer Klassen mit einem Merkmal das Merkmal für den Vergleich dasselbe sein? Ich habe Schwierigkeiten damit, da in meinem Beispiel die verschiedenen Algorithmen unterschiedliche Arten der Klassifizierung haben. Muss ich also Gesten für jeden der Klassifikatoren erkennen, die in ihrem eigenen algorithmischen Design erkannt werden? Bitte werfen Sie etwas Licht auf diesen Aspekt.
user1214586
IIRC, das Parker-Papier, empfiehlt einige „Best Practices“.
Suresh
0
  1. Der allgemeine Weg, Klassifikatoren zu vergleichen, besteht darin, sie mit ROC zu vergleichen. Für einen festen Bereich von Fehlalarmraten prüfen Sie, welcher Klassifikator die höchste Genauigkeit erreicht hat. Wenn Sie eine einzelne Kennzahl wünschen, können Sie Area Under ROC (AUC) verwenden. Es gibt noch viele andere Maßnahmen, schauen Sie nach. Für einen fairen Vergleich müssen Sie alle Klassifikatoren auf einem gleichmäßigen Fundament vergleichen. Dies bedeutet die gleichen Merkmale und die gleichen Trainingsbedingungen.

  2. Der Wert von k ist etwas, das Sie herausfinden müssen, indem Sie verschiedene Werte ausprobieren. Wählen Sie den Wert aus, der für Ihren Validierungssatz am besten geeignet ist, geben Sie jedoch nur Ergebnisse für Ihren Testsatz an, die Sie bei der Parameteroptimierung nicht verwendet haben.

Dmitry Kamenetsky
quelle