결탁 한 스팸 검토를 발견하는 알고리즘

소개




온라인 쇼핑 및 레스토랑 리뷰 사이트에서,
결탁하여 리뷰 결과가 부당하게 높거나 낮도록 더미 리뷰 게시
스팸 검토자를 발견하고 싶습니다.

이번에는 2013년에 AAAI Conference on Weblogs and Social Media이라는 국제회의에서 발표된 Fraud Eagle 알고리즘을 구현 했다.

리뷰 데이터



Fraud Eagle은 아래 그림과 같은 리뷰 그래프를 고려합니다.



즉, 리뷰를 투고한 사람(레뷰아)과 리뷰의 투고처(상품)를 각각 정점으로 하고,
리뷰 관계를 가지로 나타낸다. 리뷰 자체는 문장이나 별 몇 개라도 좋지만,
검토가 긍정인지 부정인지 판단 할 수 있어야합니다.
이번에는 리뷰는 0에서 1까지의 수치를 취하기로 하고, 0.5 이상이면 긍정,
그렇지 않으면 부정적이라고 판단하기로 결정했습니다.

사용법



이번에 작성한 rgmining-fraud-eagle은 PyPI에서 설치할 수 있습니다.
pip install --upgrade rgmining-fraud-eagle

fraud_eagle이라는 패키지가 설치되므로,
그 중에서 ReviewGraph 클래스의 인스턴스를 만듭니다.
Fraud Eagle은 0보다 크고 0.5 미만의 매개 변수를 취합니다.
파라미터는 데이터 세트에 따라 최적 값이 바뀌지 만, 이번에는 중앙 0.25를 설정해 보자.
import fraud_eagle as feagle

graph = feagle.ReviewGraph(0.25)

그런 다음 그래프에 검토, 상품 및 리뷰를 추가합니다.
위 그림과 같이 그래프를 만들 때,
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)

된다. 평가 및 상품은 ReviewGraphnew_reviewernew_product 메소드를 사용하여 작성됩니다.
리뷰는 add_review 메소드에 추가됩니다.

그래프를 작성한 후 ReviewGraphupdate 메소드를 업데이트가 수렴 할 때까지 실행하십시오.
Fraud Eagle은 Loopy belief propagation이라는 알고리즘을 사용합니다.
update 호출 한 번에 한 루프에 해당합니다.
update 메소드는 최대 수정량을 반환하므로 충분히 작아지면 종료됩니다.
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)

   # 最大修正量が 10^-5 ならば収束したと思う
   if diff < 10**-5:
       break

마지막으로 분석 결과를 얻습니다.new_reviewer 메서드가 반환 한 검토자에는 anomalous_score라는 속성이 있습니다.
이 속성은 0에서 1 사이의 값을 취하며 그 검토자가 얼마나 특이한지 (스패머)를 나타냅니다.
for r in graph.reviewers:
    print(r.name, r.anomalous_score)

또한 new_product 메소드가 리턴 한 상품 오브젝트에는 summary라는 속성이 있습니다.
이 값은 해당 상품에 대한 검토 점수의 검토 anomalous_score에 의한 가중 평균을 반환합니다. (anomalous_score가 큰 검토자 리뷰는별로 고려하지 않는 평균)
for p in graph.products:
    print(p.name, p.summary)

요약



결탁 된 스팸 검토자를 발견하는 Fraud Eagle 알고리즘을 구현했습니다.
또한이 유형의 스팸 검토자 발견 알고리즘 평가 인공 데이터도 발표했습니다.
인공 데이터의 사용법은 스팸 검토자 발견 알고리즘 평가를 위한 데이터 세트에 정리되어있다.
스팸 리뷰 대책에 종사하고 있는 사람의 참고가 된다고 생각한다.

좋은 웹페이지 즐겨찾기