Wie wenden Sie SMOTE auf die Textklassifizierung an?


12

Die Synthetic Minority Oversampling-Technik (SMOTE) ist eine Oversampling-Technik, die bei einem unausgeglichenen Datensatzproblem verwendet wird. Bisher habe ich eine Idee, wie ich es auf generische, strukturierte Daten anwenden kann. Aber ist es möglich, es auf das Problem der Textklassifizierung anzuwenden? Welchen Teil der Daten müssen Sie überabtasten? Es gibt bereits eine andere Frage , aber es gibt keine Antwort. Wo kann ich möglicherweise lernen, damit anzufangen?

Antworten:


11

Tatsächlich ist NLP einer der häufigsten Bereiche, in denen ein erneutes Abtasten von Daten erforderlich ist, da es viele Aufgaben zur Textklassifizierung gibt, die sich mit unausgewogenen Problemen befassen (denken Sie an Spam-Filterung, Erkennung beleidigender Kommentare, Artikelklassifizierung usw.). Aber SMOTE scheint hier aus folgenden Gründen problematisch zu sein:

  • SMOTE arbeitet im Feature Space. Dies bedeutet, dass die Ausgabe von SMOTE keine synthetischen Daten sind, die einen echten Repräsentanten eines Textes in seinem Funktionsbereich darstellen.
  • Einerseits arbeitet SMOTE mit KNN zusammen, andererseits sind die Funktionsbereiche für NLP-Probleme dramatisch groß. KNN wird in diesen riesigen Dimensionen leicht versagen.

Ich kann Ihnen also zwei Ansätze vorschlagen:

  1. Kümmere dich nicht um die reale Textdarstellung neuer synthetischer Proben, von denen ich annehme, dass sie in Ordnung sind. Sie müssen die Verteilung für Ihren Klassifikator ausgleichen, nicht für einen Leser von Textdaten. Wenden Sie SMOTE also wie gewohnt an (ich verwende jedoch normalerweise die Lösung 2 unten, damit ich das Ergebnis nicht garantiere!), Mit einem Schritt zur Reduzierung der Dimensionalität.

1) Nehmen wir an, Sie möchten Ihre Datenproben aus der Nebenklasse mit 3-NN verdoppeln. Ignorieren Sie die Hauptklasse (n) und bewahren Sie nur Stichproben der Nebenklasse auf.

2) Wählen Sie für jeden Abtastpunkt im Merkmalsraum 5 nächste Nachbarn aus. Wählen Sie dann 3 davon zufällig aus (ist das nicht unnötig kompliziert? Wenn ich den ursprünglichen Algorithmus nicht erklären wollte, würde ich sagen, wählen Sie einfach 3 Nachbarn!)

3) Berechnen Sie für jede Dimension den Abstand zwischen Probe und Nachbarn und multiplizieren Sie ihn mit einer Zufallszahl zwischen 0 und 1 und addieren Sie ihn zum ursprünglichen Wert der Probe in dieser Dimension. (Dieser komplizierte Absatz bedeutet einfach, dass Sie für jede Dimension einen zufälligen Wert zwischen der ursprünglichen Stichprobe und diesem Nachbarn auswählen!)

  1. Aber ich mache normalerweise ein anderes Oversampling, das sich auf dem Text befindet (also intuitiver) und eine Art SMOTE ist.

1) Ignoriere die Hauptklasse. Erhalten Sie eine Längenverteilung aller Dokumente in der Nebenklasse, damit wir neue Beispiele entsprechend der tatsächlichen Dokumentlänge (Anzahl der Wörter / Phrasen) generieren. Wir gehen davon aus, dass wir die Größe der Klasse verdreifachen möchten (also synthetische Dokumente pro Originaldokument erstellen).k=2

2) Erzeugen Sie eine Folge von zufälligen ganzen Zahlen gemäß dieser Verteilung. Es wird zum Bestimmen der Länge eines neuen synthetischen Dokuments verwendet.n

3) Für jedes Dokument: Wählen Sie eine Ganzzahl aus einer zufälligen Längenfolge und ein zufälliges Dokument, dessen Länge nahe an der Ganzzahl liegt. Legen Sie Token aller Dokumente in einen Satz und wählen Sie zufällig Token Token mal aus. Dies sind Ihre neuen Dokumente.mmnkk


Vielen Dank für die Antwort, aber kann SMOTE für Samples angewendet werden, wenn diese mit One-Hot-Codierung dargestellt werden? oder sollten sie anders dargestellt werden?
Adnanmuttaleb

Hallo Kasra, können Sie einige Implementierungen im Zusammenhang mit den von Ihnen erwähnten Schritten teilen
Payal Bhatia

2

Wenn Sie weitere Text- / Satzübertragungsdaten hinzufügen möchten, können Sie vorab trainierte Worteinbettungen verwenden. Vorgeübte Modelle wie bieten eine Wortvektordarstellung für jedes einzelne Wörterbuchwort. Es enthält auch 'most_smiliar'-Wörter.

Sie können einfach einen Beispielsatz verwenden und neue Beispiele generieren, indem Sie jedes Wort mit seinen TOP_N-ähnlichen Wörtern permutieren.

Wenn Ihr Satz beispielsweise 3 Wörter enthält und Sie für jedes Wort 3 ähnlichste auswählen, können Sie die Stichprobe um das 27-fache erhöhen.


Hallo Yashodhan, wie können wir diesen Prozess verwenden, wenn er domänenspezifisch ist? Danke
Payal Bhatia
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.