In display advertising for online resources, advertisers make orders targeted to specific customers which are matched to inventory which represents attributes of the customers (e.g., impressions) defined by the orders. Allocation of the orders to the inventory is a complex constraint satisfaction problem, which is can be computationally expensive to solve precisely for large numbers of available inventories (e.g., billions every day) and/or large numbers of advertiser orders (tens of thousands) that can be associated with a service provider. When approximations are made to simplify the allocation problem and obtain an allocation solution, the approximations can cause a loss of revenue due to advertisers being unable to achieve impression goals associated with their orders. Inefficient allocation can also prevent a service provider from selling all of the inventory the service provider has available. In this context, the service provider can be concerned with optimizing matching of various orders from advertisers to inventory/impressions in a manner that maximizes revenue and fulfills all the orders.
As noted, though, inventory matching of this type can become quite difficult as the number of advertisers and/or impressions to be matched becomes larger due to the number of computations involved in performing the matching. Thus, traditional algorithms suitable to perform matching with relatively small data sets may be unable to successfully perform matching for larger data sets that arise in some scenarios.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Various embodiments provide techniques for inventory clustering. In one or more embodiments, a set of inventory to be processed is placed into an initial cluster. The inventory can be related to impressions for advertising that are defined by values for a set of attributes. Recursive division of the initial cluster is performed by selecting an attribute and deriving child clusters that are constrained by one or more values of the attributes in accordance with one or more clustering algorithms. The clustering algorithms are configured to derive an optimum number of clusters by repetitively generating smaller child clusters and measuring a cost associated with adding additional clusters. Additional child clusters can be formed in this manner until the measured cost to add more clusters outweighs a benefit of adding more clusters.
Various embodiments provide techniques for inventory clustering. In one or more embodiments, a set of inventory to be processed is placed into an initial cluster. The inventory can be related to impressions for advertising that are defined by values for a set of attributes. Recursive division of the initial cluster is performed by selecting an attribute and deriving child clusters that are constrained by one or more values of the attributes in accordance with one or more clustering algorithms. The clustering algorithms are configured to derive an optimum number of clusters by repetitively generating smaller child clusters and measuring a cost associated with adding additional clusters. Additional child clusters can be formed in this manner until the measured cost to add more clusters outweighs a benefit of adding more clusters.
In the discussion that follows, a section entitled “Operating Environment” describes but one environment in which the various embodiments can be employed. Following this, a section entitled “Inventory Clustering Procedures” describes example techniques for inventory clustering in accordance with one or more embodiments. Next, a section entitled “Inventory Clustering Implementation Details” describes example algorithms and implementations for inventory clustering in accordance with one or more embodiments. Last, a section entitled “Example System” is provided and describes an example system that can be used to implement one or more embodiments.
Operating Environment
Service provider 102 can be embodied as any suitable computing device or combination of devices such as, by way of example and not limitation, a server, a server farm, a peer-to-peer network of devices, a desktop computer, and the like. One specific example of a computing device is shown and described below in relation to
Service manager module 112 represents functionality operable by service provider 102 to manage various resources 114 that may be made available over the network 118. Service manager module 112 may manage access to the resources 114, performance of the resources 114, configuration of user interfaces or data to provide the resources 114, and so on. For example, clients 124 may form resource requests 126 for communication to the service provider 102 to obtain corresponding resources 114. In response to receiving such requests, service provider 102 can provide various resources 114 via webpages 128 and/or other user interfaces that are communicated over the network 118 for output by the one or more clients 124.
Resources 114 can include any suitable combination of content and/or services typically made available over a network by one or more service providers. Content can include various combinations of text, video, ads, audio, multi-media streams, animations, images, and the like. Some examples of services include, but are not limited to, a search service, an email service to send and receive email, an instant messaging service to provide instant messages between clients, and a social networking service to facilitate connections and interactions between groups of users who share common interests and activities. Services may also include an advertisement service configured to enable advertisers 120 to place advertisements 122 for presentation to clients 104 in conjunction with the resources 114.
For instance, at least some of the webpages 128 can be configured to include advertisements 122 provided by the advertisers 120. Advertisements 122 may be selected for inclusion in webpages through an advertisement service using any suitable techniques for selection and delivery of the ads. In one example, auctions may be conducted for space that is reserved in a webpage 128 for advertisements 122 from the advertisers 120. Further, booking of orders for ads and delivery of the ads may occur in accordance with inventory cluster techniques described herein.
The inventory cluster tool 116 is configured to implement aspects of inventory clustering techniques described herein. The techniques can be employed in the context of clustering inventory that relates to impressions used to deliver advertising space reserved in webpages 128 or other resources 114 to advertisers 120. To perform clustering, the inventory cluster tool 116 may be configured to make use of a traffic model 130 that represents various data related to interaction of the service provider 102 with clients 124 and/or advertisers 120, and that may be collected, stored, and/or accessed via the service provider 102. Although the example traffic model 130 of
Inventory data 132 can include data related to client interaction with the service provider 102 such as search queries input through a search service, page views, click patterns, keyword statistics, and so forth. Inventory data 132 can also include impressions that are defined by one or more keywords that relate to clients 124, activities of the clients 124, and/or properties of the clients 124. For example, keywords identified based on a search query such a search for “ESPN” may be used to match advertisements to webpages 128 based on the keywords. In this case the keyword “Sports,” as well as other keywords, may be associated with the search for “ESPN.” A client account that is used to perform the search may also be a source of keywords that relate to demographics, such as locations, genders, and/or ages of a user that initiates the search. In this context, an order may target a set number of impressions that relate to selected keywords, such as one hundred thousand impressions related to “Sports” and “Male.” Advertiser data 134 can include data describing actual and/or simulated orders for impressions from advertisers 120, as well as bids for ad auctions, advertisement delivery schedules, and so forth.
More particularly, the inventory cluster tool 116 represents functionality operable to at least obtain data describing inventory and/or impressions and apply one or more clustering algorithms to form clusters of the inventory. In at least some embodiments, the inventory cluster tool 116 is configured to cluster inventory to optimize an objective function that measures the cost associated with adding more clusters. The inventory cluster tool 116 may be implemented to enable inventory clustering through offline simulations using the traffic model 130 and/or online using actual traffic (e.g., actual orders and impressions). Further discussion of clustering techniques that may be implemented by way of the inventory cluster tool 116 can be found in relation to the following figures.
Having considered an example operating environment, consider now a discussion of example inventory clustering techniques in accordance with one or more embodiments.
Inventory Clustering Procedures
The following discussion describes inventory clustering techniques that may be implemented utilizing the environment, systems, and/or devices described above and below. Aspects of each of the procedures below may be implemented in hardware, firmware, software, or a combination thereof. The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference may be made to the example environment 100 of
Step 202 places inventory into an initial cluster. One way this can occur is by operation of inventory cluster tool 116 to obtain inventory data 132 that may be included as part of a traffic model 130 of a service provider 130. Additionally or alternatively, inventory cluster tool 116 can be configured to receive data describing inventory from any suitable source. The inventory can include various impressions having corresponding combinations of attributes.
Advertisers 120 can place orders for impressions by designating very specific combinations of attributes. For example, orders from advertisers may target attribute combination such as “Male; 35-45 years of age; interested in sports” or “User who have visited web page x; have not visited page y; have made a purchase of type z in the last n days.” Mixing the various attributes associated with inventory produces an exponential number of combinations of attributes. Attributes can include binary attributes that can have two values (e.g., gender male or female) and/or attributes that can have many different values (e.g., an age attribute that has five age categories). The inventory on which the designated impressions can potentially be delivered have values for each of the attributes associated with the orders. This creates a set of constraints defined by the order. To fulfill an order, the order is matched based on the constraints to inventory and/or impressions that satisfy the constraints.
In the interest of simplicity, various examples of clustering as discussed herein are described in terms of binary attributes that can have two values, such as yes/no, on/off, true/false, and so forth. It is trivial, though, to generalize these examples to attributes that can have more than two values. Clusters that are divided using attributes that can have multiple values n can be divided to form a corresponding number n of child clusters. Thus, the inventory clustering techniques described herein can be applied to an arbitrary number of attributes and arbitrary number of values per attributes. More generally, a cluster can be split based on various subsets of the possible values for an attribute. As an example, if there are seven values for a particular attribute a cluster could be split into three child clusters having corresponding values (0, 3, 5), (1, 2, 6), (4, 7) for the particular attribute. Note that the value for the particular attribute in this example is not uniquely defined for the child clusters. In other examples, a complete split could be made such that a value for the particular attribute is uniquely defined for each child cluster. Thus a cluster can be divided in a complete or a partial manner with respect to a particular attribute.
By way of example, assume that there are four attributes labeled 0 through 3. These example attributes could be such things as “has kids” or “is over 65.” Assume further that each of the attributes is a binary attribute that can have two values, 0 or 1. Additionally, there may be four orders from advertisers each targeting a specific combination of the attributes. For instance, a first advertiser may request 500 impressions with the pattern 1XX1. Here, the pattern 1XX1 indicates that attribute 0 is designated as 1, attribute 1 and 2 are unspecified, and attribute 3 is designated as 1. The X's here are wildcards that indicate the value for the attribute is not specified. A second advertiser may request 200 impressions with attributes designated by XXX1. Here the second advertiser has designated a value of attribute 3 as 1 and has not specified a value for attributes 0, 1, and 2. In at least some embodiments, the value of 0 can be reserved for use by a service provider 102 to indicate that a value of an attribute is unknown for particular inventory. Accordingly, advertisers may use 1's and X's as just described to designate combinations of attributes for orders.
As noted, inventory that is available through a service provider 102 also has associated constraints. For the inventory of the service provider 102, attributes can be associated with states, such as by using values of 0, 1, or 2 for a three state variable. The inventory is also associated with a corresponding number of impressions that can be delivered (e.g., availability). This is summarized by the following example in Table 1 below:
Recall that “X” can be used by an advertiser to indicate that the advertiser does not care about the value for a particular attribute. On the side of a service provider 102, X can be used to denote that impressions associated with particular inventory can have different states/values for the denoted attribute. For example, inventory designated as 1XXX indicates that the first attribute has a value of 1 and the remaining attributes can have different values for different impressions in the inventory. Thus, in at least some embodiments, the symbol X can be used for an attribute value associated with inventory when there are at least two different values for the corresponding attribute in the inventory. For example, clusters of inventory from Table 1 could be represented with the X notation using three clusters as follows:
The advertiser constraints can be matched by matching each attribute to corresponding inventory constraints. Again, X for the advertiser is a wild card that can match any value. For instance and order 1XX1 can match inventory 1011 because X can match either 0 or 1. When X is also employed on the inventory side, an order X can also match an X that is associated with inventory. When an advertiser order designates a particular value (0, 1, 2, etc.) for an attribute, though, this can match a corresponding value (0, 1, 2, etc.) for inventory, but does not match an inventory X. The idea is that a designated value matches for each impression in the inventory. For example, an order value of 1 does not match an X for inventory because the X indicates that there are at least two different values for the corresponding attribute at least one of which is not a 1.
The allocation problem using the foregoing representations can then be formulated as a linear problem for finding a matrix M={mi,j} which fulfills the constraints on the sums of columns and rows. An example allocation matrix corresponding to Table 1 above is as follows:
For small data sets, the linear problem defined above is not complex and can be readily solved using traditional techniques such as LP (linear programming), POCS (projection onto convex sets), and so forth. The complexity and time associated with solving such problems, though, can be proportional to the number of inventory constraints times the number of advertiser constraints. For service providers that can have inventory in multiple billions and orders from advertisers in the tens of thousands, traditional techniques can be too inefficient and slow to adequately allocate the inventory to the advertisers. Accordingly, inventory clustering techniques described herein can be employed to form smaller clusters of inventory and advertisers that can make the allocation faster and less computationally expensive.
To do so, the inventory cluster tool 116 can be configured to initially place the inventory into the same initial cluster. For this initial cluster, there may not be constraints on attributes that are associated with the inventory. For instance, in the example above having four attributes the initial cluster may be designated as XXXX. Inventory cluster tool 116 may then operate to perform clustering techniques to divide the initial cluster into smaller clusters using various clustering algorithms.
In particular, step 204 recursively divides the initial cluster according to selected attribute values to derive child clusters. The inventory cluster tool 116 can be configured to selectively designate values for attributes to form child clusters that have different values for a selected attribute. In at least some embodiments, the inventory cluster tool 116 operates to select an attribute and create a different child cluster for each possible value of the attribute. For instance, if the example attribute labeled 0 is selected, child clusters corresponding to 0XXX and 1XXX can be formed. Inventory is then divided into the child clusters such that inventory placed into a cluster matches the constraints of the cluster. Each child cluster can then selectively be divided further by specifying values in a similar manner for one or more other attributes. As discussed above and below, determining whether or not to further divide the child clusters can be based upon a measured cost associated with dividing the clusters.
This tree depicted in
The tree is said to be “pruned” at a child cluster, if a determination is made not to further divide the child cluster when further dividing is possible. If the tree is pruned, the child cluster becomes a leaf which represents a cluster of the inventory. If the tree has no pruning (e.g., division occurs to expand the tree until no further separation is possible), the final set of leaves has the optimal potential for displaying advertisers. In this case, the sequence in which the attributes are split has no impact on the final solution. If the tree is pruned, though, the sequence used to perform division affects the cluster leaves and how many displaying opportunities each advertiser will have.
Forming of clusters of inventory as just described can continue recursively until an objective defined for the clustering has been met. In at least some embodiments, the objective corresponds to a cost associated with forming the clusters. Accordingly, step 206 measures a cost associated with adding more clusters by further dividing the child clusters. For instance, inventory cluster tool 116 may be implemented to apply various suitable techniques and/or objective functions to measure a cost associated with further dividing a set of clusters. The cost that is measured can be dependent upon a change in opportunities to match advertisers to impressions that results when a cluster is divided. As noted, the initial cluster can be unconstrained with respect to attribute values. Dividing a cluster can increase opportunities to match advertisers to impressions in the child clusters. In other words the potential for advertisers to have their ads displayed can be increased. The increase in matching opportunities is offset by costs that are associated with forming the clusters. Suitable objective function can be designed to account for these as well as other considerations.
In at least some embodiments, suitable objective functions are defined that are configured to (1) measure revenue opportunity for a given cluster (2) determine a potential revenue assuming the cluster is divided into smaller clusters, and (3) calculate a cost to divide the cluster as a difference between the determined potential revenue and the measured revenue opportunity. A variety of different objective functions that may be employed to implement inventory clustering are discussed in greater detail in the relation to the following figures.
Step 208 forms additional clusters until the measured cost to add more clusters outweighs a benefit of adding more clusters. In other words, inventory cluster tool 116 may operate to continue to form smaller and smaller clusters until a cost analysis indicates that the objective defined for the clustering is at an optimum. Various performance metrics including but not limited to revenue, costs, processing time, orders fulfilled and so forth can be employed individually or in combination to perform the cost analysis.
For instance, cost analysis can indicate that expected revenue has reached a designated amount and/or that creation of additional clusters decreases revenue. Additionally or alternatively, inventory cluster tool 116 can operate to form clusters according to a configurable threshold for the difference between measured revenue and potential revenue. So long as the difference is greater than the threshold, the inventory cluster tool 116 can be configured to continue to form additional clusters. When the difference is not greater than the threshold, the inventory cluster tool 116 can be configured to complete the clustering and output a set of clusters as a result of the clustering.
Step 402 identifies a cluster having inventory to be divided. One way this can occur is through operation of the inventory cluster tool 116 to determine inventory and/or clusters to be divided recursively using multiple iterations. For a first iteration, the identified cluster can correspond to an initial cluster that is configured to contain an initial set of inventory to be processed. The initial cluster can be un-constrained with respect to values for attributes of the inventory. In successive iterations, different child clusters and branches can be processed in turn. These iterations can involve placing different constraints on inventory with respect to different child clusters by specifying values for attributes of the inventory associated with the clusters. The iterations can result in division of the initial inventory into a plurality of clusters.
Step 404 selects an attribute to divide the identified cluster, and step 406 forms child clusters of the identified cluster based on the selected attribute. For example, inventory cluster tool 116 can operate to select an attribute from multiple attributes, resolve values for the attribute, and produce child clusters that correspond to different values that can be assigned to the selected attribute. This can occur repetitively for different attributes.
Attributes that are used for inventory clustering can be selected in any suitable way. In at least some embodiments, attributes can be selected randomly. Additionally or alternatively, attributes can be pre-ranked to produce a predefined and/or configurable list of rankings for the attributes. Attributes can then be selected by applying the rankings each time a parent cluster is divided. Still further, a heuristic can be defined that enables weighting of attributes dynamically each time a parent cluster is divided. This attribute weighting can be based at least in part upon an assessment of potential advertiser revenue corresponding to each attribute. Details regarding these and other aspects of selecting attributes for inventory clustering can be found below in a section entitled “Inventory Clustering Implementation Details.”
Step 408 applies an objective function to the child clusters to determine whether to form more clusters. For instance, inventory cluster tool 116 can be implemented to apply one or more objective functions individually and/or in various combinations. A variety of suitable objective functions are contemplated, examples of which are discussed in detail in the following section under the heading “Example Objective Functions.”
Step 410 makes a determination regarding whether or not to create more clusters. As noted this determination can involve determining when a cost to add more clusters outweighs a benefit of adding more clusters. When it is determined to create more clusters in step 410, procedure 400 returns to step 402 where another target cluster is identified to divide. Steps 404 to 408 are then repeated for the target cluster that is identified in the manner just described. Thus, the objective function can be applied and reapplied in multiple iterations to determine whether or not to form more clusters.
When it is determined not to create more clusters in step 410, procedure 400 proceeds to step 412. Step 412 outputs a set of clusters that are formed for the inventory. The set of cluster can be represented in any suitable way. For instance, the clusters can be represented graphically such as in a graph similar to the example graph 300 of
Step 414 utilizes the clusters to deliver impressions to advertisers. In particular, the clusters formed in the manner described herein can be used to allocate impressions to advertisers 120. Since individual clusters contain less inventory and correspond to fewer advertisers, it can be faster and less computationally expensive to match inventory and advertisers (e.g., orders) one to another using the clusters.
Having described example procedures involving inventory clustering, consider now specific implementation examples that can be employed with one or more embodiments described herein.
Inventory Clustering Implementation Details
Consider now a discussion of example inventory clustering algorithms and implementation details that may be employed using the previously described devices and systems. As may now be apparent to the reader, an objective of inventory clustering can be to partition the inventory into a small number of mutually exclusive clusters, while maximizing the number of opportunities that exist between advertisers and the clusters.
To maximize display opportunities and/or revenue, generally the size of clusters into which a set of inventory is divided can be kept relatively large. As a partition over the inventory, the clusters are disjoint and encompass the whole inventory space. The clusters are formed to have a set of common values for a subset of the attributes that enable a large number of advertisers to be displayed over the sub-set of inventory placed in the cluster. Such large clusters can be employed for inventory allocation in lieu of fragmenting the inventory completely to reduce computational expense and improve performance. As discussed above, clusters can be computed by starting with inventory to be processed being placed into one cluster and dividing the inventory by attribute recursively. Forming of clusters can occur until a cost of adding more clusters outweighs a benefit of enabling more advertisers to display in the clusters.
To achieve this, costs and/or benefits of subdividing a cluster can be estimated using an objective function. A variety of objective functions can be defined that are suitable for the inventory clustering techniques described above and below. In the discussion that follows some general characteristics of such objective functions are first described. Thereafter, the discussion turns to a description of some example objective functions.
Generally speaking, suitable objective functions are defined to measure one or more performance metrics associated with forming additional clusters. Various performance metrics including but not limited to revenue, costs, processing time, orders fulfilled, and so forth can be employed individually or in combination to perform this analysis.
More particularly, example properties and characteristic of suitable objective functions can include the following:
In at least some embodiments, objective functions are defined using performance metrics including at least revenue values related to the clusters. In this example, objective functions can be configured to (1) measure revenue opportunity for a given cluster (2) determine a potential revenue assuming the cluster is divided into smaller clusters, and (3) calculate a cost to divide the cluster as a difference between the determined potential revenue and the measured revenue opportunity.
For the purposes of deriving clusters of inventory, allocation and double counting issues can be ignored. Given a set of clusters, solving the allocation using traditional techniques is relatively straightforward as mentioned previously. Thus, clustering as described herein can be considered a preparation step for solving the allocation problem. Ignoring allocation constraints for the purpose of deriving clusters simplifies the problem considerably and makes inventory clustering for large amounts of inventory and numbers of advertisers tractable.
For the description of example objective functions that follows assume each cluster C is characterized by the following attributes:
One example revenue opportunity function is to compute the revenue opportunity at a leaf by counting the possible matches. At a given child cluster, consider the sum of the inventory that matches for attributes of the child cluster that have been defined. The unexplored attributes are set to 0. Now, evaluate the advertisers that match the inventory. For instance, consider an example cluster C with one type of inventory and two advertisers that match the attributes of the inventory:
Given the foregoing, now consider some example objective functions suitable for use with the described inventory clustering techniques. For each function discussed below, a description is given followed by an example computation using the function and the example cluster C just described.
A first example objective function F is configured to compute a total number of impression opportunities times a price per impression for each advertiser. The definition and example computation for F are as follows:
A detailed analysis of the objective function F above is provided following a description of some other example objective functions. As shown in the detailed analysis, F meets the general criteria for a suitable objective function as set forth in the preceding discussion.
Another example objective function F1 is configured to compute a total impression opportunity. This assumes that each advertiser impression can be displayed in any of the available inventory impressions. The definition and example computation for F1 are as follows:
F1(C)=(ΣiεCIi)*(ΣjεMatchSet(C)Rj)
200*350=70000
Although F1 can be suitably employed in one or more embodiments, it is noted that F1 may not accurately capture the price of orders.
Another example objective function F2 is configured to compute impression opportunities for each advertiser that are capped for each advertiser. In other words, impression opportunities for an advertiser are capped by the available inventory. The definition and example computation for F2 are as follows:
F2(C)=ΣjεMatchSet(C)min(ΣiεCIi,Rj)
min(200,50)+min(200,300)=250
Although F2 can be suitably employed in one or more embodiments, it is noted that F2 may not strictly adhere to some of the criteria for a suitable objective function as set forth above. The objective function F2 increases when a child cluster is split even when no new opportunities are created. For instance, if the child cluster is split by another attribute into two clusters of 100 inventories, the bottom up sum of opportunities would increase to (min(100,50)+min(100,300))+(min(100,50)+min(100,300))=300.
Another example objective function F4 is configured to compute the value of F1 in a manner that is capped globally. The definition and example computation for F4 are as follows:
Another example objective function F5 is configured to compute a number of impression opportunities times a price per impression that are capped for each advertiser. The definition and example computation for F5 are as follows:
Another example objective function F6 is configured to compute a capped number of impressions times a global average price per impression. The definition and example computation for F6 are as follows:
Another example objective function F7 is configured to compute best impression opportunities by filling the more lucrative opportunities first. The definition and example computation for F7 are as follows:
min(200,50)*$1+min(150,300)*$0.33=$100
Another example objective function F8 is similar to F3, but computes an average CPI (cost per impression) over the whole cluster. The definition and example computation for F8 are as follows:
Each of the example objective functions F4 to F8 can be suitably employed in one or more embodiments. It is noted, though, the example objective functions F4 to F8 may not strictly adhere to some of the criteria for a suitable objective function set forth above.
Consider now a detailed analysis of the first example objective function F introduced above. F does adhere to the criteria for a suitable objective function set forth above and accordingly can produce good results when used for inventory clustering techniques described herein.
As noted, an over estimate can be defined to compute the potential related to further dividing a child cluster. The over estimate can be defined as G of S(C)=ΣLε{leaves under C}F(L). Now for the objective function F it follows that:
The cluster objective function F(C) of cluster C is the sum of how much money each advertiser that matches the known attributes of cluster C on all of the constraints can potentially make on each impression. The potential function G (C) of a cluster C is the sum of how much money each advertiser that matches the known attributes of cluster C can potentially make on each impression.
Consider the following example:
In the above example, there are 3 distinct inventory types with respect to attribute values designated by 01, 11, and 10. The distinct inventory types have 1, 2, and 2 impressions, respectively. There are 2 advertisers with identifiers 0 and 1. Advertiser 0 designates that the second attribute to be set to 1. Advertiser 1 designates that the first attribute to be set to 1. The advertisers each have 1 impression, and respective prices $1 and $3.
Running the inventory clustering analysis completely to the end without pruning yields:
More graphically this example is depicted in
Here are some observations to consider when looking at the tree illustrated in
Clearly, two advertisers cannot use the same impressions (double counting advertiser impressions) and two inventories in different clusters cannot be used for the same advertiser order (double counting inventories). However, the goal for clustering can be to increase the “potential” for display in a cluster for each advertiser. Double counting can apply to revenue calculations, but this double counting may not matter when measuring display potential. The idea is to maximize display potential to derive suitable clusters and hence “double counting” is okay. This is also true for double counting impressions to obtain a maximum number of advertisers eligible to be displayed in that inventory and for double counting advertiser orders to allow each order to match a maximum number of inventory. Once a suitable set of clusters is formed, linear programming techniques and or other traditional techniques can be employed to compute an allocation and at this point the cases of double counting can be removed.
The potential function G (C) can be evaluated top down efficiently after computing the sum of inventories and the sum of advertisers Pj/Rj. Each time a cluster is subdivided, only a few advertisers are removed from the cluster and correspondingly few subtractions can be used to update the sum of Pj/Rj. The potential function G(C) is an over estimate of the objective function S(C)=ΣLε{leaves under C}F(L) because G(C) measures S(C) assuming the advertisers reach the leaves. G(C) decreases with each division of a cluster to form child clusters.
Now, if a cluster C is divided into two clusters CA and CB, it holds that:
F(C)≦F(CA)+F(CB)
This is because MatchSet(CA)=MatchSet(C)+{new matches in CA} since splitting an attribute of cluster C increases the number of advertisers that match the new inventory. This is true of CB as well. A proof that splitting C into two clusters CA and CB increases the sum of KnownMatches functions can be written as:
Equality exists if F(CA)=F(C) and F(CB)=F(C). Obviously, there is no benefit in dividing cluster C if that is the case.
When dividing a cluster, a cluster having the largest potential function G (C) is identified. However, within a cluster there can be advertiser orders that will be satisfied regardless of whether the cluster is expanded or not. The decision to divide the cluster can be based on how much advertiser value can be unlocked by forming more clusters. To reflect this, consider the general objective function:
M(C)=G(C)−F(C)
The value M that is measured according to the above objective function gets smaller and more accurate as more attribute constraints are added at each division. This is true because advertisers for which the designated constraints have been satisfied are removed from M(C). It is straightforward to count constraints that are satisfied for advertisers at each cluster division. When constraints of an advertiser have been satisfied, the advertiser no longer contributes to M(C). As a result M(C) can be computed effectively top down.
An example algorithm to compute the inventory clustering can be expressed as follows:
The foregoing algorithm can be implemented using various different thresholds, as illustrated in the following examples:
A threshold of 0 yields the complete tree with 3 non-empty leaves and the maximum display opportunity of 15. A threshold of 4 yields 2 non-empty leaves and a display opportunity of 14. A threshold of 2 yields 1 non-empty leaf and a display opportunity of 12. In the last case, advertiser 0 has no display opportunity.
The sequence in which the attributes are employed for clustering has an impact on performance of the clustering and the clusters that are formed. Clearly, it is computational expensive and time consuming to expand each child cluster recursively with respect to every possible attribute permutations. Careful attribute selection can be employed to maximize the chances of efficiently clustering down the line.
In at least some embodiments, attributes can be selected randomly. Additionally or alternatively, attributes can be pre-ranked according to a predefined and/or configurable list of rankings. Attributes can then be selected by applying these pre-rankings each time a parent cluster is divided.
Still further, a heuristic can be defined that enables weighting of attributes dynamically each time a parent cluster is divided. The heuristic can be dynamically calculated as clustering is being performed. The attribute weighting can be based at least in part upon an estimate of potential advertiser revenue corresponding to each attribute.
In at least some embodiments the heuristic is defined to take into account a combination of (1) a probability estimate of increase for the performance metric computed by the objective function that is expected for the child clusters and branches formed by resolving a potential attribute, and (2) an estimate of inventory separation that results if child cluster are formed based on the potential attribute.
The probability estimate can be computed by counting the constraints that get resolved for each attribute and weighting them by a price per impression. This produces a bunch of weighted attributes that can be used to obtain a sorted list. The list is then examined to identify an attribute that splits the inventory by at least a configurable percentage. The percentage value is configured to ensure that the split between clusters is balanced. For instance, the percentage value can ensure that at least some defined percentage of inventory of a parent (e.g., 10%, 25%, 30%, etc.) is placed into each child cluster. Without this constraint, a situation can occur in which a large number of clusters are computed that have little or no value.
To illustrate, assume there are 1000 advertiser orders for a child cluster, with constraints on 300 attributes, and that there are only distinct types of inventory left. The two type of inventory may have over 150 attributes in common. Additional clusters can be derived by resolving various attributes and sorting out the few advertisers that get removed at each division. If the two types of inventory are not separated, though, this merely produces a long string of child clusters with most having no available inventory and one child cluster having the two types of inventory that are available. This has little value and dramatically slows down computation. Thus, the second constraint is configured to ensure that inventory clustering produces clusters that are balanced.
The sorted list of weighted attributes that is obtained using the heuristic described above can be employed to select a sequence in which attributes are employed for the purpose of clustering. In particular, an attribute can be selected by determining an attribute of the sorted list that satisfies the percentage value constraint and has the highest relative weighting.
Applying this to the example described above, notice that at the initial cluster 502:
Therefore, attribute 0 has the most potential and is selected as the first attribute to be resolved. Accordingly, the described heuristic approach pushes attributes having relatively lower potential to the bottom of the tree, where they can be pruned.
In at least some embodiments, objective functions can be evaluated at least in part based upon computational complexity. In one example, objective functions are configured such that computational complexity is proportional to:
Where Ncluster is the number of clusters, Madv is the number of advertisers, Cav is the average number of constraints per advertiser, and Kattrib is the number of attributes. This can occur by doing incremental book keeping of the F, G, and M for the advertisers from the top down.
Having described example implementation details regarding advertisement inventory matching, consider now an example system that can be employed to implement aspects of the described techniques.
The computing device 602 includes one or more processors or processing units 604, one or more memory and/or storage components 606, one or more input/output (I/O) interfaces 608 for input/output (I/O) devices, and a bus 610 that allows the various components and devices to communicate one to another. The bus 610 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. The bus 610 can include wired and/or wireless buses.
The memory/storage component 606 represents one or more computer storage media. The memory/storage component 606 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). The memory/storage component 606 may include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so forth).
The one or more input/output interfaces 608 allow a user to enter commands and information to computing device 600, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, and so forth.
Various techniques may be described herein in the general context of software or program modules. Generally, software includes routines, programs, objects, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. An implementation of these modules and techniques may be stored on or transmitted across some form of computer-readable media. The computer-readable media may include a variety of available medium or media that may be accessed by a computing device. By way of example, and not limitation, computer-readable media may comprise “computer-readable storage media.”
Software or program modules, including the inventory cluster tool 116, applications 108, service manager module 112, operating system 110, and other program modules, may be embodied as one or more instructions stored on computer-readable storage media. The computing device 602 may be configured to implement particular functions corresponding to the software or program modules stored on computer-readable storage media. Such instructions may be executable by one or more articles of manufacture (for example, one or more computing device 602, and/or processors 604) to implement techniques for inventory clustering, as well as other techniques. Such techniques include, but are not limited to, the example procedures described herein. Thus, computer-readable storage media may be configured to store instructions that, when executed by one or more devices described herein, cause various techniques for inventory clustering.
The computer-readable storage media includes volatile and non-volatile, removable and non-removable media implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, or other data. The computer-readable storage media can include, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or another tangible media or article of manufacture suitable to store the desired information and which may be accessed by a computer.
Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.