The present disclosure relates in general to the field of computer software and systems, and in particular, to a system and method for controlled purchasing of online advertisements in a real-time bidding environment.
Online advertisement placements generally refer to the slots or space on the pages of a website that are available for displaying advertisements along with their content. Advertisers typically bid on these advertisement placements that are made available through real-time bidding (RTB) exchanges such as AdX, Admeld, Pubmatic, etc.
From a mechanical perspective, online advertisement placement requires a bidding server connected to RTB exchanges. The bidding server then receives bid requests via the RTB exchanges. A bid request occurs when a user/Internet surfer visits a website or publisher that is selling their advertisement space on an RTB exchange. Upon receiving a bid request, the bidding server has a very short period of time to respond to this request (generally under 50 ms). Since this bid response needs to occur in a very short period of time, it is difficult to run large scale models to predict what advertisements to buy and what price to pay for them.
At bid time, the bidding server has to act on some set of rules, models or system instructions that indicate which bid requests it should bid or pass on. This is a non-trivial problem since there are numerous (e.g., billions) requests that could be bought at any given time, those requests are very different and occur randomly throughout the day, and each request needs to be evaluated in milliseconds.
A method and system for controlling an amount of online advertisements being bought in a real-time bidding (RTB) environment is disclosed. According to one embodiment, a computer-implemented method includes receiving a real-time bidding request for an online advertisement campaign and determining a score of the real-time bidding request. The score elicits desirability for the online advertisement campaign. The computer-implemented method further includes determining a pacing threshold for the online advertisement campaign and bidding on the real-time bidding request based on the score of the real-time bidding request and the pacing threshold. A bidding pace of the online advertisement campaign is monitored based on a number of impressions won for a given time period, and the pacing threshold is dynamically adjusted based on the bidding pace.
The above and other preferred features, including various novel details of implementation and combination of elements, will now be more particularly described with reference to the accompanying drawings and pointed out in the claims. It will be understood that the particular methods and circuits described herein are shown by way of illustration only and not as limitations. As will be understood by those skilled in the art, the principles and features described herein may be employed in various and numerous embodiments without departing from the scope of the present disclosure.
The accompanying figures, which are included as part of the present specification, illustrate the various embodiments of the presently disclosed system and method and together with the general description given above and the detailed description of the embodiments given below serve to explain and teach the principles of the present system and method.
The figures are not necessarily drawn to scale and elements of similar structures or functions are generally represented by like reference numerals for illustrative purposes throughout the figures. The figures are only intended to facilitate the description of the various embodiments described herein. The figures do not describe every aspect of the teachings disclosed herein and do not limit the scope of the claims.
A system and method for controlled purchasing of online advertisements in a real time bidding environment is herein disclosed. According to one embodiment, the computer-implemented method includes receiving a real-time bidding request for an online advertisement campaign and determining a score of the real-time bidding request. The score elicits desirability for the online advertisement campaign. The computer-implemented method further includes determining a pacing threshold for the online advertisement campaign and bidding on the real-time bidding request based on the score of the real-time bidding request and the pacing threshold. A bidding pace of the online advertisement campaign is monitored based on a number of impressions won for a given time period, and the pacing threshold is dynamically adjusted based on the bidding pace.
Each of the features and teachings disclosed herein can be utilized separately or in conjunction with other features and teachings to provide a system and method for combining past user events with real-time user events to rapidly respond to advertising opportunities. Representative examples utilizing many of these additional features and teachings, both separately and in combination are described in further detail with reference to the attached figures. This detailed description is merely intended to teach a person of skill in the art further details for practicing aspects of the present teachings and is not intended to limit the scope of the claims. Therefore, combinations of features disclosed above in the detailed description may not be necessary to practice the teachings in the broadest sense, and are instead taught merely to describe particularly representative examples of the present teachings.
In the description below, for purposes of explanation only, specific nomenclature is set forth to provide a thorough understanding of the present disclosure. However, it will be apparent to one skilled in the art that these specific details are not required to practice the teachings of the present disclosure.
Some portions of the detailed descriptions herein are presented in terms of processes and symbolic representations of operations on data bits within a computer memory. These process descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A process is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. The steps are not intended to be performed in a specific sequential manner unless specifically designated as such.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the below discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, refer to the action and processes of a computer system, or a similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk, including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, and each coupled to a computer system bus.
The methods or processes presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems, computer servers, or personal computers may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the method steps. The structure for a variety of these systems will appear from the description below. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
Moreover, the various features of the representative examples and the dependent claims may be combined in ways that are not specifically and explicitly enumerated in order to provide additional useful embodiments of the present teachings. It is also expressly noted that all value ranges or indications of groups of entities disclose every possible intermediate value or intermediate entity for the purpose of original disclosure. It is also expressly noted that the dimensions and the shapes of the components shown in the figures are designed to help to understand how the present teachings are practiced, but not intended to limit the dimensions and the shapes shown in the examples.
A method and system for controlling the amount of online advertisements being bought in a real-time bidding environment is disclosed. The objective of the present dynamic pacing system is to win a desired number of bids to meet the impression quota of a particular advertisement campaign. The present dynamic pacing system affects the number of bids won by adjusting a bidding pace. Since winning a bid request is not a guaranteed process, this adds a stochastic element to the present system and method. According to one embodiment, a computer-implemented method includes receiving a real-time bidding request for an online advertisement campaign and determining whether or not to bid on the online advertisement. According to one embodiment, the bidding process for online advertisements includes scoring bid requests and deciding whether or not to bid after evaluating the score.
According to one embodiment, each bid request is given a relative level of desirability for purchase. Examples of such scores include a numerical score, a rank, a preference order, or a category to purchase or a general grouping concept. For example, an incoming bid request is scored numerically on a scale between 0 and 20, where 0 is do not bid and 20 indicates the most desirable bid request. It is contemplated that any type of scoring schemes may be used to indicate a relative level of desirability without deviating from the present subject matter.
According to one embodiment, a dynamic pacing system is employed to determine whether or not to bid based on desirability scores. The present dynamic pacing system moves around a pacing threshold score optimally so that enough bid requests are won to serve the desired number of online advertisements (impressions) in a time period.
The present dynamic pacing system needs a target number for how many impressions to serve in a given time interval. The first input into the dynamic pacing system is the number of desired target impressions to win in any given time period.
As a campaign runs, the desired campaign goal may not be met for a given time period. In this case, the present dynamic pacing system updates the campaign goal over time. In one embodiment, the dynamic pacing system periodically updates campaign goals based on the number of impressions won and any campaign rule changes that may have occurred. The present dynamic pacing system recomputes the delivery plan based on the desired number of impressions to win during a specified time period and the remaining impressions to achieve the campaign target.
Based on the campaign goal or the desired target number of impressions to win for a given time period and the score of bid request received, the present dynamic pacing system selects a pacing threshold value within the scoring range (e.g., 0-20). In one embodiment, the pacing threshold value is initially set to the maximum score which represents the most desirable bid requests. Starting at the maximum score represents bidding on the fewest and the best bid requests. The pacing threshold value set by the present dynamic pacing system is the minimum value that a bid request must have to be allowed to bid on it. The present dynamic pacing system then periodically checks the number of bids that were won in the previous time period and compares it to the target number of impressions to win in the next time period. The present dynamic pacing system dynamically adjusts the pacing threshold value. For example, the present dynamic pacing system attempts to raise the threshold value to win fewer impressions. If the maximum threshold value is set, then the present dynamic pacing system cannot further raise the threshold and the campaign would serve out too quickly. Similarly, if the minimum threshold value is set, the present dynamic pacing system cannot further lower the threshold to win more bid requests, and the campaign will be underserved. From a system point of view, these corner cases trigger feedback for user input or system intervention to remedy the situation. In general, most campaigns do not fall into these corner cases and the pacing threshold can be adjusted as needed to meet the impression goal for a given time interval.
The threshold value need not simply just be the minimum cutoff value applied at a bid time to select which bid requests to bid on. Instead, the threshold value can be seen as a measure for how hard the present dynamic pacing system is trying to win impressions. For example, a threshold value close to the maximum score (e.g., 20) means that the system does not have a difficult time winning sufficient impressions for a given campaign. This could further trigger a variety of system changes that also affect bidding pacing. For example, threshold values close to the maximum score (e.g., 20) trigger changes to be more selective of users to bid on. In another example, the present dynamic pacing system lowers the bidding prices. Lower bid prices generally lead to fewer wins. Similarly, low threshold values indicate that the system is having trouble winning the desired number of impressions with the given rule set. In this case, the dynamic pacing system starts to be less picky with the users to bid on or bid on higher prices for the requests than it deems desirable.
In order to adjust the threshold value and change bidding parameters based on bidding pacing, the dynamic pacing system accounts for the number of impressions that are being won given the current threshold. An exemplary equation for determining a sum of a conditional expectation (sumE) of a number of impressions that are won given a pacing threshold score at a point in time is:
sumE[I|T],
where I is a number of impressions that are being won and T is a pacing threshold score at a point in time.
Typically, determining the number of impressions won is measured on a noisy time series, therefore it is difficult to adjust the threshold value with confidence. There is an uncertainty as to how many impressions that the system is purchasing at a given threshold. The present system may buy more or less impressions because of a change to the threshold value or a change in activity in a RTB exchange system (e.g., more advertisements available for purchase). Otherwise, there could be a large random fluctuation in the time series. In one embodiment, in order to more accurately estimate the number of bid requests that are being won, the present dynamic pacing system applies a smoothing process to smooth a data set and separate the signal from the noise. For example, the present dynamic pacing system applies a Kalman filter over an observed time series. After calibrating this model it gives a much more accurate representation of how many requests are being won at any given time interval.
Based on the Kalman-filtered number of impressions that are won in a previous time period, the present dynamic pacing system accurately measures how far it is from achieving the campaign goal. Using the difference between the Kalman-filtered number of impressions won and a desired number of impressions to be won for a specified time period, the present dynamic pacing system estimates how far it is off the pacing and in which direction the pacing needs to be adjusted. In one embodiment, a control process is employed to calculate in which direction the threshold value is to be adjusted and the size of the adjustment. An example of such a control process is a proportional-integral-differential (PID) control process. The PID control process takes in an error value (i.e., the difference between a Kalman estimate and a goal). The PID control process is an online process, i.e., the PID control process computes input data serially, thus it does not need to run over historical data, and it relies on the information in its current state which is updated with the latest error. In one embodiment, the output of the PID control process is a change variable such as a threshold value and the amount of change to the threshold value. The present dynamic pacing system accounts for the last change made to the threshold and adjusts the threshold value based on various factors, including but not limited to, the proportion of the last error, the sum (or integral) of previous errors, and the differential change in the error from the previous time period to the current time period.
PID controllers are generally sensitive to the system that they are trying to control. Much of their commercial applications rest on experts tuning the PID parameters to fit the system they are trying to control. According to one embodiment, the present dynamic pacing system operates automatically for tuning and adjusting the PID parameters based on the current status of the system. Multiple optimization techniques can be employed for tuning the PID parameters. One does not need to tune the PID parameters directly; instead, a heuristic tuning method such as Ziegler-Nichols method or any other variant may be employed to tune the PID parameters. In one embodiment, the present dynamic pacing system employs a particle swarm optimization and evaluates the PID parameters after every step taken. The present dynamic system looks back at the previous time period and simulates the step size the present dynamic system would have taken if the PID parameters were some other value. In this case, the present dynamic pacing system decides which alternative PID parameter values to evaluate. For example, each of the PID parameter values is adjusted at a time in both possible directions (greater and smaller) and a simulation is performed for each PID value or every combination of PID values. After the simulation is completed, the present dynamic pacing system compares the step size that all other theoretical PID models would have taken in the last period to the step size that is actually taken by the current PID model. By evaluating the step size of all the PID models, the present dynamic pacing system selects the PID model that takes the best step size based on the set of PID parameter values that provided a closest impression goal. This moves the current PID model slightly in a parameter space. At each iteration, the PID model is constantly adjusted based on how well it is suited to the current optimization task (e.g., how to adjust the threshold value) it has been given.
According to one embodiment, the present dynamic pacing employs an optimization that is based on customized business rules. Examples of business rules include, but are not limited to, the biggest step size that the present dynamic pacing system can select in set time intervals, the maximum and minimum threshold values, and system stability checks.
A data storage device 505 such as a magnetic disk or optical disc and its corresponding drive may also be coupled to architecture 500 for storing information and instructions. Architecture 500 can also be coupled to a second I/O bus 506 via an I/O interface 507. A plurality of I/O devices may be coupled to I/O bus 506, including a display device 508, an input device (e.g., an alphanumeric input device 509 and/or a cursor control device 510).
The communication device 511 allows for access to other computers (e.g., servers or clients) via a network. The communication device 511 may include one or more modems, network interface cards, wireless network interfaces or other interface devices, such as those used for coupling to Ethernet, token ring, or other types of networks.
The above example embodiments have been described herein above to illustrate various embodiments of implementing a system and method for estimating an advertisement impression volume. Various modifications and departures from the disclosed example embodiments will occur to those having ordinary skill in the art. The subject matter that is intended to be within the scope of the present disclosure is set forth in the following claims.