Ist ein Bayes'scher Klassifikator ein guter Ansatz für Text mit numerischen Metadaten?

8

Ich versuche, einen Ansatz zur Erkennung von Betrugsanzeigen auf meiner Website zu finden. Ich denke, das Problem hat viel mit der Erkennung von Spam-E-Mails zu tun (für die ein naiver Bayes-Klassifikator eine häufige Lösung ist), da viele der Signale, die auf einen Betrug hinweisen, im Text der Anzeige zu finden sind.

Es gibt jedoch bestimmte andere Informationen, die gute Betrugsindikatoren sein können, aber ich bin mir nicht sicher, ob / wie ein Bayes-Klassifikator sie verwenden könnte, da es sich eher um numerische Werte handelt (wobei Werte an den Extremen des Bereichs verdächtig sind) als einfache Binärwerte, die dem Vorhandensein oder Fehlen eines Wortes im Text entsprechen.

Beispielsweise ist bei vielen Betrugsanzeigen der Preis des Artikels sehr niedrig eingestellt (um viele Aufrufe zu erzielen). Daher möchte ich, dass ein niedrigerer als der normale Preis ein starker Indikator dafür ist, dass es sich bei der Anzeige möglicherweise um einen Betrug handelt.

Passt Bayes immer noch gut zu meiner Anforderung? Wenn nicht, können Sie dann einen anderen Ansatz empfehlen?

Codebox
quelle

Antworten:

9

Sicher können Sie Naive Bayes verwenden. Sie müssen nur angeben, welche Form die bedingte Verteilung haben soll.

Ich kann mir ein paar Optionen vorstellen:

  1. Binäre Verteilung: Binarisieren Sie Ihre Daten anhand eines Schwellenwerts, und Sie kehren zu dem Problem zurück, das Sie bereits gelöst haben.
  2. Parametrische Verteilung: Wenn es eine vernünftige parametrische Verteilung gibt, z. B. Gauß, können Sie diese verwenden.
  3. Nichtparametrische Verteilung: Entscheiden Sie sich für Bins für die numerischen Daten und verwenden Sie diese, um eine empirische nichtparametrische Verteilung zu erstellen.
Bitweise
quelle
7

Naive Bayes-Klassifikatoren können sowohl numerische als auch diskrete Variablen problemlos aufnehmen. Im Wesentlichen gibt es drei Ansätze: (i) Diskretisieren der numerischen Werte (ii) Verwenden eines parametrischen Modells jedes numerischen Attributs (z. B. Gauß) oder (iii) Verwenden eines nicht parametrischen (z. B. Parzen) Dichteschätzers für jedes numerische Attribut.

siehe z. B. "Naive Bayes-Klassifikatoren, die mit kontinuierlichen Variablen gut funktionieren" von Remco Bouckaert

Dikran Beuteltier
quelle
1
@LOL gleiche Antwort wie meine mit der gleichen Reihenfolge der Auswahl und den gleichen Beispielen ... hah was sind die Chancen? Ich denke, wir denken alle gleich
Bitwise
1
Natürlich hätte ich keine fünf Minuten damit verbringen sollen, die Referenz aufzuspüren; o)
Dikran Marsupial
3

Naive Bayes können sicherlich sowohl mit numerischen als auch mit diskreten Attributen arbeiten (Modulo-Bedenken hinsichtlich der Angemessenheit der angenommenen Verteilung, wie in anderen Antworten erwähnt). Sie sollten jedoch überlegen, ob Sie Naive Bayes wirklich verwenden möchten, da die nichtdiskriminierende Methode immer mehr zusammenbricht, wenn Sie Daten aus verschiedenen Quellen mit potenziell starken Korrelationen kombinieren.

Wenn Sie eine probabilistische Interpretation beibehalten möchten, ziehen Sie die logistische Regression in Betracht, die ein genaues Analogon von Naive Bayes mit einem eher diskriminierenden als generativen Ziel ist (siehe dieses Papier zum Beispiel: Logistische Regression gegen Naive Bayes . Sie können verschiedene Implementierungen davon finden: I. wie Mallet , wenn Sie Java verwenden können (Zugriff als Befehlszeilentool oder API).

Wenn eine strikte probabilistische Interpretation nicht erforderlich ist, können Sie eine SVM verwenden. Es gibt viele Implementierungen davon, aber der De-facto-Standard (mit einer Variante, die in den meisten Sprachen verfügbar ist) ist LibSVM .

Ben Allison
quelle
1

Sie können ganz einfach numerische Werte verwenden. In den Begriff P (Feature | scam = Yes) können Sie eine Gaußsche Verteilung oder eine andere empirische Verteilung aus Trainingsdaten einfügen (zum Beispiel die Daten sortieren, eine Funktion erstellen, die das Perzentil des angegebenen numerischen Eingabewerts zurückgibt). Hier ist ein Artikel, der das beschreibt

Brokkoli
quelle