[PYTHON] Algorithmus zum Auffinden kolludierter Spam-Prüfer

Einführung

Logo Auf Online-Shopping- und Restaurantbewertungsseiten Kollude und poste Dummy-Bewertungen, so dass die Bewertungsergebnisse unangemessen hoch oder niedrig sind Ich möchte einen Spam-Rezensenten finden.

Diesmal wurde [Fraud Eagle](https: //www.aaai.) 2013 auf einer internationalen Konferenz mit dem Titel AAAI-Konferenz über Weblogs und soziale Medien angekündigt. org / ocs / index.php / ICWSM / ICWSM13 / paper / viewFile / 5981/6388) Der Algorithmus wurde implementiert.

Überprüfen Sie die Daten

Betrachten Sie in Fraud Eagle das in der folgenden Abbildung gezeigte Überprüfungsdiagramm.

graph2.png

Mit anderen Worten, die Person, die die Bewertung abgegeben hat (Prüfer), und das Ziel (Produkt) der Prüfung befinden sich jeweils oben. Die Überprüfungsbeziehung wird durch Zweige dargestellt. Die Bewertung selbst kann Text oder eine beliebige Anzahl von Sternen sein. Es muss beurteilt werden können, ob die Bewertung positiv oder negativ ist. Diesmal nimmt die Bewertung eine Zahl zwischen 0 und 1 an, und wenn sie 0,5 oder mehr beträgt, ist sie positiv. Wenn nicht, habe ich beschlossen, es als negativ zu beurteilen.

Wie benutzt man

Der diesmal erstellte rgmining -betrugsadler kann über PyPI installiert werden.

pip install --upgrade rgmining-fraud-eagle

Ein Paket mit dem Namenbetrug_eagle wird installiert Erstellen Sie daraus eine Instanz der Klasse "ReviewGraph". Fraud Eagle verwendet einen Parameter, der größer als 0 und kleiner als 0,5 ist. Der optimale Wert des Parameters ändert sich je nach Datensatz, aber diesmal setzen wir den Mittelpunkt auf 0,25.

import fraud_eagle as feagle

graph = feagle.ReviewGraph(0.25)

Fügen Sie als Nächstes Prüfer, Produkte und Bewertungen zum Diagramm hinzu. Beim Erstellen eines Diagramms wie in der obigen Abbildung gezeigt

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.

Führen Sie nach dem Erstellen des Diagramms die Methode "update" von "ReviewGraph" aus, bis das Update konvergiert. Fraud Eagle verwendet einen Algorithmus namens Loopy Belief Propagation. Eine Schleife wird von einem Aktualisierungsaufruf unterstützt. Die Aktualisierungsmethode gibt den maximalen Änderungsbetrag zurück und endet, wenn sie ausreichend klein wird.

print("Start iterations.")
max_iteration = 10000
for i in range(max_iteration):

   # Run one iteration.
   diff = graph.update()
   print("Iteration %d ends. (diff=%s)", i + 1, diff)

   #Der maximale Korrekturbetrag beträgt 10^-Wenn es 5 ist, denke ich, dass es konvergiert hat
   if diff < 10**-5:
       break

Schließlich wird das Analyseergebnis erfasst. Der von der Methode "new_reviewer" zurückgegebene Prüfer hat das Attribut "nanomalous_score". Dieses Attribut nimmt einen Wert von 0 bis 1 an und gibt an, wie singulär (Spammer) der Prüfer ist.

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 gewichteten Durchschnitt des "anomalous_score" der Bewertungsbewertung zurück, der dem Produkt gegeben wurde. (Durchschnittswert, der keine Bewertungen von Rezensenten mit großem "anomalous_score" berücksichtigt)

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

Zusammenfassung

Wir haben den Fraud Eagle-Algorithmus implementiert, um kolludierte Spam-Prüfer zu finden. Wir veröffentlichen auch künstliche Daten zur Bewertung dieser Art von Spam-Reviewer-Erkennungsalgorithmus. Die Verwendung künstlicher Daten ist in Datensatz zur Bewertung des Spam-Reviewer-Erkennungsalgorithmus zusammengefasst. Ich hoffe, es ist hilfreich für diejenigen, die an Maßnahmen zur Überprüfung von Spam arbeiten.

Recommended Posts

Algorithmus zum Auffinden kolludierter Spam-Prüfer
Datensatz zur Auswertung des Spam-Reviewer-Erkennungsalgorithmus
Dikstra-Algorithmus für Anfänger
Getarnter Spam-Reviewer-Erkennungsalgorithmus