Angenommen, wir haben einen Datensatz mit Millionen Zeilen und Tausenden Spalten und die Aufgabe ist die binäre Klassifizierung. Wenn wir ein logistisches Regressionsmodell ausführen, ist die Leistung viel besser als erwartet, z. B. eine nahezu perfekte Klassifizierung.
Wir vermuten, dass die Daten einige betrügerische Variablen enthalten. Wie kann ich sie schnell erkennen?
Betrugsvariablen bedeuten hier eine Variable, die für die Antwort sehr bezeichnend ist und die wir nicht verwenden sollten. Zum Beispiel verwenden wir, wenn eine Person einen Kundendienstanruf tätigt, um vorherzusagen, ob eine Person ein Produkt gekauft hat oder nicht.
algorithms
linear
large-data
high-dimensional
Haitao Du
quelle
quelle
Antworten:
Dies wird manchmal als "Datenverlust" bezeichnet. Hier gibt es ein schönes Papier dazu:
Leckage im Data Mining: Formulierung, Erkennung und Vermeidung
Das obige Papier enthält viele amüsante (und schreckliche) Beispiele für Datenlecks, zum Beispiel einen Wettbewerb zur Krebsvorhersage, bei dem sich herausstellte, dass Patienten-ID-Nummern eine nahezu perfekte Vorhersage für zukünftigen Krebs hatten, unbeabsichtigt aufgrund der Art und Weise, wie Gruppen während der Studie gebildet wurden .
Ich glaube nicht, dass es einen eindeutigen Weg gibt, Datenlecks zu identifizieren. Das obige Papier enthält einige Vorschläge, ist jedoch im Allgemeinen sehr problemspezifisch. Als Beispiel könnten Sie definitiv nur die Korrelationen zwischen Ihren Funktionen und Ihrem Ziel betrachten. Manchmal werden Sie jedoch Dinge vermissen. Stellen Sie sich beispielsweise vor, Sie erstellen einen Spam-Bot-Detektor für eine Website wie stackexchange, bei dem Sie zusätzlich zu Erfassungsfunktionen wie Nachrichtenlänge, Inhalt usw. möglicherweise Informationen darüber erfassen können, ob eine Nachricht von einem anderen Benutzer markiert wurde. Wenn Sie jedoch möchten, dass Ihr Bot-Detektor so schnell wie möglich ist, sollten Sie sich nicht auf benutzergenerierte Nachrichtenflags verlassen müssen. Natürlich würden Spam-Bots eine Menge benutzergenerierter Nachrichtenflags ansammeln, sodass sich Ihr Klassifizierer möglicherweise auf diese Flags verlässt. und weniger auf den Inhalt der Nachrichten. Auf diese Weise sollten Sie in Betracht ziehen, Flags als Funktion zu entfernen, damit Sie Bots schneller markieren können als die Crowd-Sourcing-Benutzer, dh bevor ein breites Publikum ihren Nachrichten ausgesetzt wurde.
In anderen Fällen haben Sie eine sehr dumme Funktion, die Ihre Erkennung verursacht. Es gibt hier eine schöne Anekdote über eine Geschichte darüber, wie die Armee versuchte, einen Panzerdetektor herzustellen, der nahezu perfekte Genauigkeit aufwies, aber stattdessen bewölkte Tage entdeckte, weil alle Trainingsbilder mit Panzern an einem wolkigen Tag aufgenommen wurden, und jedes Trainingsbild ohne Panzer wurde an einem klaren Tag genommen. Ein sehr relevantes Papier dazu ist: "Warum sollte ich Ihnen vertrauen?": Erklären von Vorhersagen eines Klassifikators - Ribeiro, et. al.
quelle
Eine Möglichkeit, betrügerische Variablen zu erkennen, besteht darin, ein Baummodell zu erstellen und die ersten Teilungen zu betrachten. Hier ist ein simuliertes Beispiel.
quelle