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.
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.