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é.
Dans Fraud Eagle, considérez le graphique de révision présenté dans la figure ci-dessous.
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.
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)
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.