Angenommen, ich möchte einen Klassifikator lernen, der vorhersagt, ob es sich bei einer E-Mail um Spam handelt. Angenommen, nur 1% der E-Mails sind Spam.
Am einfachsten ist es, den einfachen Klassifikator zu erlernen, der besagt, dass es sich bei keiner der E-Mails um Spam handelt. Dieser Klassifikator würde eine Genauigkeit von 99% liefern, aber nichts Interessantes erfahren und eine 100% ige Rate von falschen Negativen aufweisen.
Um dieses Problem zu lösen, haben mich die Leute gebeten, ein "Downsample" durchzuführen oder anhand einer Teilmenge der Daten zu lernen, bei denen 50% der Beispiele Spam und 50% kein Spam sind.
Aber ich mache mir Sorgen um diesen Ansatz, da wir, sobald wir diesen Klassifikator erstellt haben und ihn auf einem echten Korpus von E-Mails verwenden (im Gegensatz zu einem 50/50 Testsatz), möglicherweise vorhersagen, dass viele E-Mails Spam sind, wenn sie " Wirklich nicht. Nur weil es daran gewöhnt ist, viel mehr Spam zu sehen, als der Datensatz tatsächlich enthält.
Wie können wir dieses Problem beheben?
("Upsampling" oder mehrmaliges Wiederholen der positiven Trainingsbeispiele, sodass 50% der Daten positive Trainingsbeispiele sind, scheint unter ähnlichen Problemen zu leiden.)
quelle
Das eigentliche Problem hierbei ist Ihre Auswahl der Metrik: Die prozentuale Genauigkeit ist ein schlechtes Maß für den Erfolg eines Modells in einem unausgeglichenen Dataset (genau aus dem Grund, den Sie erwähnen: In diesem Fall ist es trivial, eine Genauigkeit von 99% zu erreichen).
Das Ausbalancieren Ihres Datensatzes vor dem Anpassen des Modells ist eine schlechte Lösung, da Ihr Modell dadurch vorgespannt wird und (noch schlimmer) potenziell nützliche Daten ausgegeben werden.
Sie sind viel besser dran, Ihre Genauigkeitsmetrik auszugleichen, als Ihre Daten auszugleichen. Zum Beispiel könnten Sie verwenden ausgewogene Genauigkeit bei der Auswertung Sie modellieren:
(error for the positive class + error for the negative class)/2
. Wenn Sie alles Positive oder alles Negative vorhersagen, ist diese Metrik50%
eine nette Eigenschaft.Meiner Meinung nach ist der einzige Grund für die Stichprobenreduzierung, dass Sie zu viele Daten haben und nicht zu Ihrem Modell passen. Viele Klassifikatoren (z. B. logistische Regression) eignen sich gut für unausgeglichene Daten.
quelle
Wie immer
@Marc Claesen
eine tolle Antwort.Ich möchte nur hinzufügen, dass das Schlüsselkonzept, das zu fehlen scheint, das Konzept einer Kostenfunktion ist . In jedem Modell gibt es implizite oder explizite Kosten für falsch negative zu falsch positiven Ergebnissen (FN / FP). Für die beschriebenen unausgeglichenen Daten ist man oft bereit, ein Verhältnis von 5: 1 oder 10: 1 zu haben. Es gibt viele Möglichkeiten, Kostenfunktionen in Modelle einzufügen. Eine traditionelle Methode besteht darin, den Wahrscheinlichkeiten eines Modells eine Wahrscheinlichkeitsbeschränkung aufzuerlegen - dies eignet sich gut für die logistische Regression.
Eine Methode, die für strenge Klassifikatoren verwendet wird, die auf natürliche Weise keine Wahrscheinlichkeitsschätzungen ausgeben, besteht darin, die Mehrheitsklasse in einem Verhältnis zu unterabtasten, das die Kostenfunktion induziert, an der Sie interessiert sind. Die Kostenfunktion ist unterschiedlich, aber genauso willkürlich, als ob Sie mit der Prävalenzrate abgetastet hätten. Sie können oft ein geeignetes Stichprobenverhältnis vorhersagen, das Ihrer Kostenfunktion entspricht (normalerweise nicht 50/50), aber die meisten Praktiker, mit denen ich gesprochen habe, probieren einfach ein paar Stichprobenverhältnisse aus und wählen dasjenige, das ihrer Kostenfunktion am nächsten kommt.
quelle
Direkte Beantwortung von Jessicas Frage - Ein Grund für ein Downsampling ist, wenn Sie mit einem großen Dataset arbeiten und Speicherbeschränkungen auf Ihrem Computer haben oder einfach nur die Verarbeitungszeit verkürzen möchten. Durch das Downsampling (dh das Entnehmen einer ersatzlosen Zufallsstichprobe) aus den Negativfällen wird der Datensatz auf eine handlichere Größe reduziert.
Sie haben in Ihrer Frage die Verwendung eines "Klassifikators" erwähnt, aber keinen angegeben. Ein Klassifikator, den Sie vermeiden möchten, sind Entscheidungsbäume. Beim Ausführen eines einfachen Entscheidungsbaums für seltene Ereignisdaten stelle ich häufig fest, dass der Baum nur eine einzige Wurzel bildet, da es schwierig ist, so wenige positive Fälle in Kategorien aufzuteilen. Möglicherweise gibt es ausgefeiltere Methoden, um die Leistung von Bäumen bei seltenen Ereignissen zu verbessern - ich kenne keine von oben.
Daher ist die Verwendung einer logistischen Regression, die einen kontinuierlichen vorhergesagten Wahrscheinlichkeitswert zurückgibt, wie von Marc Claesen vorgeschlagen, ein besserer Ansatz. Wenn Sie eine logistische Regression für die Daten durchführen, bleiben die Koeffizienten unvoreingenommen, obwohl weniger Datensätze vorhanden sind. Sie müssen den Achsenabschnitt von Ihrer heruntergerechneten Regression nach der Formel von Hosmer und Lemeshow, 2000 , anpassen :β0
Dabei ist der Anteil der positiven Fälle in Ihrer Population vor dem Downsampling.p+
Um den Schwellenwert für Ihre bevorzugte Spam-ID mit dem ROC zu ermitteln, können Sie zunächst den gesamten Datensatz mit den Modellkoeffizienten bewerten, die für den heruntergerechneten Datensatz ermittelt wurden, und dann die Datensätze von der höchsten bis zur niedrigsten vorhergesagten Spam-Wahrscheinlichkeit einstufen. Nehmen Sie als Nächstes die höchsten bewerteten Datensätze, wobei Schwellenwert ist, den Sie festlegen möchten (100, 500, 1000 usw.), und berechnen Sie dann den Prozentsatz falsch positiver Fälle in den höchsten Fällen und den Prozentsatz falsch negativer Fälle in die verbleibende untere Reihe von - Fällen, um das richtige Gleichgewicht zwischen Sensitivität / Spezifität zu finden, das Ihren Bedürfnissen entspricht.n n n nn n n N n
quelle
Wenn Sie natürlich alles als "kein Spam" klassifizieren, können Sie sagen, dass bei 100 Mails 99 Mails korrekt klassifiziert werden, aber es wird auch als "kein Spam" eingestuft, der einzige, der als Spam eingestuft wird (100% falsch positiv). Es stellt sich heraus, dass die Metrik, die Sie zur Auswertung des Algorithmus auswählen, nicht angepasst ist. Dieses Video veranschaulicht das Konzept.
Wenn Sie den Datensatz grob ausgleichen, können Sie die Fehlklassifizierungen gewichten. Ein Algorithmus, der vermutlich einen unausgeglichenen Trainingssatz verwendet, wird nicht lernen, von den Merkmalen zu unterscheiden, da er der Tatsache, dass die Daten der spärlichen Klasse falsch klassifiziert werden, keine große Bedeutung beimessen würde.
quelle
Ich würde weder ein Downsampling noch ein Upsampling wählen, da beide Tricks den Lernalgorithmus beeinflussen. Wenn die Daten jedoch unausgewogen sind, wird das Genauigkeitsmaß ungültig oder nicht aussagekräftig. Daher ist es besser, Präzisions- und Rückrufmaße zu verwenden. Beide hängen hauptsächlich vom TP ab ( Die in Ihrem Fall korrekt klassifizierten Spam-Mails geben Aufschluss über die tatsächliche Leistung Ihres Systems bei der Erkennung von Spam-Mails, unabhängig von der Anzahl der negativen Beispiele.
quelle