Skip to content
A feedback controller for stabilizing RTB performance to a target value.
Python Shell
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
exp-data
python
report
scripts
LICENSE
README.md

README.md

Experiment Code for RTB Feedback Control Techniques

This is a repository of the experiment code supporting the paper "Feedback Control of Real-Time Display Advertising" submitted to WSDM 2016.

For any problems, please report the issues here or contact Weinan Zhang.

After pulling the repository, you could start from checking the demo under the folder of scripts by running:

$ bash run_demo_example.sh

You should get the following experiment results:

Example of PID control eCPC.
Data sample from campaign 1458 from iPinYou dataset.
Reference eCPC: 40000
test performance:
round	ecpc	phi	total_click	click_ratio	win_ratio	total_cost	ref
0	54062.0000	0.0000	2	0.0308	0.0250	162186.0000	40000.0
1	54230.3333	-2.0000	2	0.0308	0.0251	162691.0000	40000.0
2	40755.2500	-2.0000	3	0.0462	0.0254	163021.0000	40000.0
3	51294.7500	0.9408	3	0.0462	0.0343	205179.0000	40000.0
4	51399.7500	-2.0000	3	0.0462	0.0347	205599.0000	40000.0
5	51478.0000	-2.0000	3	0.0462	0.0349	205912.0000	40000.0
6	51557.2500	-2.0000	3	0.0462	0.0352	206229.0000	40000.0
7	51574.7500	-2.0000	3	0.0462	0.0353	206299.0000	40000.0
8	51626.0000	-2.0000	3	0.0462	0.0354	206504.0000	40000.0
9	51692.7500	-2.0000	3	0.0462	0.0357	206771.0000	40000.0
10	51809.0000	-2.0000	3	0.0462	0.0359	207236.0000	40000.0
11	51882.5000	-2.0000	3	0.0462	0.0361	207530.0000	40000.0
12	41629.4000	-2.0000	4	0.0615	0.0363	208147.0000	40000.0
13	43198.4000	0.0756	4	0.0615	0.0389	215992.0000	40000.0
14	43286.2000	-1.8943	4	0.0615	0.0391	216431.0000	40000.0
15	43337.6000	-1.7934	4	0.0615	0.0393	216688.0000	40000.0
16	43408.8000	-1.8188	4	0.0615	0.0394	217044.0000	40000.0
17	43477.0000	-1.8597	4	0.0615	0.0398	217385.0000	40000.0
18	43581.4000	-1.8970	4	0.0615	0.0401	217907.0000	40000.0
19	36385.5000	-1.9564	5	0.0769	0.0403	218313.0000	40000.0
20	49287.1429	2.3752	6	0.0923	0.0602	345010.0000	40000.0
21	49311.4286	-2.0000	6	0.0923	0.0603	345180.0000	40000.0
22	49376.1429	-2.0000	6	0.0923	0.0605	345633.0000	40000.0
23	49387.5714	-2.0000	6	0.0923	0.0607	345713.0000	40000.0
24	49407.2857	-2.0000	6	0.0923	0.0609	345851.0000	40000.0
25	49461.4286	-2.0000	6	0.0923	0.0612	346230.0000	40000.0
26	49508.4286	-2.0000	6	0.0923	0.0616	346559.0000	40000.0
27	43407.2500	-2.0000	7	0.1077	0.0619	347258.0000	40000.0
28	43491.2500	-1.3143	7	0.1077	0.0624	347930.0000	40000.0
29	43528.3750	-1.9783	7	0.1077	0.0626	348227.0000	40000.0
30	43551.6250	-1.9957	7	0.1077	0.0628	348413.0000	40000.0
31	38747.3333	-2.0000	8	0.1231	0.0631	348726.0000	40000.0
32	43250.1111	0.8766	8	0.1231	0.0727	389251.0000	40000.0
33	38951.5000	-2.0000	9	0.1385	0.0730	389515.0000	40000.0
34	35326.5000	0.7218	11	0.1692	0.0810	423918.0000	40000.0
35	34818.2500	2.4716	15	0.2308	0.1020	557092.0000	40000.0
36	39457.0588	2.4192	16	0.2462	0.1227	670770.0000	40000.0
37	39675.2353	-0.4143	16	0.2462	0.1241	674479.0000	40000.0
38	40023.9412	-0.0810	16	0.2462	0.1274	680407.0000	40000.0
39	40259.4706	-0.2685	16	0.2462	0.1288	684411.0000	40000.0

train performance:
round	ecpc	phi	total_click	click_ratio	win_ratio	total_cost	ref
0	39157.0000	0.0000	3	0.0380	0.0250	156628.0000	40000.0
1	44887.2500	0.4223	3	0.0380	0.0309	179549.0000	40000.0
2	44999.7500	-2.0000	3	0.0380	0.0312	179999.0000	40000.0
3	45053.7500	-2.0000	3	0.0380	0.0314	180215.0000	40000.0
4	45189.2500	-2.0000	3	0.0380	0.0316	180757.0000	40000.0
5	36220.8000	-2.0000	4	0.0506	0.0319	181104.0000	40000.0
6	43019.8571	2.7709	6	0.0759	0.0542	301139.0000	40000.0
7	43100.8571	-2.0000	6	0.0759	0.0546	301706.0000	40000.0
8	43236.7143	-1.5802	6	0.0759	0.0555	302657.0000	40000.0
9	37924.2500	-1.6568	7	0.0886	0.0563	303394.0000	40000.0
10	42490.0000	1.5463	8	0.1013	0.0746	382410.0000	40000.0
11	42567.1111	-1.7269	8	0.1013	0.0754	383104.0000	40000.0
12	42702.2222	-1.3191	8	0.1013	0.0764	384320.0000	40000.0
13	42793.2222	-1.3952	8	0.1013	0.0771	385139.0000	40000.0
14	38672.3000	-1.4391	9	0.1139	0.0776	386723.0000	40000.0
15	32223.0000	1.0439	13	0.1646	0.0918	451122.0000	40000.0
16	37882.1250	4.5092	15	0.1899	0.1165	606114.0000	40000.0
17	35758.8333	0.4709	17	0.2152	0.1259	643659.0000	40000.0
18	41013.5263	2.3150	18	0.2278	0.1488	779257.0000	40000.0
19	39210.5500	-1.0511	19	0.2405	0.1513	784211.0000	40000.0
20	38076.5000	0.5569	21	0.2658	0.1640	837683.0000	40000.0
21	38038.5652	1.0590	22	0.2785	0.1733	874887.0000	40000.0
22	37106.1600	0.9703	24	0.3038	0.1849	927654.0000	40000.0
23	38529.9231	1.5288	25	0.3165	0.2015	1001778.0000	40000.0
24	36818.7857	0.5828	27	0.3418	0.2105	1030926.0000	40000.0
25	40309.0357	1.7550	27	0.3418	0.2285	1128653.0000	40000.0
26	40427.8214	-0.5105	27	0.3418	0.2307	1131979.0000	40000.0
27	40534.9643	-0.2332	27	0.3418	0.2319	1134979.0000	40000.0
28	40656.0714	-0.2861	27	0.3418	0.2334	1138370.0000	40000.0
29	40795.9286	-0.3487	27	0.3418	0.2359	1142286.0000	40000.0
30	40926.1786	-0.4213	27	0.3418	0.2386	1145933.0000	40000.0
31	41039.1429	-0.4864	27	0.3418	0.2404	1149096.0000	40000.0
32	41107.2857	-0.5422	27	0.3418	0.2415	1151004.0000	40000.0
33	41178.2857	-0.5729	27	0.3418	0.2429	1152992.0000	40000.0
34	41251.7143	-0.6099	27	0.3418	0.2445	1155048.0000	40000.0
35	41313.7857	-0.6481	27	0.3418	0.2457	1156786.0000	40000.0
36	41369.9286	-0.6793	27	0.3418	0.2467	1158358.0000	40000.0
37	41422.4286	-0.7082	27	0.3418	0.2473	1159828.0000	40000.0
38	40045.8276	-0.7355	28	0.3544	0.2484	1161329.0000	40000.0
39	39000.8000	0.0957	29	0.3671	0.2506	1170024.0000	40000.0

This is a demo of controlling eCPC to 400,000 (RMB cent in CPM) by PID controller. The example data files exp-data/train.txt and exp-data/test.txt are sampled from the campaign 1458 from iPinYou dataset. We can observe that the eCPC successfully gets converged within the error band [36000, 44000] in both train and test stages.

The current version of repository contains the code supporting the experiment Sections 4.2, 4.3 and 4.5.

Feature Engineering for Large-scale Experiment

For running further large-scale experiments, you will rely on another repository which is written for iPinYou dataset feature engineering.

Please check our GitHub project make-ipinyou-data. After downloading the dataset, by simplying make all you can generate the standardised data which will be used in the bid optimisation tasks.

You can’t perform that action at this time.