280 likes | 556 Views
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.
E N D
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: • Upload ad video • Enter desired targets and your bid • Everyday: The auction runs, your ad is scheduled and aired, you get a detailed report, and you pay Google (and then Google pays publishers.)
Daily Auction Process Publishers receive & air ad schedule Publishers Daily Inventory Schedule #viewers Pricing Auction runs daily Cpm price Google bills advertisers Advertisers Bid DB
Rest of Talk • Basic theoretical model • Auction goals • The ascending auction • Good and bad • The ugly
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 Sipj ≤ bi Optimization Goals Revenue Efficiency (total value) Fairness (?) Incentive Compatibility Basic Model
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 ∑jpj ? • Alice: 2 slots * $25 • Bob: 30 slots * $5 • Other 68 slots can go anywhere Optimize Social Welfare: Maximize ∑ j in Sivij ? • Alice: 100 slots, at whatever cost ≤ $50 • Budgets ignored in allocation
Econ 101 Example: • 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 Spj ≤ 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 ; b Output: S within budget (∑ j in Spj ≤ bi) that maximizes ∑ j in S (vij-pj) Complexity: Knapsack NP-hard Optimal 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 happen Theorem: 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.