Date post: | 31-Dec-2015 |
Category: |
Documents |
Upload: | yuri-lowery |
View: | 27 times |
Download: | 0 times |
Google’s Auction for TV ads
Noam Nisan
Tel-Aviv and Hebrew University
Joint work with: Jason Bayer, Deepak Chandra, Tal Franji, Robert Gardner, Yossi Matias, Neil Rhodes, Misha Seltzer, Danny Tom, Hal
Varian, Dan Zigmond
sells TV ads
• Google has deals with TV “publishers” (networks, cable companies) that let it sell some of their “ad-spot” inventory.– Over 100 channels, some local, some national
• Google auctions this inventory among interested advertisers on a daily basis.
• Buying TV spots this way is web-based.
Outside the scope of this talk
• Why is Google doing this?
• What are its future plans?
• What is its competitive advantage?
• What kinds of deals does Google have?
• How much money is Google making?
Scope of this talk
• The auction mechanism– In operation since Sept 2008
• What we did & theoretical perspective– The good, the bad, and the ugly
• No numbers– Some I don’t know, some I can’t tell….
• Only passing mention of the whole system– Whole system in operation about 2 years
Buying TV ads from Google
Why buy from Google?– Web-based: easy, fast, flexible, day-to-day– Aggregation with precise targeting– Excellent feedback / reporting allows optimization
• Actual number of viewers, tune-out info, …
Workflow for advertisers:1. Upload ad video2. Enter desired targets and your bid3. Everyday:
The auction runs, your ad is scheduled and aired, you get a detailed report, and you pay Google (and then Google pays publishers.)
Choose Target
Specify Bid
Daily Auction Process
Publishers Daily Inventory
Advertisers Bid DB
Auction runs daily
Schedule
Pricing
Google bills advertisers
Publishers receive & air ad schedule
Cpm price
#viewers
Rest of Talk
• Basic theoretical model
• Auction goals
• The ascending auction – Good and bad
• The ugly
Basic Model
Input• m slots for sale; slot j has
reserve price rj ≥ 0
• n bidders. Bidder i has:– Budget limit bi
– Value vij for each slot j
Output• Set of slots Si won by
each bidder i.
• Price pj for each slot j
Obvious Constraints • Si disjoint
• rj ≤ pj ≤ vij (for j in Si)
• ∑ j in Si pj ≤ bi
Optimization Goals• Revenue
• Efficiency (total value)
• Fairness (?)
• Incentive Compatibility
Incentive Compatibility
• Bidders are strategic– They will mis-report their value or budget if
that helps them
• Our Auction should produce the desired results even when bidders act strategically
• Best if Auction rules themselves discourage any strategic behavior– I.C. = truthful = strategy-proof
• Revelation Principle: this is wlog
Optimize?Difficult example:
– 100 slots– Alice: bid value=$25, budget=$50– Bob: bid value = $5, budget=$150
Optimize Revenue: Maximize ∑j pj ? – Alice: 2 slots * $25– Bob: 30 slots * $5– Other 68 slots can go anywhere
Optimize Social Welfare: Maximize ∑ j in Si vij ?
– Alice: 100 slots, at whatever cost ≤ $50– Budgets ignored in allocation
Econ 101Example:
– 100 slots– Alice: bid value=$25, budget=$50– Bob: bid value = $5, budget=$150
Solve: demand=supply:– D(p) = 200/p for p ≤$5– D(p) = 50/p for $5 < p ≤$25– D(p) = 0 for $25 < p
Solution: D(p)=100 when p=$2– Alice: 25 slots * $2– Bob: 75 slots * $2
Walrasian Equilibrium
Definition: S is the demand of i at prices p1…pm if it is within budget (∑ j in S pj ≤ bi) and it maximizes utility. I.e. for every T within budget we have that ∑ j in T (vij-pj)≤ ∑ j in S (vij-pj).
Definition: S1…Sn and p1…pm are at an equilibrium if:
• For every i, Si is the demand of i• All items j are allocated, except perhaps those
with rj = pj
The continuous case
If slots were infinitely divisible then:
• A Walrasian Equilibrium always exists
• It is Pareto Efficient (first welfare theorem)
• It exhausts the budgets of all bidders that bid > market price on at least some slot
• When bidders are small (“price takers”) there is no incentive for under-bidding.
Our case
• Sometimes a Walrasian equilibrium doesn’t exist at all.– Sometimes it does
• If it exists, then it is Pareto efficient and exhausts the budget of each bidder up to the price of the cheapest slot for which it bid at least market.
• “Sometimes” it is incentive compatible.
Computing the Demand of i
Input: p1…pm ; vi1…vim ; bOutput: S within budget (∑ j in S pj ≤ bi) that
maximizes ∑ j in S (vij-pj)
Complexity: Knapsack NP-hardOptimal Fractional solution:
– Greedily in order of decreasing vij/pj
Why not FPTAS?– Speed, Simplicity, and Extendibility– Stability over multiple calls – Budget limit not really sharp
Simultaneous Ascending AuctionDemange-Gale-Sotomayer, Kelso-Crawford, …
• Initialize: pj = rj ; Si = Ø ; Q all bidders
• While Q not empty– i Q.deque()
– Si demand(i)– At current prices; but +δ for j not in Si
– For all slots j taken from others do pj pj +δ
– For all k that had slots taken do Q.enque(k)
Analysis
• Prices only increase at most mvmax/δ rounds
• After round with i dequed, Si = demand(i)
• Remains true, when prices of un-owned slots increase– Invariant: for i not in Q: Si = demand(i)
• When algorithm terminates we have a (δ-) Walrasian equilibrium
Ignoring the bug
BUG: slots may be left un-allocated….
Definition: “Gross Substitutes” = it doesn’t happenTheorem: If “Gross Substitutes” then (δ-) Walrasian
equilibrium [Kelso and Crawford]
Example: Homogenous slots• Also Incentive compatible if values<<budgets or budgets<<values
Example: “Unit demand” – demand is never more than a single unit [Demange, Gale, and Sotomayer]
An algorithm for maximum-weight bipartite matching• Also final prices are VCG and thus incentive compatible
Remnant round
Reality is not “Gross substitutes” Some slots remain un-allocated at the end
What to do with these?• Ignore and leave un-allocated?
Our Solution: remnant-sale round• Fix what was already sold• Repeat:
• Reduce prices of unsold slots a bit• Rerun simultaneous ascending auction
• Until all unsold slots are at reserve price
Software Engineering
• “Bidder” is a central internal interface– Responsible only for the desires of a single
advertiser– Can answer “demand” queries
• Arbitration between the different bidders is the responsibility of the main algorithm and is price-based.
Multiple ad lengths
• Standard Ad lengths may be 15sec, 30sec, 60sec, 90sec,120sec
• We use15sec slots• Pricing difficulty:
– $10 for 30sec vs. $7 for 15sec + $2 for 15sec– $10 for 30sec vs. $9 for 15sec + $9 for 15sec
• Our solution:– In main ascending auction, pay taken slot prices– In remnant round, pay for all slots of displaced ad
Crowding
• TV stations and advertisers often require some minimum gap between similar ads– By time or by commercial break– Per-creative, per advertiser, sometimes even
per-industry
• Internal to demand logic• Can be solved exactly using dynamic
programming• We just add condition in greedy algorithm
Noisy Budgets
• Daily budgets are only approximate:– Google allows up to 20% daily deviation – Actual costs depend on actual numbers of
viewers and are only estimated
• Leaves room for policy decisions
• Leaves room for optimizations– Allow taking “last spot” if it is just a bit above
• Re-justifies the greedy demand logic
Unscheduled slots
• We do not really have free disposal: “half filling” a commercial break is not allowed.– Various rules
• Try to schedule “public service announcements” to fill commercial breaks.
• Release non-full breaks (and try re-scheduling)
Overlapping Auctions
• Sometimes we need to run an auction for some parts of the slot-inventory before the rest of the inventory is finalized.
• Problem: budget shared between the auctions.
• Solution: Use best estimate/prediction on non-finalized inventory; commit only to inventory you need to commit to.
Thank You!