Sponsored search is a critical component of e-commerce revenue, requiring a delicate balance between maximizing platform revenue and maintaining user experience and advertiser utility. This repository introduces ROAM, a ROI-constrained allocation model that formulates the allocation problem as a constrained optimization task. ROAM aims to maximize revenue while minimizing ad impressions, adhering to campaign budgets and ROI constraints. By utilizing a scalable iterative optimization algorithm within a parameter server framework, ROAM generates efficient allocation plans. Experiments conducted on real-world data demonstrate significant improvements in both platform revenue and advertiser ROI.
To use ROAM, you'll need to install the following dependencies:
-
XDL (X-DeepLearning)
For installation instructions, visit: https://github.com/alibaba/x-deeplearning
-
TensorFlow
For installation instructions, visit: https://github.com/tensorflow/tensorflow
- Install the required dependencies as per the installation instructions.
- Prepare your dataset according to the format specified in the Dataset section.
- Execute
main.pyto run the model.
ROAM requires two input tables:
-
Demand Table (
trip_ad_roam_demand): Contains information about advertising demands, including demand IDs, priorities, volumes, and ROI constraints. -
Supply Table (
trip_ad_roam_supply): Represents the order list corresponding to each request in an adjacency list format, including sample IDs, traffic constraints, and ad-related information.
For detailed schema information, please refer to the SQL CREATE TABLE statements in the original README.
The model outputs its results to the trip_ad_roam_output table, which includes the following columns:
demand_hash_id: Hashed demand IDalpha: Optimized alpha parametersigma: Optimized sigma parametereta: Optimized eta parameterzeta: Optimized zeta parameter
The dataset used for this project is shared via Baidu Netdisk.
- Link: https://pan.baidu.com/s/1othj1qrTFBR6nCNd-Ogjlw?pwd=tx6f
- Access Code: tx6f
The dataset is structured as follows:
- Column 0: user_id (int)
- Column 1: query_id (int)
- Column 2: Sample source (list, 0: advertising, 1: organic)
- Column 3: Sample label (list)
- Columns 4+: Side information [itemID, categoryID, brandID, vendorID, priceID, display_count, click_count, budget, and min_ROI] for each sample (list)
- Column 5: user_category_id (int)
- Column 6: timestamp (int)
This repository accompanies the research paper titled "ROI Constrained Optimal Online Allocation in Sponsored Search". It provides the implementation of the ROAM model and the necessary resources to reproduce the results presented in the paper.
For any questions or issues, please open an issue in this repository or contact the authors directly.