Wie kann man ein Ergebnis mit nur positiven Fällen als Training vorhersagen?

21

Nehmen wir der Einfachheit halber an, ich arbeite am klassischen Beispiel von Spam- / Nicht-Spam-E-Mails.

Ich habe 20000 E-Mails. Davon weiß ich, dass 2000 Spam sind, aber ich habe kein Beispiel für Nicht-Spam-E-Mails. Ich möchte vorhersagen, ob es sich bei den verbleibenden 18000 um Spam handelt oder nicht. Im Idealfall ist das gesuchte Ergebnis eine Wahrscheinlichkeit (oder ein p-Wert), dass es sich bei der E-Mail um Spam handelt.

Mit welchen Algorithmen kann ich in dieser Situation eine vernünftige Vorhersage treffen?

Im Moment denke ich an eine entfernungsbasierte Methode, die mir sagt, wie ähnlich meine E-Mail einer bekannten Spam-E-Mail ist. Welche Möglichkeiten habe ich?

Kann ich generell eine überwachte Lernmethode anwenden oder muss ich dafür negative Fälle in meinem Trainingsset haben? Beschränke ich mich auf unbeaufsichtigte Lernansätze? Was ist mit halbüberwachten Methoden?

enricoferrero
quelle
1
Jeder Lernalgorithmus, den Sie verwenden, sagt voraus, dass alle E-Mails Spam sind. Sie müssen Beispiele aus den beiden Kategorien haben, um vernünftig lernen zu können.
JohnRos
OK, das würde einen klassischen betreuten Lernansatz ausschließen. Aber gibt es einen Algorithmus, der eine Art Ähnlichkeitsmetrik zurückgibt? ZB: Diese E-Mail ist einer Spam-E-Mail sehr ähnlich, die andere nicht.
Enricoferrero
6
@JohnRos nicht wahr, das Lernen aus positiven und unbeschrifteten Daten ist ein großes Thema beim teilüberwachten Lernen und es ist nicht so, wie Sie es beschreiben.
Marc Claesen
5
@MarcClaesen: Ich war mit dieser (sehr coolen) Forschungsrichtung nicht vertraut. Ich sehe, dass diese Magie in der Annahme besteht, dass die unbeschrifteten Daten eine Mischung aus Spam und Nicht-Spam sind, was das Problem lösbar macht.
JohnRos
2
@JohnRos genau, und ich stimme dem Coolness-Faktor zu. Was ich wirklich cool finde, ist die Tatsache, dass wir in letzter Zeit zeigen konnten, wie herkömmliche Leistungsmetriken basierend auf Kontingenztabellen (z. B. Genauigkeit, Präzision, Rückruf, ...) ohne bekannte Negative berechnet werden können !
Marc Claesen

Antworten:

19

Dies wird als Lernen aus positiven und unbeschrifteten Daten oder kurz PU-Lernen bezeichnet und ist eine aktive Nische des halbüberwachten Lernens.

Kurz gesagt, es ist wichtig, die unbeschrifteten Daten im Lernprozess zu verwenden, da sie gegenüber sogenannten Einzelklassifikatoren, die ausschließlich auf bekannte positive Ergebnisse trainiert werden, erheblich verbesserte Modelle liefern. Nicht beschriftete Daten können auf verschiedene Arten eingearbeitet werden, wobei die folgenden Ansätze vorherrschen:

  • leiten Sie aus den nicht etikettierten Daten auf irgendeine Weise einen Satz wahrscheinlicher Negative ab und trainieren Sie dann ein überwachtes Modell, um bekannte Positive von diesen abgeleiteten Negativen zu unterscheiden.
  • Behandeln Sie den unbeschrifteten Satz als negativ und erklären Sie auf irgendeine Weise das bekannte Beschriftungsrauschen.

Ich bin auf diesem Gebiet aktiv und empfehle, anstatt es hier für Sie zusammenzufassen, zwei meiner Arbeiten und die darin enthaltenen Referenzen zu lesen, um einen Überblick über die Domäne zu erhalten:

Marc Claesen
quelle
1
Ausgezeichnet! Vielen Dank für die Hinweise. Das RESVM und das eingesackte SVM scheinen in einer PU-Lerneinstellung eine ähnliche Leistung zu erbringen. Können Sie Implementierungen (vorzugsweise in R) beider Algorithmen empfehlen? Beides scheint leider nicht in caret enthalten zu sein.
Enricoferrero
1
@enricoferrero Ja, sie verhalten sich ähnlich, es sei denn, es gibt falsche (bekannte) positive Ergebnisse. In diesem Fall übertrifft RESVM das Absacken von SVM erheblich (ich habe RESVM für diesen Zweck entwickelt, da die Anwendung, an der ich arbeite, falsche positive Ergebnisse aufweist). Ich glaube nicht, dass es R-Implementierungen gibt, aber Sie können beide ganz einfach implementieren, indem Sie eine SVM-Implementierung wie kernlaboder umschließen e1071. Beachten Sie, dass sowohl SVM als auch RESVM eine Reihe von Hyperparametern aufweisen, die Sie optimieren müssen. Ich empfehle die Optunity- Bibliothek (mit einer R-Schnittstelle).
Marc Claesen
1
@enricoferrero Ich habe eine Befehlszeilenimplementierung von RESVM unter github.com/claesenm/resvm verfügbar , obwohl dieser Code nicht sehr gut poliert ist. Dieses spezifische Repo ist in Python geschrieben und wird als Treiber für das EnsembleSVM- Paket verwendet.
Marc Claesen
Es sieht so aus, als ob eine weitere gute Option für einen verpackten SVM-Algorithmus darin bestehen könnte, das mlr- Paket in R mit einer Verpackungshülle um einen SVM- Lernenden zu verwenden .
Enricoferrero
7

Ich gehe davon aus, dass es in Ihren 18000 Fällen nicht so viele Spam-Fälle gibt. Um einen überwachten Lernansatz zu verwenden, müssen Ihre Daten mehr als eine Kategorie / Klasse enthalten. Da Sie wissen, dass 2000 Fälle Spam sind, können Sie die verbleibenden 18000 Fälle als "unbekannte Kategorie" kennzeichnen und ein überwachtes Lernmodell trainieren, um vorherzusagen, ob ein Fall in der Spam- oder der unbekannten Kategorie vorliegt. Überprüfen Sie dann die Genauigkeit Ihres Out-of-Sample-Modells, um festzustellen, wie gut das Modell zwischen den beiden Kategorien unterscheidet. Wenn es gut funktioniert, ist meine Annahme von wenigen Spam-Fällen in der Kategorie "Unbekannt" gerechtfertigt. Wenn die Leistung nicht gut ist, müssen Sie einen unbeaufsichtigten Lernenden (wie kmeans usw.) verwenden, um separate homogene Gruppen in Ihren Daten zu gruppieren und zu identifizieren. Identifizieren Sie anschließend, welche Cluster die meisten der 2000 Spam-E-Mails enthalten. und welche nicht und kennzeichnen sie als Spam bzw. Nicht-Spam. Als nächstes können Sie mit der Modellierung unter Verwendung eines betreuten Lerners fortfahren, wie ich zuvor beschrieben habe.

FelixNNelson
quelle
2

Worüber das OP spricht, ist eine Ein-Klassen-Klassifizierungsaufgabe, die sehr herausfordernd ist.

Es gibt viele Artikel zu dieser Aufgabe in verschiedenen Forschungsbereichen. Ich habe auch ein effizientes Überprüfungsschema für die Eigenautorenschaft geschrieben, das auf dem Lernen von Ensembles basiert . Es ist sehr einfach, es anzupassen, um Spam / nicht Spam, sondern Autoren zu klassifizieren. Probieren Sie es aus und lassen Sie es mich wissen, wenn Sie weitere Details benötigen ...

Unbehandelte Ausnahme
quelle
Ich erhalte die Fehlermeldung 404, wenn ich Ihrem Link folge.
Enricoferrero
Es gab einen Tippfehler. Entschuldigung, sollte jetzt funktionieren
;-)