##Background
Review spams are prevalent on review platforms such as Amazon and Yelp. They are manipulating items (e.g., books on Amazon and restaurants on Yelp) evaluation and affecting customer decision making. It is of critical importance to remove review spams and make users of the review platforms aware of such threats.
![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F5118738%2F60469fc13b6bf8928aff33f8fbec08aa%2Ffigures.png?generation=1590372808142530&alt=media)
However, these fake reviews are rather challenging to detect due to the following reasons:
1) there is very little labeled data to train accurate machine learning detectors; 2) humans have great difficulty in telling fake reviews from genuine ones; 3) the number of fake reviews are paramount and are overwhelming human inspection bandwidth. Current machine learning and data mining approach to review spam detection is limited by the above factors and is not evaluated using more practical metrics in the business sense. This contest calls for attention to the above limitation of current methods and takes a stab to the above problems.

The contestants will act as spammers to create review spams to evade a grey-box spam detector. Not every review created by the contestants qualifies as spam, though. It is those reviews that can practically manipulate the rating of the target businesses that should be tamed and thus qualify as spams.

##Threat model
- The spammers are interested in promoting a given set of target products.
- The spammers are given a set of spamming accounts on the platform for posting a fixed number of spams towards
any
products on the platform.
- The spams must be posted in a given period.
- The spammers can choose the ratings of the spams from {1,2,3,4,5}
- The spammers will NOT create the review contents.
- The spammers can NOT create new spamming accounts to post spams.
- No new product can be added to the current review platform.
- The spammers know what detection models are used but don't know the implementation and parameters.

##Detection assumptions
- The detector will use only the rating and post time of the reviews, and the connections between accounts and products for detection. No contents, profiles, and external information of the accounts and products will be used for detection.
- The detector does not know the spammer accounts and the target products.
- The detector detects spams after the spammers post their spams to the existing reviews.
- The given review data are considered non-spams.

##What you will start with
We prepare a startup package for you to get your solution up and running quickly.
In the Notebook tab, you will find a notebook containing Python functions that can:
- Read the input review data as bipartite graph representation.
![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F5118738%2F6f9d60f0d3643321ac86c258a26189d3%2Fbipartite.png?generation=1590373739112751&alt=media)
- Read attack settings, including selected spamming accounts, target items, attacking time period, attack size, and top-k detection parameter. There will be multiple attacks that need to be created and the evaluation metric will be averaged over these attacks.
- Manipulate the graph by adding or removing reviews. These functionalities are useful for executing and evaluating spam attacks.
- Evaluation codes that compute the metric. As we don't use typical metrics, such as accuracy, AUC, F1 score, we feel necessary to make our evaluation method transparent.
- A simple randomized spamming attack to show you the submission format of an attack.
- A simple detector based on detection features that are used in prior spam detection methods. You can run this detector against your attack and see how much you can evade the detector and achieve high scores!

##Files to download
- parameters.csv: the file contains multiple lines with a header. Each line is an attack scenario. The meaning of the parameters are specified in the header.
- review_graph.txt: this file contains the input clean review graph. See the helper notebook for its format.
- target_spammers.pickle: this file specified the target products and spammer accounts. The detector will not seek spams out of the entire dataset, which is rather large compared to available human inspection efforts. Therefore, it specifies within what range the detector is operating. See the function "evaluation" in the Notebooks for more details.

##How to win
The challenge is a grey-box adversarial attack. Your job is to act like a spammer and probe the following main-stream published detectors:

- FRAUDAR: Bounding Graph Fraud in the Face of Camouflage. KDD 2016.
- GANG: Detecting Fraudulent Users in Online Social Networks via Guilt-by-Association on Directed Graphs. ICDM 2017.
- Collective Opinion Spam Detection: Bridging Review Networks and Metadata. KDD 2015
- Suspiciousness prior used in the above paper without MRF and BP.
- Spotting Suspicious Link Behavior with fBox: An Adversarial Perspective. ICDM 2014

We believe this is easier for the contestants compared with a black-box attack challenge, and yet interesting enough that you need to use the detection feedback to guess what the detectors are, simulating a real-world spam attack.