Angenommen, ich habe eine Reihe von Instanzen mit zugeordneten Klassenbezeichnungen. Es spielt keine Rolle, wie diese Instanzen gekennzeichnet wurden, sondern wie sicher ihre Klassenmitgliedschaft ist. Jeder Instanz gehört genau einer Klasse an. Angenommen, ich kann die Sicherheit jeder Klassenmitgliedschaft mit einem nominalen Attribut von 1 bis 3 quantifizieren (sehr sicher bis unsicher).
Gibt es eine Art Klassifikator, der ein solches Sicherheitsmaß berücksichtigt, und wenn ja, ist es im WEKA-Toolkit verfügbar?
Ich stelle mir vor, dass diese Situation ziemlich häufig auftritt, zum Beispiel wenn Fälle von Menschen klassifiziert werden, die nicht immer ganz sicher sind. In meinem Fall muss ich Bilder klassifizieren, und manchmal kann ein Bild zu mehr als einer Klasse gehören. In diesem Fall gebe ich der Klasse eine hohe Unsicherheit, klassifiziere sie aber dennoch mit nur einer Klasse.
Oder gibt es andere Ansätze für dieses Problem ohne einen speziellen Klassifikator? ZB nur "bestimmte" Klassifikationen für das Training nehmen? Ich befürchte, dass es in diesem Fall zu weiteren Fehlklassifizierungen kommen wird, da "Grenzfälle" nicht abgedeckt sind.
quelle
Antworten:
Zunächst ist, wie @Marc Claesen bereits erklärte, die halbüberwachte Klassifizierung eine der Techniken, um die Situation zu bewältigen, in der Sie wissen, dass die Klassen wirklich unterschiedlich sind, aber nicht sicher sind, zu welcher Klasse der Fall tatsächlich gehört.
Es gibt jedoch auch verwandte Situationen, in denen die "Realität" nicht so klar ist und die Annahme, dass es wirklich unterschiedliche Klassen gibt, nicht erfüllt ist: Grenzfälle können eine "physische" Realität sein (siehe unten für Artikel über eine Anwendung) wo wir eine solche Bedingung erfüllt haben).
Es gibt eine entscheidende Annahme für halbüberwachte Klassifikatoren , die Sie sicherstellen müssen, dass sie erfüllt wird: die Annahme, dass im Merkmalsraum Klassengrenzen mit einer geringen Stichprobendichte einhergehen . Dies wird als Clusterannahme bezeichnet.
Selbst wenn die Ihren Daten zugrunde liegende Realität unterschiedliche Klassen aufweist, weist Ihr Datensatz möglicherweise überproportional viele Grenzfälle auf: z. B. wenn Ihre Klassifizierungstechnik auf die Klassifizierung schwieriger Fälle abzielt, während die klaren und einfachen Fälle nicht von Interesse sind und Ihre Trainingsdaten dies bereits widerspiegeln Lage.
Ich stimme Ihnen voll und ganz zu, dass das Ausschließen der Grenzfälle oft eine schlechte Idee ist: Wenn Sie alle schwierigen Fälle entfernen, erhalten Sie ein künstlich einfaches Problem. IMHO ist es noch schlimmer, dass das Ausschließen von Grenzfällen normalerweise nicht mit dem Modelltraining aufhört, aber die Grenzfälle werden auch vom Testen ausgeschlossen, sodass das Modell nur mit einfachen Fällen getestet wird. Damit würden Sie nicht einmal merken, dass das Modell mit Grenzfällen nicht gut funktioniert.
Hier sind zwei Artikel, die wir über ein Problem geschrieben haben, das sich von Ihrem darin unterscheidet, dass in unserer Anwendung auch die Realität "gemischte" Klassen haben kann (eine allgemeinere Version Ihres Problems: Unsicherheit bei Referenzetiketten wird ebenfalls behandelt).
C. Beleites, K. Geiger, M. Kirsch, SB Sobottka, G. Schackert und R. Salzer: Raman-spektroskopische Einstufung von Astrozytomgeweben: Verwendung weicher Referenzinformationen, Anal. Bioanal. Chem., 400 (2011), 2801 & ndash; 2816.
C. Beleites, R. Salzer und V. Sergo:
Validierung von weichen Klassifizierungsmodellen unter Verwendung von
Teilklassenmitgliedschaften : Ein erweitertes Konzept von Sensitivity & Co., das auf die Einstufung von Astrocytoma Tissues Chemom angewendet wird. Intell. Labor. Syst., 122 (2013), 12-22.
Die Links führen zu einer Projektseite eines R-Pakets, das ich für die Leistungsberechnungen entwickelt habe. Es gibt weitere Links sowohl zur offiziellen Webseite als auch zu meinen Manuskripten der Papiere. Obwohl ich Weka bisher noch nicht verwendet habe, verstehe ich, dass eine Schnittstelle zu R verfügbar ist .
praktische Überlegungen:
libSVM
Abstimmung durch Kreuzvalidierung mitzuteilen, dass alle Kopien jedes Datenpunkts in derselben Kreuzvalidierungsfalte aufbewahrt werden müssen. SomitlibSVM
würde eine Abstimmung wahrscheinlich ein massives Überanpassungsmodell ergeben.nnet::multinom
).quelle
libsvm
insbesondere. Dielibsvm
Autoren bieten eine alternative Version jeder Version an, in der eine instanzgewichtete Klassifizierung möglich ist, um dieses Problem insgesamt zu vermeiden. Es sind diese Dinge, die mich dazu bringen, Algorithmusbibliotheken im Allgemeinen direkt zu verwenden, anstatt Wrapper wie Weka / scipy / ... csie.ntu.edu.tw/~cjlin/libsvmtools/#weights_for_data_instancesDies ist eine der Verallgemeinerungen der Klassifizierung, die im halbüberwachten Lernen behandelt werden. Wenn Sie ein Maß für die Sicherheit haben, können Sie Ansätze verwenden, die die Gewichtung von Trainingsinstanzen ermöglichen. Je höher die Sicherheit, desto größer das entsprechende Instanzgewicht. Beispiele für solche Ansätze sind instanzgewichtete SVM und logistische Regression.
Ich bin sicher, dass weka Implementierungen dieser Algorithmen hat. Wenn alles andere fehlschlägt, testen Sie mehrere Instanzen mit hoher Sicherheit aus den Instanzen. Sie können diesen Ansatz für herkömmliche SVM oder LR verwenden.
Beispiel: SVM
Wenn ich mich nicht irre, hat weka Schnittstellen zu LIBSVM . Mit LIBSVM können Sie klassengewichtete SVM in allen Versionen und instanzgewichtete SVM in speziellen Versionen jeder Version lösen. Ich gehe davon aus, dass Weka Letzteres nicht unterstützt (was Sie brauchen).
Basierend auf Ihrer Frage scheint es, als würden Sie idealerweise 6 verschiedene Gewichte verwenden wollen (2 Klassen 3 Sicherheitsstufen). Sie können dies für viele Ansätze erreichen, indem Sie Stichproben der Punkte mit hoher Sicherheit duplizieren.×
In Bezug auf SVM ergibt die zweimalige Verwendung derselben Dateninstanz beispielsweise eine identische Lösung für die Verdoppelung des zugehörigen Werts. Dies ist eine sehr einfache Möglichkeit, bestimmten Dateninstanzen hohe Strafen für Fehlklassifizierungen zuzuweisen. Sie können den gleichen Ansatz für die logistische Regression verfolgen.C
quelle
Die Schwierigkeit des Problems hängt stark davon ab, wie fehlerhaft die unsicheren Beschriftungen sein können. Wenn die unsicheren Bezeichnungen beispielsweise in 90% der Fälle richtig sind, können Sie wahrscheinlich nur mit logistischer Regression davonkommen. Wenn die Beschriftungen jedoch fast die Hälfte der Zeit falsch sind, müssen Sie möglicherweise auf einige spezielle Techniken zurückgreifen. Hier ist ein Stich, den ich bei einem sehr ähnlichen Problem gemacht habe. (Wir hatten mehrere Beobachtungen pro Etikett, aber ansonsten ist das Setup ziemlich ähnlich.)
quelle
Ich hatte einen kurzen Einblick in die Bilderkennung und -klassifizierung.
Random Forests ist eine einfach zu verwendende Technik. Ich habe es auf R implementiert, es sollte auch auf Weka verfügbar sein. Die Benutzerfreundlichkeit übertrifft jedoch die Vorhersagegenauigkeit. Wenn Sie über ein ausreichend großes Trainingsset verfügen, können mehrere Labels klassifiziert werden.
Es hat funktioniert, um handgeschriebene Ziffern recht gut zu erkennen, aber wenn Ihre Bilder komplexer sind, würde Ihnen nur ein Versuch sagen, ob es gut funktioniert.
quelle