Meine 'maschinelles Lernen'-Aufgabe besteht darin, harmlosen Internet-Verkehr von böswilligem Verkehr zu trennen. Im realen Szenario ist der größte Teil (sagen wir 90% oder mehr) des Internetverkehrs harmlos. Daher hatte ich das Gefühl, dass ich auch für das Training meiner Modelle ein ähnliches Daten-Setup wählen sollte. Aber ich bin auf ein oder zwei Forschungsarbeiten gestoßen (in meinem Arbeitsbereich), die einen "Klassenausgleich" -Datenansatz zum Trainieren der Modelle verwendet haben, der eine gleiche Anzahl von Fällen von harmlosem und böswilligem Datenverkehr impliziert.
Wenn ich Modelle für maschinelles Lernen erstelle, sollte ich mich im Allgemeinen für einen Datensatz entscheiden, der für das Problem der realen Welt repräsentativ ist, oder für einen ausgeglichenen Datensatz, der besser zum Erstellen der Modelle geeignet ist (da sich bestimmte Klassifikatoren bei einem Klassenungleichgewicht nicht gut verhalten) aus anderen mir nicht bekannten gründen)?
Kann jemand mehr Aufschluss über die Vor- und Nachteile beider Entscheidungen geben und wie man entscheidet, für wen man sich entscheidet?
Ich denke, es kommt immer auf das Szenario an. Die Verwendung eines repräsentativen Datensatzes ist nicht immer die Lösung. Angenommen, Ihr Trainingssatz enthält 1000 negative und 20 positive Beispiele. Ohne Änderung des Klassifikators klassifiziert Ihr Algorithmus alle neuen Beispiele als negativ. In einigen Szenarien ist dies in Ordnung. In vielen Fällen sind die Kosten für das Fehlen von Postivbeispielen jedoch hoch, sodass Sie eine Lösung dafür finden müssen.
In solchen Fällen können Sie einen kostensensitiven Algorithmus für maschinelles Lernen verwenden. Zum Beispiel bei der medizinischen Diagnosedatenanalyse.
Zusammenfassend: Klassifizierungsfehler haben nicht die gleichen Kosten!
quelle
Es gibt immer die Lösung, beide Ansätze auszuprobieren und denjenigen beizubehalten, der die erwarteten Leistungen maximiert.
In Ihrem Fall würde ich davon ausgehen, dass Sie es vorziehen, falsche Negative auf Kosten eines falschen Positivs zu minimieren. Daher möchten Sie Ihren Klassifikator gegen das starke Negativ voreingenommen machen und das Ungleichgewicht beseitigen, indem Sie die Anzahl der negativen Beispiele in Ihrem Trainingssatz verringern.
Berechnen Sie dann die Präzision / Rückruf, Sensitivität / Spezifität oder ein beliebiges Kriterium für den vollständigen, unausgeglichenen Datensatz, um sicherzustellen, dass Sie kein signifikantes Muster in den realen Daten ignoriert haben, während Sie das Modell auf den reduzierten Daten aufbauen.
quelle
Trennen Sie das Betriebs- und das Schulungsszenario.
Das Betriebsszenario ist dasjenige, an dem Ihr Klassifikator gemessen wird. Hier sollten Sie gute Leistungen erbringen. Die Verwendung sollte einen Datensatz enthalten, der für dieses Szenario repräsentativ ist.
Das Trainingsszenario ist das, was Sie tun, um einen Klassifikator zu erstellen, der im operativen Szenario eine gute Leistung erbringt.
Häufig sind die Datasets in beiden Szenarien von derselben Art, sodass keine Unterscheidung erforderlich ist. Zum Beispiel haben Sie einen Online-Shop, mit dem Sie die vergangene Verwendung trainieren können, um eine gute Leistung für die zukünftige Verwendung zu erzielen. Während des Trainings können Sie jedoch einen anderen Datensatz als den verwenden, der das Betriebsszenario darstellt. Wenn Sie schlafen, von einem Klassifikator träumen, ihn in Ihrem Betriebsszenario validieren (dieser Schritt sollte nach dem Aufwachen ausgeführt werden), sind Sie genauso gut wie nach dem üblichen maschinellen Lernpfad.
Die Unterscheidung zwischen Betriebs- und Schulungsszenarien wird wichtig, wenn der Datensatz unausgewogen ist. Die meisten Algorithmen funktionieren mit einem solchen Datensatz nicht gut.
Zögern Sie also nicht, zwei Datensätze zu verwenden - Sie können einen ausgeglichenen Datensatz für das Training verwenden. Sobald Sie fertig sind, validieren Sie Ihren Klassifizierer des Betriebsdatensatzes.
quelle
Ich denke, es gibt zwei getrennte Punkte, die zu berücksichtigen sind: Trainingszeit und Vorhersagegenauigkeit.
Nehmen wir ein einfaches Beispiel: Nehmen wir an, Sie haben zwei Klassen mit einer multivariaten Normalverteilung. Grundsätzlich müssen Sie die jeweiligen Klassenmittel und Klassenkovarianzen abschätzen. Das erste, was Sie interessiert, ist Ihre Schätzung des Unterschieds in der Klasse bedeutet: Ihre Leistung wird jedoch durch die Genauigkeit des schlechtesten geschätzten Mittelwerts begrenzt: Es ist nicht gut, einen Mittelwert auf die 100. Dezimalstelle zu schätzen - wenn der andere Mittelwert nur ist Geschätzt auf 1 Dezimalstelle. Es ist also eine Verschwendung von Rechenressourcen, alle Daten zu verwenden. Stattdessen können Sie die häufigere Klasse unterbemustern UND die Klassen entsprechend neu gewichten. (Diese Rechenressourcen können dann zum Erkunden verschiedener Eingabevariablen usw. verwendet werden.)
Das zweite Problem ist die Genauigkeit der Vorhersage: Unterschiedliche Algorithmen verwenden unterschiedliche Fehlermetriken, die möglicherweise mit Ihren eigenen Zielen übereinstimmen oder nicht. Zum Beispiel wird durch die logistische Regression der Gesamtwahrscheinlichkeitsfehler bestraft. Wenn also die meisten Ihrer Daten aus einer Klasse stammen, wird tendenziell versucht, die genauen Wahrscheinlichkeitsschätzungen (z. B. 90 vs. 95% Wahrscheinlichkeit) dieser einen Klasse zu verbessern, anstatt zu versuchen, sie zu identifizieren die seltene Klasse. In diesem Fall möchten Sie auf jeden Fall versuchen, die seltene Klasse neu zu gewichten (und anschließend die Schätzung [durch Anpassen des Bias-Terms] anzupassen, um die Wahrscheinlichkeitsschätzungen neu auszurichten).
quelle