Advertisement selection using uncertain user data

A method and system are disclosed. The method includes generating uncertain user data corresponding to a user of the user device and transmitting the uncertain user data to a remote computing device. The uncertain user data includes a combination of actual user data and noise data. The method includes receiving an advertisement response message from the remote computing device that includes a plurality of conditional ad objects, each conditional ad object including ad content, one or more access mechanisms, and one or more conditions. The method further includes selecting one or more of the plurality of conditional ad objects based on the actual user data and the one or more conditions defined in the selected conditional ad objects. Furthermore, the method includes displaying, for each selected conditional ad object, an advertisement that is based on the ad content and at least one access mechanism defined in the conditional ad object.

TECHNICAL FIELD

The disclosure relates to a system and method that utilize uncertain user data to provide targeted advertisements without compromising the privacy of the user.

BACKGROUND

Digital marketing and digital advertising help drive today's economy. One reason that advertisers find more value in digital advertising over traditional forms of advertising, such as print and television advertising, is that digital advertising allows advertisers to better target potential consumers because user devices provide very informative information that would not otherwise be available to advertisers in the absence of user devices. For instance, if the advertiser knows a particular user likes an obscure sport such as disc golf based on a signal taken from a social networking application, the advertiser can provide disc-golf-related advertisements to the user. The user would typically not be presented with such advertisements, unless the advertiser was aware of the user's preferences. The tradeoff, however, is the user's privacy. While consumers enjoy having targeted advertising, consumers do not like knowing that their personal information may be readily available to an unintended person. Given the option, many consumers choose to keep their information private.

SUMMARY

According to some implementations of the present disclosure, a method is disclosed. The method includes generating uncertain user data corresponding to a user of the user device and transmitting the uncertain user data to a remote computing device. The uncertain user data includes a combination of actual user data and noise data. The method includes receiving an advertisement response message from the remote computing device. The advertisement response message includes a plurality of conditional ad objects. Each conditional ad object includes ad content, one or more access mechanisms, and one or more conditions. The method further includes selecting one or more of the plurality of conditional ad objects based on the actual user data and the one or more conditions defined in the selected conditional ad objects. Furthermore, the method includes displaying, for each selected conditional ad object, an advertisement that is based on the ad content and at least one access mechanism defined in the conditional ad object.

According to some implementations of the present disclosure, a non-transitory computer readable medium having a set of computer readable instructions stored thereon is disclosed. The computer readable instructions, when executed by a processing device of a user device, cause the processing device to generate uncertain user data corresponding to a user of the user device and transmit the uncertain user data to a remote computing device. The uncertain user data includes a combination of actual user data and noise data. The instructions further cause the processing device to receive an advertisement response message from the remote computing device. The advertisement response message includes a plurality of conditional ad objects, each conditional ad object including ad content, one or more access mechanisms, and one or more conditions. The instructions further cause the processing device to select one or more of the plurality of conditional ad objects based on the actual user data and the one or more conditions defined in the selected conditional ad objects. Furthermore, the instructions further cause the processing device to display, for each conditional ad object, an advertisement that is based on the ad content and at least one access mechanism defined in the conditional ad object.

According to some implementations of the present disclosure, an advertising system is disclosed. The advertising system includes a storage system that stores a plurality of advertisement records. Each advertisement record corresponds to an advertisement and includes triggering data, one or more access mechanisms, ad content, a fee arrangement, and one or more conditions. The system further includes a processing system that executes computer readable instructions. The computer readable instructions cause the processing system to receive an ad request requesting one or more advertisements and an uncertain user profile from a remote computing device. The uncertain user profile corresponds to a user device to which the requested advertisements are directed and includes actual user data and noise data. The instructions further cause the processing system to identify a plurality of advertisement records based on the ad request and/or the uncertain user profile and rank the identified advertisement records. The instructions further cause the processing system to generate an advertisement response message based on the ranked advertisement records. The advertisement response message is a data structure having ordered elements, each element storing a conditional advertisement object. Each conditional advertisement object corresponds to a respective ranked advertisement record and includes ad content from the corresponding ranked advertisement record, one or more access mechanisms, and one or more conditions. At least one of the conditions is to be verified by the user device using the actual user data in order for the advertisement corresponding to the conditional advertisement object to be displayed. The instructions further cause the processing system to transmit the advertisement response message to the remote computing device.

According to some implementations of the present disclosure, a method is disclosed. The method includes generating uncertain user data corresponding to a user of the user device. The uncertain user data includes a demographic profile corresponding to the user based on probabilistic data. The method further includes transmitting the uncertain user data to a remote computing device and receiving an advertisement response message from the remote computing device. The advertisement response message includes a plurality of conditional ad object. Each conditional ad object including ad content, one or more access mechanisms, and one or more conditions. The method includes selecting one or more of the plurality of conditional ad objects based on actual user data and the one or more conditions defined in the selected conditional ad objects. The actual user data contains verifiable information relating to the user or the user device. The method further includes, for each selected conditional ad object, displaying an advertisement that is based on the ad content and at least one access mechanism defined in the conditional ad object.

DETAILED DESCRIPTION

FIGS. 1A and 1Billustrate example environments10of an advertising system300that provides an advertisement response message110(“ARM”110) to a user device200in response to an advertisement request120(“ad request”120). In some implementations, the ad request120is transmitted with uncertain user data122. In some implementations, uncertain user data122contains actual user data124and noise data126. The actual user data124can be any data relating to the user or the user device200. Non-limiting examples of actual user data can include, but are not limited to, an age of the user, a home location of the user, a sex of the user, preferences of the user (e.g., “likes” on a social networking application), an online browser history of a user, a current location of the user device, and/or applications that are installed on the user device of the user. The noise data126is any data that is added to the actual user data124to obfuscate the actual user data124or otherwise remove the certainty of the actual user data124. Examples of noise data126are described in greater detail below, but may range from random bits added to a Bloom filter to a fake user profile that is merged with the actual user data124. In any scenario, the noise data126is added to the actual user data124to obfuscate the actual user data124in a manner where the actual user data124cannot be easily deciphered with any certainty when provided with the ad request120. The ad request120can be any data structure that is transmitted to the advertising system300via the network. In some implementations, the ad request120may identify an application (web or native application) that is being accessed by a user, a specific state of the application that is currently being visited by the user, a search query entered by the user, and/or an indication that the ad system300is to deliver an advertisement to the user device200.

In some implementations, uncertain data122may be demographic data that is based on probabilistic data. In these implementations, the demographic data may be requested and obtained from a third-party or otherwise external resource based on one or more features relating to the user device200or the user of the user device200. In some implementations, demographic data may be determined based on general identification data such as an age of the user, the sex of the user, a device type of the user device, browsing history of the user, purchase history of the user, and/or a location of the user. For example, a user may be located in a particular region and may have visited a particular website. In this example, the probabilistic data may find that the user has an 80% probability of being a female between the ages of 25 and 35. The demographic data may include a demographic profile that states the user is a female between the ages of 25 and 35, even though the user may or may not fit within this demographic. Upon receiving the ARM110in response to the ad request, the user device200may utilize actual user data124to verify one or more conditions in the respective conditional ad objects. In another example, demographic data may be determined using an IP address of the user device200. In another examples, the demographic data may be determined using a device type and/or coarse location (e.g., city and/or state) of the user device200. The user device200may request this information from the third party resource using the general identification data or the user device200may transmit the general identification data to the advertising system300, which in turn transmits the general identification data to the advertising system300. The third-party resource or external resource may provide the uncertain data to the user device200or the advertising system300.

The advertising system300receives the ad request120and the uncertain user data122and generates an ARM110based thereon. The ARM110contains a set of conditional advertisement objects112. A conditional advertisement object112may be any suitable data structure that contains data and/or instructions corresponding to a conditional advertisement that is presented by the user device200only when the user device200can verify a particular condition defined in the conditional advertisement object112using the actual user data124. For example, a user device200may have a first application, A, installed thereon but not a second application, B. The actual user data124indicates that A is installed on the user device200, but the noise data126may result in the uncertain user data122indicating that both A and B are installed on the user device200. The user device200transmits an ad request120and the uncertain user data122to the ad system300via a network150. The advertising system300may include a first conditional advertisement object that defines a first advertisement that is to be displayed if A is installed on the user device200and a second conditional advertisement object that defines a second advertisement that is to be displayed if B is installed on the user device200. The advertising system300may encode the first and second conditional advertisement objects112into an ARM110and may transmit the ARM110to the user device200. The user device200receives the ARM110and determines that it should display the first advertisement defined in the first conditional advertisement object112, but not the advertisement defined in second conditional advertisement object112because only A is installed on the user device200. In this way, the advertising system300is not able to discern whether A or B is installed on the user device200, but the user is presented with a targeted advertisement because the user device200can verify that A is actually installed on the user device200.

In the example ofFIG. 1Athe user device200transmits ad requests120directly to the advertising system300. In these examples, the user device200may be executing applications (native applications or web applications via a web browser) that are configured to request ads from the advertising system300. The advertising system300receives the ad request120and the uncertain user data122from a user device200and delivers the ARM110to the user device200in response to the ad request120and the uncertain user data122.

In the example ofFIG. 1B, a search system160transmits an ad request120to the advertising system300upon receiving a search query130and the uncertain user data122from the user device200. In some implementations, the search system160may include the search query130or a portion thereof in the ad request120, whereby the advertising system300utilizes one or more of the query terms of the search query130to select the conditional ads that are included in the ARM110. The search system160determines organic search results142and encodes the organic search results142with the ARM110in the search results140. The search system160provides the search results140to the user device200. The user device200then selects which conditional ad(s) to display in the search engine results page (SERP) based on the actual user data124.

As used herein, an advertisement can include any digital advertisement. An advertisement includes advertisement content (also referred to as “ad content”). A displayed advertisement may further include a user selectable link (also referred to as a “link”). A link, when selected by a user, sets the state of the user device200to a state of a software application. The link may include one or more access mechanisms, whereby the user device200accesses the linked to state of the software application using one of the one or more access mechanisms.

FIG. 2Aillustrates an example of a user device200configured to generate uncertain user data122based on actual user data124and to select conditional advertising objects based on the actual user data124. In the illustrated example, the user device200includes a processing device210, a storage device220, a network interface230, and a user interface240. The user device200may include additional components not shown inFIG. 2A. The components of the user device200may be interconnected by, for example, a bus or other communication circuitry.

The processing device210can include one or more processors that execute computer-executable instructions and associated memory (e.g., RAM and/or ROM) that stores the computer-executable instructions. In implementations where the processing device210includes more than one processor, the processors can execute in a distributed or individual manner. The processing device210can execute an operating system218, a search application212(which may be a native application), one or more native applications214, and a web browser216, all of which can be implemented as computer-readable instructions. The operating system218, the search application212(which may be a native application), the one or more native applications214, and/or the web browser216may include an advertisement module219.

The storage device220can include one or more computer-readable mediums (e.g., hard disk drives, solid state memory drives, and/or flash memory drives). The storage device220can store any suitable data that is utilized by the operating system of the user device200. The storage device220can be in communication with the processing device210, such that the processing device210can retrieve any needed data therefrom. The storage device220can store one or more instances of actual user data124. In some implementations, the storage device220can store one or more instances of uncertain user data122in addition to the actual user data124. The actual user data124and/or the uncertain user data122may be maintained by operating system218, the search application212(which may be a native application), the one or more native applications214, and/or the web browser216.

The network interface230includes one or more devices that are configured to communicate with the network150. The network interface230can include one or more transceivers for performing wired or wireless communication. Examples of the network interface230can include, but are not limited to, a transceiver configured to perform communications using the IEEE 802.11 wireless standard, an Ethernet port, a wireless transmitter, and a universal serial bus (USB) port.

The user interface240includes one or more devices that receive input from and/or provide output to a user. The user interface240can include, but is not limited to, a touchscreen, a display, a QWERTY keyboard, a numeric keypad, a touchpad, a microphone, and/or speakers.

The search application212generates and displays a graphical user interface (GUI) that allows users to enter search queries130and that renders and displays search results140that are responsive to the search queries130in the GUI. In some implementations, the search application212presents the search results140in a SERP. An individual search result can include a user selectable link. The user can select a user selectable link displayed in the search results140. In response to the user selection of the user selectable link, the search application212instructs the operating system218to access the state of the software application corresponding to the selected link.

The search application212receives a search query130from a user via a user interface240. The search application212transmits the search query130to the search system160via the network interface device230. In some implementations, the search application212generates a query wrapper (not shown) that includes the search query130and one or more context parameters. A context parameter is additional data that the search system160can utilize to determine the search results140(e.g., a geolocation of the user device200). The query wrapper may further include the obstructed user data122. The obstructed user data122may be stored in the storage device220and/or may be generated by an ad module219(discussed in greater detail below).

The search application212receives search results140from the search system160and renders the search results140based thereon. In some implementations, the search results140are encoded in container such as an iFrame or a .json file (or an analogous format). As previously indicated, the search results include organic search results142and one or more ARMs110. The search application212displays the organic search results142and one or more of the conditional ads contained in the one or more ARMs110, whereby the ARMs110contain one or more conditional ad objects112. In some implementations, ad module219determines which conditional ads to display, which is described in greater detail below.

The native applications214may be any native applications. Many native applications are configured to display advertisements. Thus, any of the native applications may include an ad module219that requests ads to display from the advertising system300. The ad module219is described in greater detail below. A native application214may receive an ARM110from the advertising system300. The ad module219analyzes the ARM110using actual user data124to determine which advertisements to display to the user. These advertisements may be presented by the native application via the user interface240.

The web browser216is a native application that allows users to access a web application edition of a software application. The web browser216quests content from a resource using an access mechanism (e.g., a URL) and displays the requested content. Either the web browser216itself or the web application edition may execute an ad module219.

An ad module219may be a set of computer readable instructions that are executed by the processing device210. Alternatively the ad module219may be implemented as a service. The ad module219contains logic for obtaining the obstructed user data122and selecting which conditional ads to display to the user. Furthermore, in some implementations, the ad module219generates and transmits an ad request120. An ad module219may be implemented in any suitable application (web or native).

In operation, the ad module219may be called in response to any number of actions. For instance, if the ad module219is called by the search application212, the ad module219may be called when a user initiates a search by entering a search query130. Similarly, if the ad module219is called by a native application214, the native application214may call the ad module219when the application transitions to a new state or is first launched.

In response to being called, the ad module219obtains the uncertain user data122. The uncertain user data122may be stored on the storage device220. Additionally or alternatively, the ad module219may retrieve actual user data124from the storage device220and/or from an external resource and may generate the uncertain user data122based on the actual user data124and noise data126. The uncertain user data122may be represented in any suitable data structure.

Actual user data124is any data that is specific to the user device200or a user associated with the user device200. Examples of actual user data124may include a list of native applications that are installed on the user device200, a list of native applications that have been uninstalled from the user device, a home location (e.g., city and state) of the user, a sex of the user, preferences of the user (e.g., “likes” on a social networking application), an age of the user, and/or an online browser history of a user. Actual user data124may be maintained by the operating system and/or applications that are executed by the user device200. In the event some of the actual user data124is maintained by a specific application, that actual user data124may be restricted to use only by the specific application, or may be shared when the user explicitly agrees to share that actual user data124with another application. Other actual user data124may be shared with any application. For example, a list of applications that are installed on or uninstalled from the user device200may be shared with the native applications of the user device200. The user may need to give explicit consent for an application to record the actual user data124.

Noise data126is any data that may be added to or included in the actual user data124to create the uncertain user data122. Put another way, noise data126is any data that may be added to the actual user data124such that the actual user data124cannot be determined with a certainty. The noise data126may be randomly generated data. The noise data126may be fake user data that is maintained by the user device200. As will be discussed in greater detail, fake user data is any information that is maintained by any application that appears to be actual user data124but does not actually reflect the actual user data124. For example, fake user data may include a fake list of applications that are installed on the user device200and a fake list of applications that have been uninstalled from the user device200. Additionally or alternatively, the fake user data may indicate a fake age of the user, a fake sex of the user, fake preferences of the user, fake location data of the user, and/or a fake browser history of the user.

In some implementations, the uncertain user data122is encoded in one or more Bloom filters. In these implementations, a Bloom filter is encoded with the actual user data124and noise data126. A Bloom filter is a probabilistic data structure (typically a binary array) that is used to determine whether a particular item is a member of a set. The binary array is an N bit array, where each bit is referenced by a number between 0 and N−1. A value representing an element may be encoded into the array using k different values between 0 and N−1. In particular, each potential item in a set is given a unique value. For instance, each known application may be assigned a unique value or each known song may be assigned a unique value. When an element (e.g., a value representing the item) is contained in the actual user data124(e.g., a particular native application is installed on the user device200), the ad module219can feed the value representing the item into k independent hash functions (where k is greater than or equal to one) or a single hash function that receives two or more parameters including the value representing the element, where the single hash function outputs k different hash values. For each of the hash values, the ad module219can set the bit corresponding to the hash value equal to one. For example, if the Bloom filter has a length of 128 bits, and the hash values corresponding to an element having a unique value of 10312014 are [10, 17, 39, and 94], the ad module can set the bits at spots 10, 17, 39 and 94 all equal to one. By doing so, the Bloom filter indicates that the element 10312014 is associated with the user device200. Examples of how to encode and decode a Bloom filter are described in U.S. patent application Ser. No. 14/288,058, the contents of which are hereby incorporated by reference. In addition to encoding applications that are installed on a user device200, other suitable data can be encoded in a Bloom filter, including but not limited to, geographic information, media contents on the device, browsing history, recently accessed information, preferences, personal information, and “likes” on social media platforms.

In implementations where the uncertain user data122is included in a Bloom filter, the ad module219can obtain the actual user data124from the storage device220. Each individual instance of actual user data124may be represented by a value. For each value, the ad module219can hash the value to obtain k different values and can set the corresponding bits in the Bloom filter equal to one. The ad module219can add noise data126to the Bloom filter in any suitable manner. In some implementations, the ad module219can randomly flip bits in the Bloom filter. By flipping a bit, the Bloom filter may have false negatives in addition to false positives. For example, when the ad module219randomly flips a bit from a one to a zero, one or more items that may have been indicated by the Bloom filter may no longer be indicated. Similarly, when the ad module219randomly flips a bit from zero to one, the ad module219may add one or more items to the uncertain user data122. In this way, when the uncertain user data122is communicated to the advertising system300, the advertising system300does not know with a certainty which items are actually indicated in the actual user data124corresponding to the user device200and/or user. In some implementations, the ad module219randomly flips zeros in the Bloom filter to ones, but not ones to zeros. In these implementations, the amount of false positives increases, but there are no false negatives.

In some implementations, the ad module219maintains a fake user data, which is used as the noise data126. For example, the ad module219can maintain a fake list of applications that are installed on the user device200and/or have been uninstalled from the user device200. The ad module219can maintain this list as if it were actual user data, such that when it encodes an actual list of installed and/or uninstalled applications into a Bloom filter, the fake list of installed and/or uninstalled applications into the Bloom filter. In this way, the advertising system300cannot monitor the uncertain user data122over a period of time to identify the actual user data124.

In some implementations, the uncertain user data122is stored in a user profile format. The user profile format may be a container (e.g., a JSON file or XML file) that stores different types of data in predefined fields. The user profile may include fields for information, including but not limited to demographic data (e.g., age, sex, hometown, etc.), a list of applications installed on the user device, a list of applications uninstalled on the user device, a browser history, and/or preferences (e.g., “likes” on social networking applications). In the event the user profile contains fields for demographic data, the fields may have multiple fields for one or more of the types of demographic data. For example, the user profile may indicate that the user is male and female and/or may indicate that the user has three different hometowns (e.g. Detroit, Mountain View, New York). In this way, the advertising system cannot determine with a certainty whether the user is male or female or where the user lives. The ad module219can generate the user profile using the actual user data124and noise data126. As was previously discussed, the ad module219can maintain fake user data, such as a fake list of installed applications, a fake list of uninstalled applications, a fake hometown of a user, fake preferences of a user and/or a fake browsing history. The ad module219can maintain the fake user data by randomly selecting items to include in the fake user profile or by probabilistically selecting items to include in the fake user profile. The ad module219can select from sets of known items that can be included in the fake user profile. For example, the ad module219can select from a known set of applications, a known set of preferences, a known set of web sites (for a browser history), a known set of cities, etc. The ad module219merges the actual user data124and the fake user data/profile to generate the uncertain user profile.

In some implementations, the ad module219may issue a request for the uncertain user data122from a third party resource. In these implementations, the third party resource may return the uncertain user data122in the form of demographic data. The ad module219may include information such as a location, sex, and/or age of the user to obtain the demographic data.

The ad module219(or the application calling the ad module219) may transmit the uncertain user data122to a remote computing device, such as an advertising system300, a search system160, or any other suitable device. In response to the uncertain user data122, the advertising system300outputs an ARM110, which is transmitted to the user device200(either directly or via another device). The specific details on how an ARM110is determined is discussed in greater detail below. The ad module219receives the ARM110and determines which of the conditional ad objects112to select for display based on conditions contained in the conditional ad objects112and the actual user data124. As some of the conditional ad objects112in the ARM110are included in the ARM110only because of the noise data126communicated in the uncertain user data122, the ad module219can filter out these conditional ad objects112.

FIG. 2Billustrates an example input and output of the ad module219when selecting ads to display according to some implementations of the present disclosure. In operation, the ad module219receives the ARM110. As previously discussed, each ARM110contains N conditional ad objects112, where N is an integer greater than or equal to one. Each conditional ad object112may contain one or more access mechanisms114, display data116, and one or more conditions118. In some scenarios, however, a conditional ad object112may contain zero access mechanisms114if the underlying advertisement does not link to resource. The conditions118may define logic that if satisfied makes the conditional ad eligible for selection. For example, the condition118may be if an application, A, is installed on the user device200then the conditional ad object112is eligible to be displayed. If this condition is not satisfied, then the conditional ad object112is not selected as it is not eligible to be displayed. In another example, the condition118may be if the user is a male and lives in the state of California, then the conditional ad object112is eligible to be displayed. The ad module219selects one or more of the conditional ad objects112in the ARM110based on the conditions118of the respective conditional ad objects112and the actual user data124that was used to generate the uncertain user data122. The conditional ad objects112that are selected by the ad module219for display may be referred to as selected ad objects280.

In some implementations, the ad module219assesses the conditional ad objects112in the ARM110in accordance with the respective rankings of the conditional ad objects112in the ARM110. Put another way, the ad module219analyzes the conditional ad objects112in the ARM110in the order in which the conditional ad objects112are stored in the ARM110. Furthermore, for each conditional ad object112, the ad module219accesses the actual user data124to determine whether the condition118defined in the conditional ad object112is met by the actual user data124. For example, the ad module219may begin by determining whether to select the first conditional ad object112contained in the ARM110. If the condition118of the first conditional ad is met by the actual user data124, then the conditional ad is selected for display. If the condition118is not met, then the conditional ad object112is disregarded and the ad module219assesses the second conditional ad object112. The ad module219iterates through the ARM110in this manner until it has selected a requisite number of selected ads280to display. For example, if the ads are to appear in a SERP, the SERP may have space allocated for two advertisements. Thus in such a scenario, the ad module219can select up to two conditional ad objects112to include in the SERP. In the example ofFIG. 2B, the ad module219has selected two selected ad objects280to be displayed. In this scenario, the conditions118of the selected conditional ad objects280were verified by the actual user data124. Once the conditional ad objects112have been selected, the application (e.g., native application, web application, or search application) that called the ad module219can render the selected ad objects280using the display data116and one or more access mechanisms (to the extent the selected ad object280includes access mechanisms). As the ad module219is responsible for selecting ad objects based on the actual user data124, the privacy of the user is better protected.

FIG. 3Aillustrates an example of an advertising system300. The advertising system300may receive ad requests120and uncertain user data122and may return an ARM110. The advertising system300may receive ad requests120from a user device200directly or from an intermediate device, such as a search system160. The advertising system300includes a processing system310, a storage system320, and a network interface340.

The processing system310is a collection of one or more processors that execute computer readable instructions. In implementations having two or more processors, the two or more processors can operate in an individual or distributed manner. In these implementations, the processors may be connected via a bus and/or a network. The processors may be located in the same physical device or may be located in different physical devices. Moreover, the processors may be located at different physical locations. The processing system executes an ARM determination module312.

The network interface device340includes one or more devices that perform wired or wireless (e.g., Wi-Fi or cellular) communication. Examples of the device types of the network interface device include, but are not limited to, a transceiver configured to perform communications using the IEEE 802.11 wireless standard, an Ethernet port, a wireless transmitter, and/or a universal serial bus (USB) port.

The storage system320includes one or more storage devices. The storage devices may be any suitable type of computer readable mediums, including but not limited to read-only memory, solid state memory devices, hard disk memory devices, and optical disk drives. The storage devices may be connected via a bus and/or a network. Storage devices may be located at the same physical location (e.g., in the same device and/or the same data center) or may be distributed across multiple physical locations (e.g., across multiple data centers). The storage system320stores an advertisement data store322. Example contents of the advertisement data store322is discussed in greater detail below.

The advertisement data store322stores an advertisement inventory. An advertisement, when rendered at a user device200, includes a user selectable link that links to a particular state of an application. Advertisements are provided by advertisers (i.e., any third party). Typically advertisers agree to pay a price-per-action for an advertisement. Examples of a price-per-action include a price-per-impression, a price-per-click, and a price-per-purchase. While price-per-action schemes are the most prevalent, advertisers may agree to other fee arrangements.

In some implementations, the advertisement inventory is comprised of a plurality of advertisement records324. Each advertisement record324corresponds to an advertisement.FIG. 3Billustrates an example of an advertisement record324. An advertisement record324may include an ad ID326, triggering data328, ad content330, one or more access mechanisms332, a fee arrangement334, and one or more conditions336.

The ad ID326can be any string of letters, numbers, and/or characters that uniquely identify the advertisement from other advertisements. The ad ID326may be a unique number, a URL corresponding to the ad, a text string describing the advertised state or any other suitable string. The ad ID326may be generated and assigned to the record324when the record is generated by the advertising system300.

The triggering data328is the data that causes the ARM determination module312to include the advertisement in an ARM110. Put another way, the ARM determination module312identifies advertisement records324based the contents of the ad request120and the triggering data328of the advertisement records324. Triggering data328can include keywords, application state identifiers (e.g., URLs or state IDs), application identifiers (e.g., application names or application IDs), or user preferences (e.g., “likes” on a social networking application). The triggering data328can be indexed in an inverted index that is queried with information from an ad request120(e.g., one or more keywords, an application state, an application identifier, or a user preference) and outputs advertisement records324that contain the triggering data or the ad IDs326of such advertisement records324.

The ad content330includes any data that is displayed in the advertisement when rendered. Ad content330can include text (e.g., a description of the linked to state or a description of a product), visual data such as icons or pictures, video data, or any other suitable data. The ad content330may include the actual data, pointers to memory locations where the actual data may be found, or locations of third party resources (e.g., URLs) from which the third party data may be requested. The ad content330may be included in a conditional ad object112as the display data116when the advertisement record324is selected by the ARM determination module312for inclusion in an ARM110.

The one or more access mechanisms332are the access mechanisms that link to the linked to state of an application. As a state of an application may be accessed using different application editions (e.g., web application editions or different native application editions), there may be more than one access mechanism that may be used to access a state. For instance, a first access mechanism may be a URL used to access a state of an application via a web browser. A second access mechanism may be an application resource identifier that is used to access the same state of the application via a first native application edition configured for a first operating system. A third application access mechanism may be an application resource identifier that is used to access the same state via a second native application edition configured for a second operating system.

The fee arrangement334may define the agreement between an advertiser and the advertising system300. The fee arrangement334can define the action that the advertiser wishes to pay for. For example, the fee arrangement334can define whether the advertiser agrees to pay for an impression, a click, or a purchase. The fee arrangement334also defines the cost per action. For example, the cost may be fifty cents per click or ten cents per impression.

The conditions336define conditions that must be satisfied in order for the ad to be displayed. In some implementations, the conditions are defined as Boolean statements that when satisfied may result in the impression of the corresponding advertisement. For example, a condition of an advertisement may be: If the set of installed applications includes Application A then display the advertisement. In another example, the condition may be: If the user likes basketball on a social media platform and the user device has Application B installed thereon, then display the advertisement. In another example, the condition may be: If the user has visited website A in the past month and lives within 100 miles of this city then display the advertisement. The conditions336can be expressed in any suitable notation without departing from the scope of the disclosure.

Referring back toFIG. 3A, the ARM determination module312may be comprised of a set of computer readable instructions that are executed by the processing system310. In some implementations, the ARM determination module312receives an ad request120and uncertain user data122and returns an ARM110. The ARM determination module312uses the content of the ad request120and/or the uncertain user data122to determine which conditional ads to include in the ARM110.

In some implementations, the ARM determination module312receives the ad request120and the uncertain user data122and identifies one or more advertisement records324based on the ad request120and/or the uncertain user data122. In some implementations, the ARM determination module312queries the inverted index with content contained in the ad request120and/or the uncertain user data122. The inverted index returns advertisement records324(or ad IDs326thereof) that have triggering data328that matches to the content in the ad request120or in the uncertain user data122. The ARM determination module312ranks the returned advertisement records324. In some implementations, the ARM determination module312can rank the returned advertisement records324based on a respective score of each advertisement record324.

The score of an advertisement record324can be calculated in any suitable manner. In some implementations, the score may be based on the expected value of the advertisement. The expected value may be calculated at request time or may be calculated off-line. In the event that the expected value is calculated at request time, the expected value may be a function of the ad request, the uncertain user data, the fee arrangement and/or historical data relating to the advertisement. For instance, in a cost-per-click fee arrangement, the expected value may be the product of the price per click and the probability of a click given the ad request120and the uncertain user data122. Put another way, the expected value is based on the probability that the ad would be clicked on taking the information in the ad request120and the uncertain user data122as true. Thus, the ARM determination module312may reference historical data to determine how often the particular ad is selected when displayed in response to certain data (i.e., the data of the ad request120or the uncertain user data122). In other examples, if the fee arrangement is a cost-per-impression arrangement, then the expected value is equal to the cost-per-impression, as the probability of an impression is one. The foregoing ignores the fact that the ad module219that requested the ad may not actually display the ad due to a condition of the ad not being met by the actual user data or the ranking of the ad being too low. The foregoing scenarios do not affect the expected value of the ad. In other implementations, the ARM determination module312determines the score of an ad based on a degree to which the triggering data328of an advertisement record324matches the content of the ad request120and/or the uncertain user data122. For instance, if the triggering data328contains keywords and the ad request120includes terms from a search query, then the score of the advertisement record324may be based on the degree to which the keywords in the triggering data328match the terms of the search query. In other implementations, the ARM determination module312may utilize scoring functions to score the advertisement records324. Additionally or alternatively, the ARM determination module312may determine feature vectors corresponding to each advertisement record324and may feed the feature vectors into a machine learned scoring model (e.g., gradient boosted decision trees). In these implementations, the scoring model outputs a score of the advertisement record324based on the feature vector and previously learned data. The feature vector may include features of the advertisement records itself, features of the content of the ad request120and uncertain user data122, and features of the content of the ad request120and uncertain user data122in relation to the advertisement record. The ARM determination module312can determine the score of an advertisement record in any other suitable manner.

The ARM determination module312can rank the advertisement records324based on their respective scores. The ARM determination module312then generates an ARM110based on the ranked advertisement records324. The ARM determination module312may select the highest M ranking advertisement records for inclusion in the ARM110or may include all of the ranked advertisement records for inclusion in the ARM110. For each advertisement record324that is to be included in the ARM110, the ARM determination module312generates a conditional ad object112based on the advertisement record324. The conditional ad object112includes display data116that is based on the content data330contained in the advertisement record324and one or more conditions118based on the conditions336contained in the advertisement record324. The conditional ad object112may further include one or more access mechanisms114based on the access mechanism(s)332contained in the advertisement record324. The conditional ad object112may include instructions and additional data that is used to render the ad at the user device200. The ARM determination module312inserts the conditional ad objects in the ARM110in accordance with rankings of the respective advertisement record324. The conditional ad object corresponding to the highest ranking advertisement record324is inserted in the first element of the ARM110, the conditional ad object corresponding to the second highest ranking advertisement record324in the second element of the ARM110, and so on and so forth. In this way, the ad module219that provided the ad request120can begin with the first element of the ARM110and can iterate through the ARM110to determine which ads to display.

In some implementations, the ARM determination module212may include one or more unconditioned conditional ad objects112at the end of the ARM110. The unconditioned conditional ad objects112correspond to ads that are to be displayed if none of the conditions of the higher ranked conditional ad objects112are met by the actual user data124. In this way, if all of the conditional ad objects are included in the ARM110as a result of noise data, the ad determination module312may still display an ad to the user. Furthermore, one or more of the unconditioned conditional ad objects may be identical to one or more of the conditional ad objects that have conditions, such that if the ad determination module312provides feedback to which ads are selected by a user, the advertising system300may still be precluded from determining the user's actual user data with a high degree of certainty.

The ARM determination module312(or a related module) transmits the ARM110to a downstream device. In some implementations, the ARM determination module312transmits the ARM110directly to the user device200that provided the uncertain user data122. In other implementations, the ARM determination module312transmits the ARM110to an intermediate device such as a search system160or an application system (e.g., an application server) of a third-party application. In this scenario, the intermediate device may transmit the ARM110to the user device200that provided the uncertain user data122.

FIG. 4is a flow chart illustrating an example set of operations of a method400for displaying advertisements on a user device. The method400helps protect the privacy of users. The method400may be executed by a processing device210of a user device200. For purposes of explanation, the method400is described with respect to an ad module219, which may be called by any suitable application.

At410, the ad module219obtains uncertain user data122. The ad module219may be called by, for example, a native application214, a web browser216, and/or search application212(which may also be a native application214). For example, a native application214may be configured to display ads to users or a search application212may be configured to include ads in a SERP. In the former scenario, the ad module219may include the uncertain user data122with an ad request120. In the latter scenario, the ad module219may include the uncertain user data122with a search query130. The ad module219can retrieve the uncertain user data122from the storage device220of the user device200or may generate the uncertain user data122at call time. In the former scenario, the ad module219can generate the uncertain user data122at any suitable time (e.g., daily or weekly) and store the generated uncertain user data122in the storage device220. In either scenario, the ad module219generates the uncertain user data122based on actual user data124and noise data126. In some implementations the noise data126is random data that is added to the actual user data124. In other implementations, the noise data126is a fake user profile that the ad module219maintains. The structure of the uncertain user data122may be any suitable structure, including a Bloom filter or a user profile. In some implementations, the ad module219may obtain the uncertain user data122in the form a demographic data. The ad module219may obtain this data from a third-party resource or may maintain this data based on collected statistical data.

At operation412, the ad module219transmits the uncertain user data122to a remote computing device. The remote computing device may be the advertising system300, a search system160, or any other suitable device. The ad module219may transmit the uncertain user data122to the remote computing device independently or with a request such as an ad request120or a search query130.

At operation414, the ad module219receives an ARM110from the remote computing device. The ARM110includes a plurality of conditional ad objects112. Each conditional ad objects includes display data116, one or more access mechanisms114, and one or more conditions118(FIG. 2B). The ad module219may receive the ARM110independently or with other data (e.g., in a set of search results142).

At operation416, the ad module219selects one or more conditional ad objects112based on the one or more conditions defined in the selected conditional ad objects and the actual user data124. In implementations where the ARM110is a data structure containing ordered elements (e.g., an array), the ad module219iteratively analyzes each conditional ad object112according to the ordering of the ARM110. For each conditional ad object112, the ad module219checks the condition(s)118of the conditional ad object112against the actual user data124. If the actual user data124matches the condition(s)118of the conditional ad object112, the ad module219includes the conditional ad object112in the ads to be displayed. If the conditions118of the conditional ad object112are not met, the ad module219may ignore the conditional ad object112. The ad module219can continue in this manner until a maximum number of conditional ad objects112are selected or the ad module219has iterated through the entire ARM110. The maximum number of conditional ad objects112may be defined by the application that calls the ad module219and/or by the ad module219. At operation418, the ad module219can render and display the ads in the displayed screen (e.g., GUI) of the application that called the ad module219.

FIG. 5illustrates an example method500for generating an ARM110. The method500may be performed by any suitable device. For purposes of explanation, the method500is explained with respect to the advertising system300described above.

At operation510, the ARM determination module312receives an ad request120and uncertain user data122from a remote computing device. The remote computing device may be a search system, a user device, an application server, or the like. The ad request120may include any suitable data, including but not limited to, query terms provided in a search query, a URL of an accessed application state, or an application identifier of an accessed application. The uncertain user data122may indicate any suitable data that may correspond to the user and/or the user device200. The uncertain user data122includes actual user data124and noise data126. In some implementations, the ARM determination module312decodes the uncertain user data122. For instance, if the uncertain user data122is contained in a Bloom filter, the ARM determination module312may query the Bloom filter to determine which items are likely encoded in the Bloom filter.

At operation512, the ARM determination module312identifies a plurality of advertisement records324from the advertisement data store322based on the ad request120and/or the uncertain user data122. In some implementations, the ARM determination module312queries an inverted index with the content of the ad request120and/or instances of the uncertain user data122. For example, the ARM determination module312may query the inverted index with one or more query terms contained in the ad request120or data contained in the uncertain user data122(e.g., application identifiers indicated in the uncertain user data122or media contents indicated in the uncertain user data). The inverted index may return advertisement records324that were relevant to the content used to query the inverted index.

At operation514, the ARM determination module312ranks the identified advertisement records324. The ARM determination module312may score each advertisement record324. The ARM determination module312may score the advertisement records324in any suitable manner. The ARM determination module312may score the advertisement records324based on an expected value of each advertisement record324. The ARM determination module324may score the advertisement records324based on a degree to which the triggering data of each advertisement record324matches the content of the ad request120and/or the uncertain user data122. Additionally or alternatively, the ARM determination module312may score the advertisement records324based on the degree to which the content of the ad request120and/or the uncertain user data122match the advertisement record. The ARM determination module312may score the advertisement records122using predetermined scoring functions. The ARM determination module312may determine feature vectors corresponding to each advertisement record324and may feed the feature vectors into a machine learned scoring model (e.g., gradient boosted decision trees). In these implementations, the scoring model outputs a score of the advertisement record324based on the feature vector and previously learned data. The feature vector may include features of the advertisement records itself, features of the content of the ad request120and uncertain user data122, and features of the content of the ad request120and uncertain user data122in relation to the advertisement record. The ARM determination module312may determine the score of the records324in any other suitable manner. The ARM determination module312ranks the advertisement records324based on their respective scores.

At operation516, the ARM determination module generates an ARM110based on the ranked advertisement records324. The ARM determination module312may generate an ordered data structure (e.g., an array), whereby the each element of the data structure contains a conditional ad object112. For each scored advertisement record324or for each of the N highest scoring advertisement records324, the ARM determination module312generates a conditional ad object112for the advertisement record324. The ARM determination module312may instantiate a conditional ad object and may assign values to the conditional ad object based on the corresponding advertisement record324. The ARM determination module312may include the ad content330, the one or more access mechanisms332, and the one or more conditions336contained in the advertisement record324in the conditional ad object112. The ARM determination module312includes the populated conditional ad object112in the ARM110in accordance with its ranking. Thus, the conditional ad object112corresponding to the highest scoring advertisement record324is inserted in the first element of the ordered data structure, the conditional ad object corresponding to the second highest scoring advertisement324is inserted in the second element of the ordered data structure, and so on and so forth.

At operation518, the ARM determination module312transmits the ARM110to the remote computing device. The ARM determination module312may transmit the ARM110to the remote computing device that requested the ARM110. The ARM determination module312may transmit the ARM110to the remote computing device that will ultimately display one or more of the advertisements defined in the ARM110(e.g., a user device). The ARM determination module312may transmit the ARM110to a search system, a user device, an application server, or the like.

The methods400,500ofFIGS. 4 and 5are provided for example. Variations of the methods300,400are contemplated and are within the scope of the disclosure.

As used in throughout the application, the term “software application” can refer to a software product that causes a computing device to perform a function. In some examples, a software application may also be referred to as an “application,” “an app,” or a “program.” Example software applications include, but are not limited to, productivity applications, social media applications, messaging applications, media streaming applications, social networking applications, and games. Software applications can perform a variety of different functions for a user. For example, a restaurant reservation application can make reservations for restaurants. As another example, an internet media player application can stream media (e.g., a song or movie) from the Internet. The functions of an application can be accessed using native application editions of the software application and/or web application editions of the software application.

A native application edition (or “native application”) is, at least in part, installed on a user device200. In some scenarios, a native application is installed on a user device200, but accesses an external resource (e.g., an application server) to obtain data from the external resource. For example, social media applications, weather applications, news applications, and search applications may respectively be accessed by one or more native application editions that execute on various user devices200. In such examples, a native application can provide data to and/or receive data from the external resource while accessing one or more functions of the software application. In other scenarios, a native application is installed on the user device200and does not access any external resources. For example, some gaming applications, calendar applications, media player applications, and document viewing applications may not require a connection to a network to perform a particular function. In these examples, the functionality of the software product is encoded in the native application editions itself. The native application edition is able to access the functions of the software application without communicating with any other external devices.

Web application editions (also referred to as “web applications”) of a software application may be partially executed by a user device200(e.g., by a web browser executed by the user device200) and partially executed by a remote computing device (e.g., a web server or application server). For example, a web application may be an application that is executed, at least in part, by a web server and accessed by a web browser (e.g., a native application) of the user device200. Example web applications may include, but are not limited to, web-based email, online auctions websites, social-networking websites, travel booking websites, and online retail websites. A web application accesses functions of a software product via a network. Example implementations of web applications include webpages and/or HTML-5 application editions.

In some scenarios, a software application may be accessed by one or more native application editions of the software application and/or one or more web application editions of the software application. In these scenarios, there may be overlap between the states or functions that the native application edition(s) can access and the states or functions that the web application edition can access. A user device200can access a state of a software application via an edition of the software application using an access mechanism.

Examples of access mechanisms can include, but are not limited to, application access mechanisms, web access mechanisms, application download addresses, and scripts. An application access mechanism may be a string that includes a reference to a native application and indicates one or more parameters or operations that the user device200uses to access the referenced state. An application resource identifier is an example application access mechanism.

A web access mechanism may be a string that includes a reference to a web application edition of a software product, and indicates one or more parameters and/or operations for a web browser to execute. A web access mechanism may be a resource identifier that includes a reference to a web resource (e.g., a page of a web application/website). For example, a web access mechanism may refer to a uniform resource locator (URL) used with hypertext transfer protocol (HTTP). If a user selects a user selectable link including a web access mechanism, the user device200may launch a web browser application and may pass the resource identifier to the web browser. The web browser can utilize the resource identifier to retrieve the web resource indicated in the resource identifier and/or access a function of the software application indicated by the resource identifier.

An application download access mechanism may indicate a location (e.g., a digital distribution platform) where a native application can be downloaded in the scenario where a native application edition of the application is not installed on the user device200. If a user selects a user selectable link including an application download access mechanism, the user device200may access a digital distribution platform from which the referenced native application edition may be downloaded. The user may opt to download the native application edition. Upon doing so, the user device200may launch the native application edition and may access the state of the software application using the native application edition and an application access mechanism associated with the user selectable link.

A script is a set of instructions, that when executed by the user device200cause the user device to access a resource indicated by the script. For example, the script may instruct an operating system of the user device200to launch the native application, and may define one or more additional instructions to access a particular state of the application. Another type of access mechanisms may include scripts, which may be used instead of other type of access mechanism when an edition of a software application is not configured to be referenced by the other types of access mechanisms.

While an advertisement does not require a link, an advertisement typically contains a link that is based on one or more access mechanisms. In the event a state of an application may be accessed using multiple editions, the linked to state may be accessed with multiple different access mechanisms depending on the configuration of the application. The advertising system300may, however, include conditional advertisement objects used to render any suitable advertisements.