[PYTHON] Algorithme pour trouver des critiques de spam complices

introduction

Logo Sur les sites d'achats en ligne et de critiques de restaurants Collaborez et publiez des évaluations factices pour que les résultats des évaluations soient excessivement élevés ou faibles Je veux trouver un critique de spam.

Cette fois, [Fraud Eagle](https: //www.aaai.) A été annoncé lors d'une conférence internationale appelée AAAI Conference on Weblogs and Social Media en 2013. org / ocs / index.php / ICWSM / ICWSM13 / paper / viewFile / 5981/6338) L'algorithme a été implémenté.

Examiner les données

Dans Fraud Eagle, considérez le graphique de révision présenté dans la figure ci-dessous.

graph2.png

En d'autres termes, la personne qui a publié l'avis (critique) et la destination (produit) de l'avis sont respectivement en haut. La relation d'examen est représentée par les succursales. La critique elle-même peut être du texte ou n'importe quel nombre d'étoiles, Il est nécessaire de pouvoir juger si la critique est positive ou négative. Cette fois, l'examen prendra un nombre compris entre 0 et 1, et s'il est égal ou supérieur à 0,5, il sera positif. Sinon, j'ai décidé de le juger comme négatif.

Comment utiliser

Le rgmining-fraud-eagle créé cette fois peut être installé à partir de PyPI.

pip install --upgrade rgmining-fraud-eagle

Un package appelé fraud_eagle sera installé, donc Créez une instance de la classe ReviewGraph à partir de celle-ci. Fraud Eagle prend un paramètre supérieur à 0 et inférieur à 0,5. La valeur optimale du paramètre change en fonction de l'ensemble de données, mais cette fois, nous définirons le centre 0,25.

import fraud_eagle as feagle

graph = feagle.ReviewGraph(0.25)

Ensuite, ajoutez des réviseurs, des produits et des avis au graphique. Lors de la création d'un graphique comme indiqué dans la figure ci-dessus

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)

Il devient. Les réviseurs et les produits sont créés en utilisant les méthodes new_reviewer, new_product de ReviewGraph. La révision est ajoutée par la méthode ʻadd_review`.

Après avoir créé le graphique, exécutez la méthode ʻupdate ReviewGraph` jusqu'à ce que la mise à jour converge. Fraud Eagle utilise un algorithme appelé propagation de croyances Loopy. Une boucle est prise en charge par un appel de mise à jour. La méthode de mise à jour renvoie la quantité maximale de modification, elle se termine donc lorsqu'elle devient suffisamment petite.

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)

   #Le montant maximal de la correction est de 10^-Si c'est 5, je pense qu'il a convergé
   if diff < 10**-5:
       break

Enfin, le résultat de l'analyse est acquis. Le réviseur retourné par la méthode new_reviewer a un attribut de ʻanomalous_score`. Cet attribut prend une valeur de 0 à 1 et indique à quel point le réviseur est singulier (spammeur).

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

De plus, l'objet produit renvoyé par la méthode new_product a un attribut appelé summary. Cette valeur renvoie la moyenne pondérée de la note d'évaluation attribuée au produit par l'évaluateur ʻanomalous_score`. (Valeur moyenne qui ne prend pas en compte les avis des critiques avec un «score_anomal» élevé)

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

Résumé

Nous avons implémenté l'algorithme Fraud Eagle pour trouver des critiques de spam complices. Nous publions également des données artificielles pour l'évaluation de ce type d'algorithme de détection des critiques de spam. L'utilisation de données artificielles est résumée dans Dataset for evaluation of spam reviewer detection algorithm. J'espère que cela sera utile pour ceux qui travaillent sur des mesures de contrôle anti-spam.

Recommended Posts

Algorithme pour trouver des critiques de spam complices
Ensemble de données pour l'évaluation de l'algorithme de détection des réviseurs de spam
Algorithme Dikstra pour les débutants
Algorithme de détection de spam camouflé