Der Klassifizierungsfehler ist geringer, wenn ich den Datensatz nicht lerne.

8

Ich habe einen Datensatz mit einer Tasche voller Wörter. Ich wähle zufällig einige Punkte aus und benutze sie zum Testen und die anderen werden zum Training verwendet.

  • Fall (1) Ich nehme einfach jeden Datenpunkt aus dem Testsatz und klassifiziere ihn so, dass er dieselbe Klassenbezeichnung hat wie sein nächster Punkt aus dem Zugsatz.
  • Fall (2) Ich mache die Klassifizierung mit einem bekannten überwachten Klassifikator.

In Fall (1) bekomme ich immer eine bessere Erkennungsrate. Das heißt, für diesen Datensatz (und andere) ist es besser, überhaupt nicht zu lernen, als überwachtes Lernen zu verwenden! Ist das eine häufige Situation?

shn
quelle
Ich weiß nicht, ob es häufig ist, aber es ist mir passiert. Ihr Klassifikator funktioniert einfach nicht gut. Insbesondere habe ich oft Baummodelle erstellt und festgestellt, dass der Wurzelknoten der beste Baum ist (abhängig von der Definition von "bester").
Peter Flom
1
Es ist sehr häufig, dass Menschen Fehler machen, wenn sie Lernalgorithmen implementieren. Wenn Sie den Gradientenabstieg verwenden, überprüfen Sie, ob ein kleiner Schritt in Richtung des Gradienten die Kostenfunktion tatsächlich um etwa den Betrag verringert, den sie sollte. Dies ist ein einfacher Test, aber viele Leute überspringen ihn und verschwenden Zeit damit, einen Algorithmus mit einem Vorzeichenfehler oder einem ähnlichen Problem zu optimieren.
Douglas Zare
@DouglasZare Ich habe mit vielen Klassifikatoren von Weka und anderen getestet, die ich selbst implementiert habe. Bei vielen Datensätzen führt die Verwendung eines Klassifikators mit einem Trainingsschritt (dh Fall (2)) zu besseren Ergebnissen als Fall (1). Bei den drei Datensätzen mit vielen Wörtern, an denen ich derzeit teste, erhalte ich jedoch bessere Ergebnisse im Fall (1). Ich denke nicht, dass Lernen / Klassifikator nicht gut funktioniert, da ich mit vielen Klassifikatoren getestet habe.
Shn

Antworten:

11

Es ist nicht wahr, dass Sie nicht lernen. Sie verwenden den bekannten Klassifizierungsalgorithmus Nearest Neighbor (NN). Es ist wichtig zu wissen, dass Sie lernen, solange Sie die Zugdaten verwenden (auch wenn Sie einige Parameter nicht explizit berechnen) - und in diesem Fall verwenden Sie sie definitiv.

Es ist in Ordnung, dass es NN gut geht. In einigen Fällen kann dies jedoch ein Zeichen dafür sein, dass ein Problem mit Ihren Daten vorliegt. Dies kann passieren, wenn Ihre Daten nicht IID sind . In einigen Fällen können Ihre Daten beispielsweise exakte oder nahe Duplikate enthalten. In einem solchen Fall haben viele Instanzen im Testsatz einen engen Nachbarn im Zugsatz und Sie erhalten eine hohe Erfolgsquote, aber tatsächlich sind Sie überpassend, denn wenn Sie einen neuen Punkt ohne Duplikate erhalten, ist Ihre Leistung schlechter. In diesem Fall können Sie versuchen, Duplikate im Voraus zu entfernen oder die Zug- / Testsätze so zu erstellen, dass sich Duplikate (oder enge Cluster) im selben Satz befinden müssen. Es ist wichtig, sich die Daten anzusehen und zu verstehen, was los ist.

Bitweise
quelle
Ich verwende direkt das Trainingsset, um die Testsollwerte zu klassifizieren. Es wurde keine Trainingsphase für das Trainingsset durchgeführt. Ich habe nichts gelernt, ich habe nur meine Testpunkte klassifiziert. Ich weiß nicht, warum Sie dies "Lernen" nennen, nur weil das Zugset verwendet wird. Trotzdem habe ich gerade den Datensatz überprüft und Sie haben Recht, es gibt einige doppelte Datenpunkte, manchmal befindet sich der gleiche Datenpunkt im Zug- und Testsatz. Dies ist nicht bei allen Datenpunkten der Fall, aber ich werde es versuchen Um dies zu beheben, entfernen Sie die Duplikate und prüfen Sie, ob das Problem behoben ist.
Shn
1
@shn Es ist ein häufiger Fehler zu glauben, dass Sie nicht lernen und dass eine solche Methode keine Parameter enthält. Solange Sie die Trainingsdaten verwenden, lernen sie. Was Sie tatsächlich tun, ist die Verwendung des gesamten Trainingssatzes als "gelernte Parameter". Wenn Sie ihn also für die spätere Verwendung speichern, "trainieren" Sie tatsächlich (aus diesem Grund ist NN häufig anfälliger für Überanpassungen - es hat tatsächlich viel von "Parametern"). Wenn die Vorhersagen, die Sie machen, vom Trainingssatz abhängen, lernt es. Ein Fall ohne Training wäre, wenn Sie Vorhersagen OHNE Verwendung des Trainingssatzes treffen würden.
Bitwise
Ok, das Problem kam von den doppelten Punkten. Durch das Entfernen erreichen einige Klassifizierer eine etwas bessere Erkennungsrate als die NN-Strategie. Ich habe jedoch nicht bemerkt, dass es zu viele doppelte Punkte gab, ich habe sie entfernt und am Ende einen viel kleineren Datensatz erhalten. Die Anzahl der Instanzen reicht nicht wirklich aus, um ein Online-Lernen durchzuführen. Kennen Sie einen verfügbaren beschrifteten Datensatz zur Dokumentklassifizierung, der sofort verwendet werden kann (dh den ich ohne Vorverarbeitung und vieles mehr verwenden kann ...)? Auf UCI-Repo gibt es einen großen Datensatz mit vielen Wörtern, aber es werden keine Etiketten bereitgestellt.
Shn