Aspects of the invention generally relate to distributing advertisements. In particular, aspects are directed to improving the efficiency and efficacy of serving advertisements.
Advertising has become an increasingly important source of revenue in many industries. Electronic media and content providers, for example, rely heavily on advertising to be able to provide services to users for free or at a reduced cost. With increasing numbers of advertisers and increasing numbers of users, an advertising server must be able to process a significant amount of information quickly to provide advertisements within a reasonable amount of time while dealing with other issues such as ad fatigue. However, advertising servers often need to evaluate each advertisement campaign against a user each time an advertisement request is received, potentially leading to significant processing and response times. Additionally, to avoid ad fatigue, transmission counts are typically stored to make sure each campaign is not transmitted to a user too many times. Storing frequency information for each user-campaign pair can increase storage requirements exponentially as the number of advertisements or users increase.
Aspects relate to comparing a set of advertisements to a set of users to predetermine user-campaign matches. Thus, when an advertisement request is received, an advertisement may be selected using the predetermined match data without having to evaluate the user against hundreds or thousands of advertisements while the user waits for a response to the request. According to one aspect, the match data may be stored in a bitset/hash map data structure where each user has a corresponding bitset that stores high and low bits in various positions to specify whether a match exists. Each position may correspond to a different advertisement campaign. The bitsets may be stored as a hash map that is keyed off of user identification information. Additionally, a bitset or bitmap may be used to identify which campaigns correspond to which positions in the bitset. A bitset or bitmap may further store advertisement objects so that the objects may be extracted directly from the bitmap instead of having to retrieve them from another location or device.
According to another aspect, frequency data indicating how often an advertisement campaign has been sent to a particular user may be stored based on a likelihood that the user or a group of users will exceed a frequency limit. Initially, users may be grouped according to usage patterns. A probability that an advertisement campaign will be sent to users of a group will exceed the frequency limit is determined. The probability may then be compared to a threshold probability to determine whether frequency data should be stored for the group and advertisement campaign pair. In one or more arrangements, an indicator may be used to identify to the advertisement server which campaign-user pairs are to have frequency data stored. In one or more configurations, the probability limit may be determined based on a confidence level specified by the advertisers according to their tolerance for fault.
According to yet another aspect, a set of advertisement campaigns may be divided into groups or slices to reduce the amount of processing needed to respond to an advertisement request. Advertisement campaigns may be divided using a variety of algorithms taking into account factors such as a target audience, the number of users matching a campaign and the like. When responding to an advertisement request, fewer than all of the slices may be selected for comparison to information about a user associated with the request. The selection of one or more campaign slices may be performed in various ways including randomly, based on a number of times previously selected and the like.
Still further, various combinations and sub-combinations of the campaign slicing, frequency capping and predetermining match data features may be used to further increase the efficiency and efficacy of advertisement servicing.
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.
Certain embodiments are illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
In the following description of the various embodiments, reference is made to the accompanying drawings, which form a part hereof, and in which are shown by way of illustration various embodiments in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural and functional modifications may be made without departing from the scope of the present invention.
Various embodiments may be used in a broad array of networks and communication protocols.
Various types of content and service providers may be included in the network including service provider 125, content provider 130 and advertisement server 135. Service provider 125 may be configured to provide wireless communication services or data connection access for devices 105, 110, 115 and 120 while content provider 130 may be configured to store and deliver various types of content including web pages, video, audio, text and the like. Advertisement server 135, on the other hand, may be used to deliver advertisements to users and devices such as devices 105, 110, 115 and 120. For example, advertisement server 135 may operate in conjunction with content provider 130 to deliver advertisements as part of the content provided by content provider 130. In various configurations, one or more of advertisement server 135, content provider 130 and/or service provider 125 may be incorporated into a single device or system. System 140 is one example of an entity that incorporates both content provider 130 and advertisement server 135.
Devices 105, 110, 115 and 120 may be connected to each other through various types of networks. For example, mobile communication devices 105 and 110 may communicate with one another through a cellular network, a short range communication connection (such as a Bluetooth®, UWB (Ultra Wide Band), infrared, WiBree), a wireless local area network (WLAN) or a high-speed wireless data network, e.g., Evolution-Data Optimized (EV-DO) networks, Universal Mobile Telecommunications System (UMTS) networks or Enhanced Data rates for GSM Evolution (EDGE) networks. In one or more arrangements, mobile communication devices 105 and 110 and other devices like PC 115 and PDA 120 may communicate through a wired network. Further, devices 105, 110, 115 and 120 may use various communication protocols such as Internet Protocol (IP), Transmission Control Protocol (TCP), Simple Mail Transfer Protocol (SMTP) among others known in the art.
Computer executable instructions and data used by processor 228 and other components within communication device 212 may be stored in a computer readable memory 234. Memory 234 may further store various data such as user profiles, usage history or statistics, product recommendations and the like. The memory may be implemented with any combination of read only memory modules or random access memory modules, optionally including both volatile and nonvolatile memory. Software 240 may be stored within memory 234 or storage to provide instructions to processor 228 for enabling communication device 212 to perform various functions. Alternatively, one or more modules of communication device 212 may be embodied in hardware or firmware (not shown).
Communication device 212 may be configured to receive, decode and process digital radio or television broadcast transmissions that are based, for example, on the DVB (Digital Video Broadcasting) standards, through a specific DVB receiver 241. The mobile device may also be provided with other types of receivers for digital broadcast transmissions, such as ATSC (Advanced Television Systems Committee), MediaFLO, DMB (Digital Multimedia Broadcasting), ISDB (Integrated Services Digital Broadcasting), HDTV (High-definition television), DAB (Digital Audio Broadcasting), DRM (Digital Radio Mondiale), etc. Additionally, communication device 212 may also be configured to receive, decode and process transmissions through FM/AM Radio receiver 242, WLAN transceiver 243, and wireless telecommunications transceiver 244. Transceivers 243 and 244 may, alternatively, be separated into individual transmitter and receiver components (not shown). In one example, transceiver 244 may include a broadcast receiver (not shown) and a backward channel receiver (not shown) for communicating over the broadcast channel and the backward channel, respectively. Additionally, communication device 212 may further include a navigation engine for determining a position of communication device 212. In one example, the navigation engine may include Global Positioning System (GPS) receiver 245 for receiving position information from a GPS satellite (not shown). The receiver and transmitter components, e.g., transceiver 244, may be configured to transmit user input and other data (e.g., user selections of profiles, purchase requests, requests for information, user behavior/actions, etc.) to a server and receive data such as product recommendations, price quotes, user profile information and the like from the server.
According to one aspect, communication device 212 may receive Radio Data System (RDS) messages. Other transmission and reception systems may also be used including BLUETOOTH®, WiMAX (Worldwide Interoperability for Microwave Access) i.e., Institute of Electrical and Electronics Engineers (IEEE) 802.16 standard, or UWB (Ultra-wideband) transceivers. In one or more instances, signals may be transmitted to and received from another mobile terminal (not shown). For example, audio, video and other signals may be transmitted between two communication devices using various transmissions protocols such as wireless local area networks (WLANs), General Packet Radio Service (GPRS), third generation mobile system technology (3G), Bluetooth or Universal Plug and Play (UPnP). Such networks may be used to access or support local networks or remote networks such as the Internet.
With more devices such as device 212 of
In step 300, an advertisement server (e.g., server 135 of
Once the match results have been determined, the result data may be stored at the advertisement server in step 315. A variety of data storage structures may be used. In one configuration, result data may be stored in bitset or bitmap data structures.
In some instances, the positions of campaigns in bitsets 405a-d may change. For example, if a campaign is deleted and a new one added to the deleted campaign's previous position, that position would correspond to the new campaign. To track the campaign-position correspondence, bitmap 410 may be used. In particular, bitmap 410 is configured to store position numbers 415 in association with campaign or advertisement identifiers 420. Thus, to identify a campaign or advertisement that matches a user, an advertisement server or other entity may determine the position in which a match was indicated using one of bitsets 405a-d and lookup the corresponding campaign or advertisement using bitmap 410.
Using bitsets 405a-d/hash map 420 and bitmap 410, advertisements may be removed or added. For example, to remove an advertisement campaign, bitmap 410 may be modified to remove the corresponding campaign or advertisement ID. In some instances, the removed ID may be replaced by an indicator, e.g., “NULL,” that signifies that the position is open. Additionally and optionally, the corresponding bit in each bitset 405a-d may be turned to ‘0’ indicating no match. If, however, an advertisement or campaign is being added, bitmap 410 may be searched for an open position. For example, an open position may be a position having the “NULL” indicator or a new position in the bitmap. Once found, the parameters or criteria specified by the new advertisement or campaign may be compared against each of the users in bitsets 405a-d and the bit for the open position is set according to whether a match is determined to exist. Additionally, the open position in bitmap 410 may be filled with the advertisement or campaign information of the new advertisement or campaign.
Referring again to
While the above method of
As a further or alternative method of increasing advertisement distribution efficiency, an advertisement server may use advertisement campaign slicing to reduce the number of advertisement campaigns that are evaluated when responding to an advertisement request.
Once the advertisement campaigns have been divided into one or more campaign slices, an advertisement server may receive an advertisement request in step 505. The request may include information specifying a user for which the advertisement is being requested. In step 510, a slice may be selected from the multiple campaign slices. Slices may be selected in various ways including randomly, based on a rotation of slices, the number of times each slice has been selected and the like. Upon selecting a slice, information about the user or users for which the advertisement is being requested may be compared with the parameters of each advertisement campaign in the selected slice in step 515 to determine one or more matching advertisement campaigns in step 520. One or more of the matching advertisement campaigns may then be selected for responding to the request in step 525. The one or more advertisement campaigns that are selected for responding to the request may be selected in various manners including randomly, a number of times the campaign has been selected and/or combinations thereof.
According to one or more aspects, multiple slices may be selected and evaluated in sequence, against the request. Subsequent slices are selected and evaluated if the server does not find an appropriate campaign to serve from for the request in the initially or previously selected slice. For example, a campaign distribution system may initially select slice A from which to select a campaign for a requesting user. Upon determining that no suitable or appropriate campaign for the requesting user, the campaign distribution system may proceed to select slice B and so on until an appropriate or suitable campaign is found for the user. This allows an advertisement server to respond to a request in a shorter amount of time than if the server analyzed every campaign that it serves.
In addition to long processing and response times, ad fatigue is another concern that can affect the effective distribution of advertisement campaigns. Ad fatigue is a phenomenon that occurs when a particular user is shown the same advertisement a number of times causing the user to become tired of seeing the ad. Ad fatigue may begin reflecting negatively on the product or service advertised. However, to combat ad fatigue, the frequency with which advertisements are delivered to a user must be recorded. With an increasing number of advertisement campaigns and users, the storage space needed to keep such records and the resources needed to enforce such restrictions may quickly become impractical.
In step 615, a probability that users of a group or category will reach a frequency threshold or cap for an advertisement campaign over a specified period of time may be determined. Such a probability may be calculated in various ways and taking into account factors such as a number of similar advertisement campaigns and an average number of advertisements sent to a user in a particular usage group over the specified period of time. For example, a probability may be determined based on a number of times an advertisement campaign was distributed or shown to a user in the past over the same or similar period of time. The probability calculation may be based on the historical distribution data of the specific advertisement or may be based on data of a similar advertisement.
Once the probability for the group-campaign pair has been determined, an advertisement server may determine whether the probability exceeds a threshold probability in step 620. In one or more arrangements, the threshold probability may be defined based on a specified level of confidence. For example, an advertisement server may be instructed to prevent ad fatigue with a 95% level of confidence. The 95% level of confidence may be used to determine a corresponding probability threshold for which there would only be a 5% chance of an ad to be served to the same user more than the specified, i.e. acceptable, number of times over the specified period of time. Further, different probability thresholds may be defined for different usage pattern categories or, alternatively, the same probability threshold may be used across the board. In one example, simulations may be performed using historical distribution data to identify a probability threshold where the frequency caps are exceeded with the specified level of confidence. In particular, if the level of confidence is 90%, the simulation will identify the user (or user category) and campaign combinations that will have 10% or more chance of exceeding the frequency restrictions, if not explicitly enforced.
In step 625, an indicator that frequency data is to be stored for each user in the group of users with respect to the advertisement campaign may be stored. Alternatively or additionally, a frequency data entry may be created for each user-campaign pair (i.e., an entry for the advertisement and each user of the group) and/or an indicator not to store frequency data may be stored. Thus, when responding to advertisement requests, an advertisement server may determine whether to store frequency data for a selected campaign based on the existence or absence of a storage or non-storage indicator, the existence or absence of a frequency data entry or combinations thereof. Steps 615-625 may be repeated for each advertisement campaign/user group pair.
In one illustrative example, suppose that advertisement campaign distribution to a user Joe for the month of April is tracked and logged. Further suppose that Joe is served with an ad from a campaign such as Campaign A at the following times and days as shown below.
April 1->14:32, 15:15, 16:45 . . . , 20:19
April 2->10:12, 12:30, . . .
April 3->8:30, 15:13, . . .
April 30->9:46, 10:08, . . .
Using statistical methods and formulas, the probability of Campaign A being served to user Joe N times or less (or more) for any interval of time may be determined. For instance, the number of times that Campaign A will be eligible (i.e., not exceed distribution limitations) to be served to Joe in a T hour interval of time may be statistically calculated. T represents a frequency cap scope, while N represents a frequency cap value and X represents the confidence that the frequency cap will not be exceeded. In one example a campaign called “Product 1” may be assigned an hourly frequency capping that is set to 5. An ad server or company may further want to be 95% sure that the specified frequency cap is not exceeded. In order to decide whether to store frequency capping information or even test for it, an advertisement distribution system may determine if the system can be 95% sure that Campaign “Product 1” will not be chosen for serving to Joe (or a group of people like Joe) more than 5 times in any one hour interval (e.g., using the simulation methodology discussed above). If the answer is yes, the frequency capping for Joe will not be stored and checked. On the other hand, if no, frequency information and capping may be stored and/or checked.
Alternatively or additionally, users might not be grouped or categorized according to usage pattern. Instead, the users may be evaluated on an individual basis. Whether categorization is used or not may depend on the number of users serviced by the advertisement server and a number of advertisement campaigns being served. Further, frequency caps or thresholds may be specified for multiple periods of times or scopes. For example, a company associated with an advertisement campaign may request that the advertisement campaign be distributed no more than 10 times to the same user in the same week and no more than 30 times over the course of a month. Thus, in some scenarios, a probability may be determined for whether a user or group of users will reach multiple frequency caps for multiple scopes. For instance, in the above example, if the confidence of meeting the frequency caps in either or both weekly and monthly scopes is less than the specified level, then the frequency cap information is stored and checked for both scopes or just the ones that do not satisfy the specified confidence level.
Various combinations of the methods and features of
In step 825, an advertisement server may receive an advertisement request for a user. The advertisement server may select one or more slices of the multiple slices (e.g., step 510) from which to select an advertisement campaign in step 830. The number of slices selected may be less than the total number of available slices. In step 835, an advertisement may be selected from the one or more selected slices with which to respond to the advertisement request. Selection of the advertisement may be performed in a manner similar to that described in steps 320-330 of
In other examples and configurations, various sub-combinations of the frequency capping, campaign slicing and pre-matching features may be used. For example, frequency capping may be used with campaign slicing or pre-matching and campaign slicing may further be combined with campaign-target pre-matching.
In one configuration, an advertisement server may use both frequency capping storage techniques in addition to the predetermination of campaign target matches to reduce storage requirements and processing and response times. A method for using frequency capping storage features with pre-matching of campaigns and users is illustrated in
While some of the features have been described with respect to the transmission of a single advertisement in response to an advertisement request, similar features may be used to transmit multiple advertisements at one time. Thus, instead of identifying a single matching advertisement campaign, a system may determine multiple matching advertisement campaigns and transmit all of the determined campaigns to a user at the same time. The number of campaigns that a user may receive may depend on a service agreement, preferences of the user and/or parameters of an application through which the advertisements are displayed.
The methods and features described herein may also be selectively applied and used based on various factors. For example, methods and features of frequency capping and data storage as described herein might only be used where a percentage of advertisement campaigns with frequency caps is greater than a specified percentage threshold (e.g., 75% or 90%). In another example, campaign-user matches might only be predetermined or precomputed in situations where there are a relatively small number of campaigns (e.g., 10,000). In yet another example, campaign slicing might be used only in situations where the number of campaigns exceeds a threshold, e.g., 1,000, 10,000 or 100,000.
The methods and features recited herein may further be implemented through any number of computer readable media that are able to store computer readable instructions. Examples of computer readable media that may be used include RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, DVD or other optical disk storage, magnetic cassettes, magnetic tape, magnetic storage and the like.
Additionally or alternatively, in at least some embodiments, the methods and features recited herein may be implemented through one or more integrated circuits (ICs). An integrated circuit may, for example, be a microprocessor that accesses programming instructions or other data stored in a read only memory (ROM). In some such embodiments, the ROM stores programming instructions that cause the IC to perform operations according to one or more of the methods described herein. In at least some other embodiments, one or more the methods described herein are hardwired into an IC. In other words, the IC is in such cases an application specific integrated circuit (ASIC) having gates and other logic dedicated to the calculations and other operations described herein. In still other embodiments, the IC may perform some operations based on execution of programming instructions read from ROM or RAM, with other operations hardwired into gates and other logic of IC. Further, the IC may output image data to a display buffer.
The term “processor” or “processors” in combination with memory should be understood to include any of the foregoing combinations of hardware or software to carry out steps or functions.
Although specific examples of carrying out the invention have been described, those skilled in the art will appreciate that there are numerous variations and permutations of the above-described systems and methods that are contained within the spirit and scope of the invention as set forth in the appended claims. Additionally, numerous other embodiments, modifications and variations within the scope and spirit of the appended claims will occur to persons of ordinary skill in the art from a review of this disclosure.