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.
Betrachten Sie in Fraud Eagle das in der folgenden Abbildung gezeigte Überprüfungsdiagramm.
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.
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)
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.