The present invention relates generally to advertising, and more specifically to the optimization of an advertisement delivery plan for allocating advertisements to frequency-capped contracts in a network-based environment.
The notion of “frequency capping” (i.e. limiting the number of times an advertisement is exposed to a particular viewer) has been a recognized notion within the advertising industry since the late 1970's, when research showed that an advertisement loses its effect on a viewer with repeated exposure. In the context of online display advertising, however, there has been relatively little work on frequency capping. Still, since advertising on the Internet provides the possibility of allowing advertisers to cost-effectively reach highly specific target audiences (e.g. individual viewers) the notion of frequency capping has gained attention, and Internet advertisers often demand (in the form of contractual obligations) that their advertisements do not become overexposed to a particular viewer/user. Fortunately, the Internet facilitates a two-way flow of information between users and advertisers and allows display decisions to be made in real time or near-to-real time. For example, a user may visit a web page, and may transmit various pieces of data describing himself or herself. Thus, it is conceptually possible for an advertising management system to be able to intelligently determine which ads to place (or not place) on a given website requesting advertisement content—e.g. using frequency caping or otherwise eliminating excessive re-display of the same ads—thus increasing the revenue for the parties involved and increasing user satisfaction.
Current systems, however, fail to fully exploit the interactive aspects of the Internet in the advertising realm. Most current advertising systems need to coordinate a number of components such as those for forecasting web traffic, for procuring ad placements based on target demographics, and for delivering display ads. Within this architecture, each component relies on the cooperative and reliable performance of the others. Unfortunately, current advertising systems are decoupled. A decoupled system results in a number of inconsistencies with respect to contracts for the promised placement and delivery of advertisements. Even just a slight overestimation of future web traffic may jeopardize an advertising system's ability to deliver the advertisements promised. Likewise, an underestimation of future web traffic hurts advertisers and publishers alike because of lost opportunities for ad placements.
Current systems create a strict and artificial separation between display inventory of available advertisement placements that is sold many months in advance in a guaranteed fashion (e.g. guaranteed delivery), and display inventory that is sold using a real-time auction in a market or through other means (e.g. non-guaranteed delivery). For instance, the Yahoo!® advertising system may serve guaranteed contracts their desired quota before serving non-guaranteed contracts, thus creating a possibly unnecessary and also possibly inefficient bias toward guaranteed contracts. While acceptable in the past, the shift in the advertising industry demands an efficient mix of guaranteed and non-guaranteed contracts.
Another flaw with the decoupled advertising system is the failure to take advantage of the stores of information available when pricing contracts and allocating advertisements to advertisement placements. For example, the current pricing systems use advertising information and contract information at a granularity and specificity that is coarse and untargeted. The failure to mine and use information regarding how advertisement placements may be allocated at a more granular level creates a gap between the price paid for an advertisement placement and the actual value that a contract derives from the advertisements placed.
This flaw leads to the inability of legacy systems to provide more refined and targeted advertisements, and increased refinement in targeting allows advertisers to reach a more relevant customer base. The frustration of advertisers moving from broad targeting parameters (e.g. “1 million Yahoo! Finance users”) to more fine-grained targeting parameters (e.g. “100,000 Yahoo! Finance users from September 2008-December 2008 who are males living in California and between the ages of 20-35 working in the healthcare industry”) is evident. Unfortunately, the increased refinement and targeting is not computationally pragmatic within the context of legacy system designs.
Accordingly, there exists a need for a more unified marketplace for the optimization of an advertisement plan and allocation of advertisements to a contract in a network-based environment.
A computer-implemented method and display advertising server network for serving impression opportunities to a frequency-capped guaranteed delivery contract in a system for delivery of display advertising to a user. The method includes steps for receiving, from a computer, an event predicate and a user ID corresponding to the user, retrieving, from an index engine, a set of eligible frequency-capped contracts, wherein an eligible contract comprises at least one target predicate matching at least a portion of the event predicate, and probabilistically selecting for serving, in a computer, the booked contract having a frequency cap specification, only when the selected frequency-capped contract can be served to the user without violating the frequency cap specification. Exemplary embodiments include generating a pseudo-random number sequence, and then selecting a particular pseudo-random number from the series of pseudo-random numbers, the selected pseudo-random number being based on the user ID, a visit count, a URL.
The novel features of the invention are set forth in the appended claims. However, for purpose of explanation, several embodiments of the invention are set forth in the following figures.
In the following description, numerous details are set forth for purpose of explanation. However, one of ordinary skill in the art will realize that the invention may be practiced without the use of these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to not obscure the description of the invention with unnecessary detail.
Guaranteed delivery display advertising is a form of online advertising whereby advertisers can buy a fixed number of targeted user visits in advance, and publishers guarantee these user visits. In case the guarantee is not met, the publisher incurs some penalty (monetary or otherwise), so it is in the best interest of the publisher to try and meet the guarantees. For example, a sports shoe manufacturer (an advertiser) can buy one hundred million user visits for males in California who visit Yahoo! Sports between 1 Jun. 2010 and 15 Jun. 2010, and Yahoo! (as a publisher) will guarantee these user visits even though the duration of interest occurs several months later than the current date.
The guaranteed delivery model of online display advertising is prevalent among the major advertising networks such as Yahoo!, AOL, and MSN, and represents a multi-billion dollar industry. One of the key advertiser requirements in the guaranteed delivery model is to limit the number of times a user sees an ad. Such a requirement is important for two reasons: (1) to ensure that a specific user does not get saturated with the ad, and (2) to ensure that the advertiser reaches many different users, rather than showing the ad to a few users many times. The feature to limit ad exposure to a particular user is called frequency capping, and a frequency capping specification typically specifies the frequency count and the frequency duration. For instance, if an advertiser wishes to limit the number of times a given user sees its ad to at most five times a day, then this would be specified with a frequency count of 5 and a frequency duration of 1 day. Then, observing the frequency capping specification, the ad would be shown to a given user at most 5 times in one day. That is, observing the frequency capping specification of a given frequency-capped contract means that the ad is displayed to a user at most a specified number of times (e.g. frequency count times) within a specified duration (e.g. within the period of a frequency duration).
Supporting frequency capping in a guaranteed delivery system presents challenges. One challenge is to be able to forecast user visits many months in advance so that guaranteed contracts with frequency caps can be underwritten by publishers. A basic forecasting model (disclosed herein) is necessary even for regular guaranteed contracts without frequency capping constraints, but various extensions—such as forecasting the number of user visits to various web sites—aid in providing a frequency capping option when booking guaranteed delivery contracts.
Another challenge presented in frequency capping stems from the fact that the booking system (which accepts guaranteed contracts many months in advance) and the ad serving system (which serves ads to users when they visit web pages) need to be closely synchronized so as to limit under-delivery penalties (and thus to maximize revenue). Specifically, if the booking system accepts larger and more contracts than can be served, this would result in under-delivery by the ad server. Conversely, if the booking system accepts fewer of smaller contracts than can be served, this would result in a loss of potential revenue to the publisher. However, achieving this synchronization in the presence of frequency capping is quite challenging due to the very different information and resources available at the time of booking versus at the time of serving. In particular, at the time of booking, only an approximate prediction of user behavior is available, although this information is available for all future dates of interest. In contrast, at the time of serving, the exact user visit information is available, but there is typically little or no information about future visits.
The above differences between the booking and serving systems have profound implications on frequency capping solutions. For instance, a simple approach might be as follows: At the time of booking, solve an allocation problem using forecast user visits and existing frequency-capped contracts to see if the addition of a new frequency capped contract is still feasible; if so, admit the new frequency capped contract, else reject it. Similarly, at the time of serving, solve the same allocation problem using current and predicted future user visits and booked frequency-capped contracts, then serve the ad corresponding to the contract allocated to the current user visit. However, this approach is often infeasible because it is not practical to obtain and optimize for all future visits at the time of serving. Alternative serving policies are presented infra.
Therefore, multiple competing advertisers might elect to bid in a market via an exchange auction engine server 107 in order to win the most prominent spot, or an advertiser might enter into a contract (e.g. with the Internet property, or with an advertising agency, or with an advertising network, etc) to purchase the desired spots for some time duration (e.g. all top spots in all impressions of the web page empirestate.com/hotels for all of 2010). Such an arrangement, and variants as used herein, is termed a contract.
In embodiments of the systems within environment 100, components of the additional content server perform processing such that, given an advertisement opportunity (e.g. an impression opportunity profile, or an event predicate), processing determines which (if any) contract(s) match the advertisement opportunity. In some embodiments, the environment 100 might host a variety of modules to serve management and control operations (e.g. an objective optimization module 110, a forecasting module 111, a data gathering and statistics module 112, an advertisement serving module 113, an automated bidding management module 114, an admission control and pricing module 115, a probability mass assignment module 116, a probabilistic linking serving policy module 117, etc) pertinent to serving advertisements to users, including serving ads under guaranteed delivery terms and conditions. In particular, the modules, network links, algorithms, assignment techniques, serving policies, and data structures embodied within the environment 100 might be specialized so as to perform a particular function or group of functions reliably while observing capacity and performance requirements. For example, an additional content server 108, possibly in conjunction with a probabilistic linking serving policy module 117 might be employed to implement a probabilistic linking approach for serving impressions in guaranteed delivery advertising.
Booking and Serving within a Guaranteed Delivery Setting
In a guaranteed delivery setting, the publisher faces two major problems. The first is that of accurate booking—the publisher's goal is to sell all of its inventory to guaranteed contracts. The leftover inventory is typically sold on a non-guaranteed marketplace and fetches much lower prices. The second is that of accurate serving—given a set of booked contracts and a visit by a user, decide which of the eligible contracts to show to the user so that all of the contracts are satisfied.
A simple approach addressing these problems might be as follows: At the time of booking, solve an allocation problem using forecasted user visits and existing booked contracts to see if the addition of a new booked contract is still feasible; if so, admit the new contract, else, reject it. Similarly, at the time of serving, solve the same allocation problem using current and predicted future user visits and booked contracts, and serve the ad corresponding to the contract allocated to the current user visit. In some cases, this approach may be impractical because it may not be practical to obtain and optimize for all future visits at the time of serving. Note that if the ad server serves using a different—say, greedy—serving policy instead of solving the allocation problem, then it will under-deliver because it may not be able to find the feasible solution as was found in the earlier timeframe by the booking system.
Another approach might be to solve the allocation problem at the time of booking and then send the solution to the ad server so that it can simply ‘follow’ the solution. For instance, the solution produced by the booking system might look like:
The ad server can then simply follow the solution and serve the ad corresponding to Contract 1 to the first visit of User A, and so on. However, this approach may not be feasible because (a) the solution is extremely large given tens of billions of impressions processed per day and, (b) while it is possible to predict the overall distribution of user visits, it is impossible to reliably predict which specific users are going to visit at a particular time.
Moreover, the above simple approach only partially addresses the problem of user frequency capping in guaranteed delivery display advertising, whereby advertisers can limit the number of times an ad is shown to the same user. Failing to observe frequency capping may lead to over-serving contracts and/or to violating contractual arrangements, either or both of which can lead to lost revenue and/or dissatisfied advertisers and/or users.
Given the limitations of the aforementioned simple approaches, two questions arise: Is there a way to leverage the time, resources, and approximate long-term forecast information available at the time of booking to produce a compact and generalizable plan for the ad server that can be used in real time to serve ads for actual user visits? Also, are there serving policies that can be used in real time to serve ads for actual user visits and which can guarantee satisfaction of frequency caps? The key requirements here are compactness, which ensures that the information can be meaningfully stored in the ad server; generalizability, which ensures that decisions made on approximate forecast information translate to meaningful actions on real user visits; and real-time execution, which requirement demands that the ad server can make reliable display advertising decisions within a span of time on the order of hundreds of milliseconds).
One solution to this problem is based on the aforementioned linking technique, whereby linking techniques predetermine which frequency-capped contracts are eligible for which user visits based on frequency cap constraints. Specifically, given a frequency capped contract with frequency count C and frequency duration D, the contract is deemed to be eligible for (i.e. linked to) at most C visits of a given user in duration D. The linking characteristics C and D, so defined, can be represented as network flow constraints on a bipartite graph involving supply (user visits) and demand (frequency-capped contracts). Thus, such a graph serves as a compact and generalizable plan that can be interpreted in real time by the ad server. It is also possible to solve the allocation problem quite efficiently at the time of booking.
The herein disclosed linking techniques may operate under one or more of a collection of linking policies, each of which policy aims to provide a different trade-off between forecast accuracy and under-delivery penalties while still guaranteeing that the frequency cap is satisfied.
Let I be the set of user visits and J be the set of contracts. Then denote a user visit using subscript i and denote a contract using subscript j. Each user visit i can be represented as a collection (e.g. set, vector) of attribute-value pairs (e.g. event predicates) that include the properties of the user, the properties of the web pages the user is visiting, and the time of the visit. For instance, a visit by a male user from New York interested in travel and visiting a Sports page on 31 Jan. 2010 at 10 pm might have a predicate represented as: Gender=Male, Location=New York, Category=Sports, Interests=Travel, Time=31 Jan. 2010 10 pm. Similarly, each contract j can be represented as one or more Boolean expressions characterizing the user visit attributes (e.g. event predicates). For instance, a contract that targets males visiting Sports pages in the month of January might have an event predicate represented as: Genderε{Male}Categoryε{Sports}Durationε[1 Jan. 2010, 31 Jan. 2010]. In addition, each contract j further specifies its demand, i.e. the number of user visits that are guaranteed to be shown, which is denoted by dj. A plurality of contracts might be represented in an inverted index such that one or more contracts might be retrieved via the index using one or more predicates.
In more formal terms, one might say that a user visit iεI is eligible for contract jεJ if (and only if) it satisfies the target predicates of j; it can also sometimes be said that j is eligible for i in this case. Thus, a bipartite eligibility graph can be constructed.
The left-hand vertices (depicted as circles) consist of I (i.e. a supply of impressions); the right-hand vertices (depicted as rectangles) consist of J (i.e. demand from contracts). The edge-set, E, consists of edges (i, j) such that i is eligible for contract j. The set of user visits eligible for contract j is denoted by E(j). Likewise, the set of contracts eligible for i is denoted by E(i). Note that the eligibility graph shows the target predicates set annotated beside the contracts.
In an exemplary allocation problem, a publisher may be associated with a set of booked contracts, and the publisher may posess information about future user visits, which forecast might be obtained from a forecasting module 111. One possible allocation problem goal can be described as follows: Find an allocation of user visits to contracts such that every user visit is allocated to at most one contract, and each contract j is allocated to at least dj impressions. Let xε{0,1}E denote the allocation. Then, by convention, set xij=1 to mean that the ad associated with contract j is shown for the impression i, and xij=0 otherwise.
The publisher may have some objective function, H:{0,1}E→R, over the set of feasible allocations. Such an objective function generally relates the goals of revenue, advertiser satisfaction, and user happiness, though other objective functions are reasonable and envisioned. Thus, the allocation problem may be formally written as:
However, the allocation problem itself presents many difficulties. A bipartite eligibility graph 300 corresponding to commercially reasonable characteristics might include billions of user visits (e.g. impression opportunities 350), and tens of thousands of contracts, resulting in trillions of edges in the bipartite eligibility graph 300.
One way to make the problem more tractable is to reduce the size of the overall problem by sampling from the set of user visits. For example, a sampling might be comprised from a uniform sample of, for example, 10% of user visits, then scale each of the demands appropriately (in this example dividing them by a factor of 10). Although a sampling may not be a perfect representation of the whole set sampled, the resulting problem is smaller by an order of magnitude, and thus might be easier to solve (especially for a small bipartite eligibility graph). However, even after sampling, the bipartite eligibility graph might still include many hundreds of thousands of edges, and the solution might become long, and might involve significant computing cycles.
A second complementary way of reducing the solution-time problem is to relax the integrality constraint, replacing it with the more flexible constraint, 0≦xij≦1, thus expressing xij as a probability of allocating i to j. Then in the allocation problem, the demand constraint holds in expectation.
A Chernoff bound may be used in this randomized algorithm to determine a bound on the number of runs necessary to determine a value by majority agreement—up to a specified probability. Since the typical demand is on the order of hundreds of thousands of impressions, an application of Chernoff bounds proves that any integral realization of the fractional solution will violate the demand by, at most, 1% with high probability. Using the above two techniques, the reduced allocation problem is usually solvable in practice (e.g. using one or more modules within an additional content server 108).
In the booking problem, the publisher has a set of already booked contracts and certain statistical predictions as well as other information about future user visits. In this booking problem, an advertiser wishes to book a new contract j′ targeting a specific subset of users iεE(j′). The goal of the publisher is to find the maximum amount of inventory that can be allocated to the new contract. That is, the publisher needs to solve the following variant of the allocation problem:
The above booking problem may be expressed as a bipartite graph network flow, and thus solved quickly using modern computing techniques, especially since the above booking problem is subject to relatively few constraints. However, permitting the booking of contracts, including terms pertaining to frequency capping, introduces an additional (possibly large) set of constraints since there is a constraint (i.e. the frequency cap) for every user/contract pair. As earlier foreshadowed, various embodiments trade off the optimality of the solution with the total number of new constraints. That is, rather than approaching a booking and serving problem with literally trillions of constraints, a vastly fewer number of constraints can be considered while still guaranteeing that none of the frequency capping constraints are violated.
For purposes of fully explaining the serving problem including frequency capping constraints, it is useful to explain the serving problem without frequency capping constraints. That is, in the serving problem, the publisher wishes to implement a series of decisions that implement a feasible solution to the allocation problem. As each user visit occurs, the publisher (or agent for the publisher) must make an immediate and irrevocable decision as to which contract to serve. The goal is to make the series of serving decisions such that, at least approximately, the planned allocation is achieved. Of course, the challenge here lies in the dearth of information and lack of resources available at serving time.
For example, a serving policy that precomputes an allocation for each user visit may underperform as it may be impossible to forecast exactly how many times a user will appear. Furthermore, a desired allocation plan should be general enough to be able to handle new users that have never been part of the system before (and thus not considered in earlier forecasting). Several serving policies are given in Table 1.
One possible solution to the serving problem is to run an offline optimization to produce an allocation plan, which can then be interpreted by an advertisement serving module 113. One way to generate an allocation plan is to observe an objective function for meeting guarantees of the guaranteed delivery contracts. In some embodiments, the essence of an allocation plan resides in a single number for each contract, called its mass.
When the ad server processes a user visit, it first finds the set of contracts eligible for the user visit. It then probabilistically allocates the user visit to one of the eligible contracts, where the probability of allocating the user visit to a contract is proportional to the mass of the contract. That is, if the user visit is eligible for k contracts with masses m1, . . . , mk, then the user visit is allocated to contract j with probability mj/Σimi.
The method 400 then probabilistically allocates the user visit to one of the eligible contracts, where the probability of allocating the user visit to a contract is proportional to the probability mass assigned to the contract (see operation 430).
In further detail, and following earlier disclosure, every contract is assigned a mass. A mass may be represented as a single positive number. At serving time, when a user visit arrives, first find the event predicates (see operation 410) and then find the set of eligible contracts (see operation 420). Next, allocate the user visit to one of these contracts at random, with a probability proportional to the contract's mass. That is, if the user visit eligible to be served to k contracts with masses m1, . . . , mk, then the user visit is allocated to contract j with probability mj/Σimi. In some cases there might exist more supply than can be consumed by the set of eligible guaranteed contracts. In such a case, an artificial contract (a ‘ghost contract’) can be added to the set of eligible contracts, the ghost contract serving as a proxy for a set of non-guaranteed contracts. Thus, when the ad server allocates a visit to such a ghost contract, it in effect allocates the user visit to a non-guaranteed contract.
Now described is an iterative algorithm to calculate the masses that are then assigned to contracts. Initially, construct the left side of a graph similar to the form of the bipartite eligibility graph 300, and also construct the right side of a graph similar to the form of the bipartite eligibility graph 300. For each contract on the right side of the graph, initialize the mass of each contract to equal 1. Simulate what the delivery to each contract would be (in expectation) if each user visit appearing in the linked eligibility graph is served, based on the then current masses. In particular, for any setting of the masses, {right arrow over (m)}, define deliveryj({right arrow over (m)}) to be the expected delivery to contract j. That is,
where for each i, Mi=Σj′εE
For each contract j, increase its mass in proportion to its demand divided by its expected delivery, deliveryj. If a contract j is under-delivering, then iterate the simulation and update until all demands are satisfied. In some embodiments, the demand may be padded by a padding value ε to ensure better convergence. The pseudo-code is given in Algorithm 1 below.
By virtue of its stopping condition, Algorithm 1 is guaranteed to produce an allocation plan that ensures every contract meets its demand (in expectation), so long as the algorithm actually stops. In fact, it can be shown that it is guaranteed to converge, so long as the demands of all contracts (padded by (1+2ε)) are feasible. In practice, the demand of contracts can be trimmed somewhat to ensure feasibility.
Recall that in addition to the total demand dj, each contract j may impose a frequency cap cj over a time duration or window t. The frequency cap is the maximum number of times the contract's ad may be shown to a given user during the time duration. Typically, the time duration is a hard interval, like a day, an hour or a week; and is reset at some pre-specified time (for example midnight UTC). As used herein, the examples indicate that the time window is one day, and is reset at midnight.
Now, referring again to the bipartite graph of
At first glance, this FC constraint is merely one more constraint among the other set of constraints handled in the allocation problem, and thus appears reasonable to be handled as in the regular allocation problem (without frequency capping). However, this FC constraint presents a new set of challenges to the problem:
As described herein, the basic unit of supply is an individual user visit, which is identified by a set of event predicates (e.g. attribute-value pairs) that include information about the user and the context of the visit. Specifically, a user visit may be defined by the following:
(Gender=MaleCountry=USLanguage≠SpanishContenttopic=NBA)
Now suppose that there are k=1, . . . , K attributes that specify the user and content information, with the set of allowable values for attribute k being denoted by Ak. It is easily seen that the predicate (in this case, used as an event predicate) could specify any subset of the universe of attribute-values of a user visit, i.e. an element of the set 2A
As discussed herein, the basic unit of demand is a guaranteed contract. In particular, a typical guaranteed delivery contract (denoted as c) may specify the following:
(Genderε{Male}Countryε{US}Language∉{Spanish}ContentTopicε{NBA,NFL})
Frequency Cap Specification:
The key intuition behind linking is to ensure that each contract j with frequency cap cj is connected to at most cj nodes from the same day (or alternate duration) from the same user in the eligibility graph. In other words, an a priori decision is made to link each frequency capped contract to at most cj user daily visits from the same user. Consequently, any solution to the allocation problem based on the linked eligibility graph, ignoring frequency cap constraints, nevertheless still satisfies the frequency capping constraints of the contracts since the supply of each contract j from a given user is limited to cj. To better understand this linking approach to solving the frequency capped version of the problem, consider the form of any feasible integral solution. In any feasible solution, for any frequency capped contract j with a cap of cj, and for any user set U, at most cj edges in E(j)∩U have a non-zero xij. So, rather than enforcing the FC constraints explicitly, one could instead find a subset of edges from E(j)∩U , denoted LU (j), and require that xij=0 unless iεLU(j). Then, if |LU (j)|≦cj for all U and j, the FC constraint is necessarily satisfied. Hence, the optimization problem can be rewritten as finding x and LU (j) for all U, j in order to:
By definition, if iεLU(j), then i is linked to j. Observe that no more than cj user visits are linked to j, for any user. Therefore, regardless of the found allocation, the frequency capping constraint will always be satisfied.
Another important observation is that if the FC constraint is enforced during eligibility graph construction; that is, only including the edges in |LU(j)| in the eligibility graph for all frequency-capped contracts j, then it is unnecessary to include the FC constraint at the time of allocation optimization. Consequently, the remaining linear program only has O(|I|+|J|) constraints. Further, since frequency cap constraints can never be violated, it also lends itself to a probabilistic interpretation.
More formally, the sets LU (j) induce a subgraph of the original eligibility graph. Define EL to be the set of edges (i, j)εE such that i is linked to j, and refer to this induced subgraph as the linked eligibility graph. Thus, in effect, the resulting graph is a restriction of the original allocation problem with frequency capping.
Of course, still remains is the problem of finding the appropriate LU (j) sets—or linking policies—which is discussed next. Note, however, that any set LU (j) that satisfies the constraint that ∀j, UεU,|LU (j)|≦cj will yield a feasible solution to the allocation problem.
Serving Policies with Frequency Capped Contracts
Table 2 introduces some serving policies considering frequency capped contracts
One simple linking policy is to link a contract with frequency cap cj to the first cj eligible visits of each user. At first glance, this approach has merit. First, the LU can be compactly described (in effect, the description only needs to include cj) and hence can be used as a compact plan at the time of ad booking and serving. Second, only a count of previous user visits needs to be stored in order to enforce the linking policy. Finally, it makes the forecasting problem tractable because it is only needed to be known what fraction of eligible user visits are among the first k for a user; i.e. there is no need to be able to predict the behavior of individual users.
However, the above simple linking policy can be improved upon. In particular, limiting a contract to linking to only the first few user visits potentially leaves the potential for many later user visits that cannot be served to frequency cap contracts. This leads to under-booking, which could result in a significant loss of revenue. Another behavior observed that can be improved upon with this approach is that frequency-capped contracts are given priority over the first few visits of a user, which earlier user visits are considered by advertiserts to be of particularly high value. Thus, as a result of giving priority to frequency-capped contracts, other contracts that are not frequency capped may receive only later, possibly lower-valued user visits, which may violate properties such as representativeness, which property is often important to advertisers.
Another policy can be stated as: “Randomly select a set of visits from a user from among all expected visits from that user in the time period”. Fortunately, this policy statement leads to a family of linking policies that enable a trade-off between under-booking and representativeness. The key idea is as follows. Instead of linking to the first cj opportunities, one can probabilistically link to exactly cj of the first M opportunities, for some M≧cj. For example, if M=10, and there was contract 1 with a cap of 3 and contract 2 with a cap of 5, then the first time a user visited, this approach would assign the third, sixth, and ninth visit to link to contract 1, and the first, third, fourth, fifth, and eighth visits to link to contract 2.
This probabilistic linking policy shares many of the desirable properties of the simple linking policy. For example, the probabilistic linking policy can be compactly described because it is only needed to store M either for each contract (e.g. M-value descriptor 660), or for a set of contracts targeting similar users. Second, as in the simple linking policy, only a count of previous user visits (e.g. Count-value descriptor 670) by a particular user needs to be stored to enforce the linking policy. Third, it is also easy to forecast because cj/M of the first M user visits are expected to be available, and furthermore, there is no need to forecast exact user visits. In addition, the probabilistic linking policy also addresses some of the undesired behaviors observed with the simple policy. Specifically, it addresses the issue of under-booking because a larger fraction of user visits are available to be served to frequency-capped contracts. It also addresses the issue of representativeness because frequency-capped contracts are linked to a large set of user visits, not just the first few visits.
Embodiments disclosed herein consider the following:
Consider the solutions to choosing an appropriate M. Recall that one of the undesired behaviors of a simple linking policy to link a contract with frequency cap cj to the first cj eligible visits of each user is because that would have meant that a large fraction of the impressions were unavailable to be served to frequency-capped contracts. However, setting the value of M to be the median visit number of all user visits, then by definition half the opportunities would be available to frequency-capped contracts. A different value for M might be selected such that 25%, 75%, or even 100% of the user visits were available for frequency-capped contracts. In general, there is a trade-off in selecting M. In particular, the smaller M is, the more impressions that can be booked and served to an individual contract because not all users may visit as many times as indicated by a large M. The larger M is, the more impressions that can be booked to frequency-capped contracts overall, and the more representative the allocation to contracts. Consequently, varying M results in a family of linking policies.
As regarding solutions for compactly encoding which cj eligible visits by a user are linked to a contract j, instead of explicitly storing the visit numbers for each (user, contract) pair, embodiments pseudo-randomly generate a (deterministic) sequence of cj numbers between 1 and M using a hash code (e.g. using the user ID and the contract ID) as the random seed. Consequently, given a user u and contract j, it is always guaranteed to be able to (re-)generate the same sequence of cj visit numbers, thereby never violating the frequency cap. Furthermore, this solution is quite compact—it only needs the IDs of users and contracts (which are generally available in any case to identify users and contracts even if a linking policy is not enforced). Finally, this solution also generalizes to new users because the new user IDs are simply used as seeds in the sequence generator, and the value M only has to capture the aggregate statistical behavior of such users.
Continuing with this example, and more particularly, the user visit sequence of {S1, S2, S3, S4, S5, S6} as shown in the annotated bipartite allocation graph 770 would result in the serving/skipping decisions shown in Table 3.
It should be noted that within any pseudo-random number sequence of M discrete integers there are no more than cj randomly assigned elements that result in a “1” serving test function result. Thus, it is always guaranteed that the frequency cap of cj serving decisions will always be observed. Even if M is increased, making the pseudo-random number sequence longer, there are no more than cj randomly assigned elements that result in a “1” serving test function result within the sequence.
Now, returning to the earlier discussed topic of a serving policy,
Now, in further describing the earlier discussed mass-based serving policy,
Of course, the foregoing mass-based approach as described does not indicate observation of frequency capping. Yet, as indicated in the description of
Booking with Linking
The solution to the booking problem is similar to that described above, with the key difference being that it works with the linked eligibility graph. Linking is done using any one of the linking policies, both for the previously booked frequency-capped contracts, as well as for the new query (i.e. a query is not connected by edges to all its eligible user visits, but only to its linked user visits). Thus, with the linked eligibility graph (and using the relaxed integrality constraints), simply solve exactly the same formulation as for non-frequency capped contracts.
Planning with Linking
The compact allocation plan has an M for each time period, and a mass for each contract. As stated before, the predicted median visit number is used for M; the mass is calculated as before in a two-step process: first, the number of impressions that can be delivered to each contract with a buffer of ε given the most recent model of supply calculated and, next, given the demand which is feasible given the supply, a planning module (e.g. forecasting module 111, or an admission control and pricing module 115) can calculate a mass for each contract.
Serving with Linking
The compact allocation plan for the ad server is computed in exactly the same way as for non-frequency capped contracts, however, using a linked eligibility graph (note that the allocation problem reverts to having regular network flow constraints after linking, and can thus leverage the aforementioned compact allocation plans). Further, the linking policy, in particular the M value(s), are also sent to the ad server as part of a compact allocation plan.
Thus, given a user visit i by user U, the ad server first finds the set of eligible contracts E(i) as before. However, instead of considering all the eligible contracts, it only considers the linked contracts; i.e. only the contracts j such that iεLU(j) (where LU(j) is implicitly specified by the M value of the linking policy). Then, it works on the set of linked eligible contracts as before. For example, using the mass-based allocation method, it would probabilistically assign the user visit to contracts, with a probability that is proportional to the mass of the contract.
Any node of the network 1300 may comprise a general-purpose processor, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof capable to perform the functions described herein. A general-purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices (e.g. a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration, etc).
In alternative embodiments, a node may comprise a machine in the form of a virtual machine (VM), a virtual server, a virtual client, a virtual desktop, a virtual volume, a network router, a network switch, a network bridge, a personal digital assistant (PDA), a cellular telephone, a web appliance, or any machine capable of executing a sequence of instructions that specify actions to be taken by that machine. Any node of the network may communicate cooperatively with another node on the network. In some embodiments, any node of the network may communicate cooperatively with every other node of the network. Further, any node or group of nodes on the network may comprise one or more computer systems (e.g. a client computer system, a server computer system) and/or may comprise one or more embedded computer systems, a massively parallel computer system, and/or a cloud computer system.
The computer system 1350 includes a processor 1308 (e.g. a processor core, a microprocessor, a computing device, etc), a main memory 1310 and a static memory 1312, which communicate with each other via a bus 1314. The machine 1350 may further include a display unit 1316 that may comprise a touch-screen, or a liquid crystal display (LCD), or a light emitting diode (LED) display, or a cathode ray tube (CRT). As shown, the computer system 1350 also includes a human input/output (I/O) device 1318 (e.g. a keyboard, an alphanumeric keypad, etc), a pointing device 1320 (e.g. a mouse, a touch screen, etc), a drive unit 1322 (e.g. a disk drive unit, a CD/DVD drive, a tangible computer readable removable media drive, an SSD storage device, etc), a signal generation device 1328 (e.g. a speaker, an audio output, etc), and a network interface device 1330 (e.g. an Ethernet interface, a wired network interface, a wireless network interface, a propagated signal interface, etc).
The drive unit 1322 includes a machine-readable medium 1324 on which is stored a set of instructions (i.e. software, firmware, middleware, etc) 1326 embodying any one, or all, of the methodologies described above. The set of instructions 1326 is also shown to reside, completely or at least partially, within the main memory 1310 and/or within the processor 1308. The set of instructions 1326 may further be transmitted or received via the network interface device 1330 over the network bus 1314.
It is to be understood that embodiments of this invention may be used as, or to support, a set of instructions executed upon some form of processing core (such as the CPU of a computer) or otherwise implemented or realized upon or within a machine- or computer-readable medium. A machine-readable medium includes any mechanism for storing or transmitting information in a form readable by a machine (e.g. a computer). For example, a machine-readable medium includes read-only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical or acoustical or any other type of media suitable for storing information.
While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.