[PYTHON] Getarnter Spam-Reviewer-Erkennungsalgorithmus

Überblick

Logo

Fortsetzung von Algorithmus zum Auffinden kolludierter Spam-Prüfer So finden Sie Spam-Rezensenten auf Online-Shopping- und Restaurant-Bewertungsseiten Wir haben einen Algorithmus FRAUDAR vorbereitet, der Spam-Prüfer findet, die normale Prüfer tarnen.

FRAUDAR ist der mit dem besten Papierpreis ausgezeichnete Algorithmus auf der ACM SIGKDD International Conference 2016 zu Knowledge Discovery und Data Mining (KDD 2016) (http://www.kdd.org/kdd2016/) und wurde von den Autoren implementiert. Ist öffentlich zugänglich](https://www.andrew.cmu.edu/user/bhooi/projects/fraudar/index.html).

Dieses Mal kann Algorithmus zum Erkennen kolludierter Spam-Prüfer einfacher analysiert werden. Wir haben die Schnittstelle erstellt, die (https://qiita.com/jkawamoto/items/d2284316cc37cd810bfd) gemeinsam ist.

Wie benutzt man

Der diesmal erstellte FRAUDAR-Wrapper rgmining -betrug befindet sich jetzt in PyPI. Da es registriert ist, kann es mit dem Befehl pip installiert werden.

$ pip install --upgrade rgmining-fraudar

Ein Paket namens "Betrug" wurde hinzugefügt, und "furadar.ReviewGraph" ist eine Diagrammklasse, die diesen Algorithmus implementiert. Der Konstruktor der ReviewGraph-Klasse erhält einen optionalen Parameter für die Anzahl der zu berücksichtigenden Arten von Tarnmustern und einen intern verwendeten Subalgorithmus. Ich denke jedoch, dass nur der erstere gemäß dem Datensatz angegeben werden sollte (beide Standardeinstellungen sind in Ordnung).

import fraudar

#Stellen Sie sich zum Beispiel eine Tarnung mit 10 Mustern vor.
n = 10 
graph = fraudar.ReviewGraph(n)

Fügen Sie dann dem Diagramm Prüfer, Produkte und Bewertungen hinzu. Es kann auf die gleiche Weise wie im Beispiel in Algorithmus zum Auffinden kolludierter Spam-Prüfer hinzugefügt werden.

reviewers = [graph.new_reviewer("reviewer-{0}".format(i)) for i in range(2)]
products = [graph.new_product("product-{0}".format(i)) for i in range(3)]
graph.add_review(reviewers[0], products[0], 0.2)
graph.add_review(reviewers[0], products[1], 0.9)
graph.add_review(reviewers[0], products[2], 0.6)
graph.add_review(reviewers[1], products[0], 0.1)
graph.add_review(reviewers[1], products[1], 0.7)

Es wird. Prüfer und Produkte werden mit den Methoden "new_reviewer" und "new_product" von "ReviewGraph" erstellt. Die Überprüfung wird durch die Methode "add_review" hinzugefügt.

Um den Algorithmus auszuführen, rufen Sie die Methode "update" nur einmal auf.

graph.update()

Schließlich wird das Analyseergebnis erfasst. Der von der Methode "new_reviewer" zurückgegebene Prüfer hat das Attribut "nanomalous_score". Dieses Attribut wird auf 1 gesetzt, wenn der Prüfer als Singular (Spammer) bestimmt wird, andernfalls auf 0.

for r in graph.reviewers:
    print(r.name, r.anomalous_score)

Außerdem hat das von der Methode "new_product" zurückgegebene Produktobjekt ein Attribut namens "summary". Dieser Wert gibt den Durchschnitt der Bewertungen der Prüfer zurück, die nicht als singulär beurteilt wurden.

for p in graph.products:
    print(p.name, p.summary)

Zusammenfassung

In Anlehnung an Fraud Eagle-Algorithmus zum Auffinden kolludierter Spam-Prüfer haben wir einen Wrapper für den FRAUDAR-Algorithmus erstellt. Beide können Datensatz zur Bewertung des Spam-Reviewer-Erkennungsalgorithmus [Common API](https://rgmining.github.io/dataset- io / modules / dataset_io.html # graph-interface) wird bereitgestellt, damit Sie das Verhalten leicht vergleichen können.

Recommended Posts

Getarnter Spam-Reviewer-Erkennungsalgorithmus
Datensatz zur Auswertung des Spam-Reviewer-Erkennungsalgorithmus
Algorithmus zum Auffinden kolludierter Spam-Prüfer