Online advertising is a significant revenue source for providers of Web content and applications. In general, advertisers pay when an advertisement is clicked, and thus it is desirable when relevant advertisements are shown. Targeting mechanisms for finding relevant advertisements are generally based on matching the advertisements to delivery context, such as keywords extracted from a current search query or webpage, or keywords found through various semantic associations
To further increase the relevance of advertisements, advertising personalization, traditionally referred to as behavioral targeting, has been attempted in various ways. Current behavioral targeting is generally based upon demographic data and membership in predefined segments (e.g., “Gaming Enthusiasts”).
While behavioral targeting thus provides some improvement, current behavioral targeting operates at a relatively coarse granularity, in that many users are clustered together into the same profile. As a result, many of the advertisements that are shown are still irrelevant to many users. Any improvement in providing more relevant advertisements is beneficial to users, advertisers and web content/application providers.
This Summary is provided to introduce a selection of representative 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 in any way that would limit the scope of the claimed subject matter.
Briefly, various aspects of the subject matter described herein are directed towards a technology by which per-user profile data is maintained and used as a factor in selecting content (e.g., advertisements) based upon a current context and/or user interaction with one or more of the advertisements. In this way, the selected content may be personalized for each user.
In one implementation, the per-user profile data is maintained at the client-side, such as in a browser cookie. When a content provider (e.g. an advertising platform) receives the per-user profile data and the current context information, the advertising platform may select the advertisements based upon the current context information and the per-user profile data, as well as advertiser bid data. For example, an advertiser may be willing to bid more (or less) to have an advertisement shown when the keywords in the current context correspond to keywords in the user profile data that indicate a particular area of interest to the user and advertiser.
Content may be personalized in other ways based upon the per-user profile data, such as to rank advertisements relative to one another based upon the per-user profile data. Similarly, other personalization may be performed, such as to change the presentation (e.g., color, size, audio and/or other concepts) of at least one of the advertisements based upon the per-user profile data.
The content provider may update the per-user profile data based upon the current context, such as if the update increases the expected utility of the profile data. For example, machine learning can determine parameters that are used in determining whether data in the current context will increase the utility of the profile data if added to the profile data.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
Various aspects of the technology described herein are generally directed towards constructing and updating user profiles that are stored per client (e.g., on the client/user side) and used in the selection and/or presentation of advertisements. In one implementation, such profiles are concise, as well as human-readable and user editable such that users have direct control over their profiles and are able to enhance and modify them, e.g., by modifying, adding or removing data.
As a result of having per-user profile data, more relevant advertisements (as well as possibly other content) may be provided to each specific user. Moreover, having profiles stored on the client side avoids privacy issues that may arise when storing profile data on the server side (the advertising platform).
It should be understood that any of the examples herein are non-limiting. As one example, while selecting relevant advertisements is one use of user profiles, other usages are feasible, including personalizing search results for a user, whether for an internet or intranet search. As another example, personalized recommendations may be provided, e.g., product recommendations on a shopping site. As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used in various ways that provide benefits and advantages in computing and search technology in general.
Each user profile (e.g., 102) is constructed so as to generally summarize the interests and/or preferences of the user (historical and/or predicted) for subsequent use by the advertising platform 106 in advertisement selection 108. In one implementation, user profiles are data structures generally comprised of components (e.g., terms such as keywords, categories, product names) and/or associated information (e.g., weights, frequencies, last-used-dates, categories or other labels). For example, the profile data may record a number of search occurrences per user:
Ui={occi1,occi2, . . . },where occij=<keyword, time, type, match>.
Keyword represents the query or advertising keyword, time is the time the event occurred, type may be “search”, “ad”, or “adclick” (ad means an advertisement for the given keyword was shown to the user, but the user did not click), and match may be “exact”, “broad”, or “phrase”, depending on the match type between the query and advertising keyword. Such data may be processed to determine which data to keep in the user profile 102 (constructed and compacted) based on user behavior history, e.g., by using machine learning methods that optimize expected utility of the profile for the purpose of serving relevant advertisements to the user, as described below.
In one implementation, the user profile 102 is maintained in a browser cookie. However, as can be readily appreciated, other data structures are suitable, e.g., a client device may have its own application that retrieves advertisements, and that application may maintain the user profile's data as suitable for its purposes.
While there is no absolute size limitation on the amount of profile data that may be maintained for a given user, there may be practical limitations, e.g., based on client storage, network traffic and so forth. For example, in an implementation that uses a browser cookie, a practical limit (e.g., 1 KB to 4 KB) may be present, and thus a compact user profile is desirable. Compaction may be achieved by selecting a limited set of components to maintain for the user, e.g., those that maximize utility as described below.
As represented in
With respect to the advertisements selected according to the user profile (as well as other information such as time-of-day, or day-of-week that may be considered), an advertiser may choose to show advertisements only for certain users, based on their past or expected future behavior. By modeling each user's interests, the advertising platform 106 may select additional advertisements over those selected based on just the context (e.g., the current query or web page context).
By way of example, an advertiser may bid more to show an advertisement if one (or more) of the per-user profile data's keywords match (not necessarily exactly) the current context's keywords for which the advertiser is otherwise interested in showing advertisements. Thus, advertiser bid data, the current context's keywords and the per-user profile data's keywords are used as a basis for advertisement selection.
Further, the presentation of the advertisements may be personalized. For example, certain advertisements may be ranked relatively higher in appearance order when they are deemed related to the use's interests. The actual appearance of the advertisement may be modified by the advertising platform 106, (possibly as specified by the advertiser), e.g., to match preferences of certain users by having different color schemes or visual layouts based upon different user demographics. Similarly, the text of an advertisement may be altered to better suit the likely interests of the user. The advertisement platform also may suppress an advertisement based on the user profile, e.g., to not to show any advertisements at all, or to show fewer advertisements than otherwise. Also, as described below, the advertising platform 106 may charge advertisers more for clicks from users who are more likely to make a purchase based on their user profile data.
As further shown in
Note that in one implementation, some of the information may be maintained for a user on the server side or elsewhere. For example, private information may be maintained on the client side, however generic information (as is done today) may be maintained on the server, and mixed in an appropriate way with the client-side profile data. A user may choose a privacy level for example, that balances the information maintained on the client versus that maintained on the server. Also, some or all of the user profile data may be cached online rather than physically on the client device.
As mentioned above, the user may be able to edit his or her profile, to add, remove or modify information, such as terms, categories and product names. If the information is maintained in text (or decrypted from encrypted text that helps maintain privacy when communicating the information), any text editor may suffice, however a more specific editing application may be used. For example, computed or other information such as weights, frequencies, last-used-dates, categories or other labels may not be directly edited, or may be editable only within certain limits (e.g., a user can only increase or decrease a weight within an allowed range).
As can be readily appreciated, there is a significant amount of information that is available for a typical user, however only some of it is of interest to an advertising platform. For example, a user may have a few areas of interest, with only a rare deviation from those areas. In general, it is desirable to construct and maintain a compact profile that may be efficiently accessed and processed by the advertising platform in a way that allows the relevant information about the user to be easily extracted. A function of the profile update mechanism 110 is thus to determine whether or not to add components (and thus potentially remove other components) based upon the current context. As described below, this may be based on an estimation of the utility of adding the components (or not adding them).
While any mechanism may be used to determine whether and how to update a user profile given a current context, such as a simple rule-based mechanism, one more sophisticated algorithm for constructing such a profile operates to maximize an objective function (find the parameters) so as to maximize the value of the profiles to the overall utility used in the advertising platform. A general goal is to include information in the profile corresponding to a search/query that the user will likely submit again, and then click on an advertisement after such a search.
The utility measurement may depend on the specific monetization model utilized by the advertising platform. One example of such a model is bid increments, in which advertisers specify an increase in the amount they pay to the platform when their advertisement is clicked by a user whose profile indicates that the advertisement is specifically relevant to that user. Bid increments may be used with various monetization mechanisms, such as CPC (cost-per-click) or CPM (cost-per-impression).
Optimal profile construction is basically equivalent to considering the possible profiles for a given user, estimating a utility score for each one, and choosing the profile that has maximum expected utility. In the context of bid increment personalized advertising, the utility of the profile may be measured by the total amount of additional revenue that it contributes. The overall contribution of the profile can be decomposed via the contributions of individual keywords; (note however that if multiple keywords result in a bid increment, the increment is only charged once, as described below with reference to the set of profile components having the submodular property). The task of constructing a maximum-utility profile is then basically equivalent to computing the expected utility of each potential profile component (e.g., keyword), and selecting the set of components that results in maximum overall utility. However, this is computationally expensive, and instead a profile that is reasonably good yet efficiently found is selected, as described herein.
In this model, a bid increment is charged only once, even if multiple profile components trigger the bid increment. Thus, the overall profile utility is a submodular function: informally, the utility of adding a keyword to a profile is less or equal to the utility of the keyword itself. For example, adding “cat” to a profile that already includes “dog” may lower the utility because the addition will not change the profile much (either will trigger the same advertisement) yet will remove another keyword that will no longer be available for a bid increment. Thus, the profile construction problem may be solved as an instance of submodular minimization problem, (which is NP-hard, but for which efficient
—approximation algorithms exist). The profile construction problem comprises the task of identifying a maximal-utility set K={k1 . . . kn} of at most n components out of P relevant components associated with the user:
Profile(User)=argmaxK:|K|<n,K⊂PUtility(K)
Actual component utility is dependent on the specific monetization mechanism. For a bid increment setting implementation, it is equivalent to the revenue difference attributed to the bid increments that were triggered by the profiles times the (estimated) number of times a user will click on an advertisement that had the resulting bid increment. For any individual component (e.g., keyword), the utility can be computed by machine learning methods, which utilize historical data from users (which may be groups of similar users rather than all users) to perform estimation of expected revenue from a given keyword. There are a number of specific learning method implementations that are available, which can approximate the computation of expected bid increment revenue in various ways.
A particular decomposition can approximate bid increment revenue by estimating the expected number of clicks on ads for the keyword for the user via a parametric model (such as decision tree ensembles or neural networks), where the parameters θ are learned based on historical data about users clicking on advertisements for particular keywords:
Given the sparsity of click events, an approximation of the expected number of clicks may be based on estimating the expected number of searches related to the keyword, multiplied by the predicted clickthrough rate for those searches for the user:
Utility(k)≃MLSearchesθ(k)×E[CTR(k)]×BidIncrement(k)
By way of a summary,
Step 306 represents processing the candidate advertisements, which in this example is shown by selecting one at a time, however advertisements may be selected and/or processed in parallel. Step 308 determines whether the selected candidate advertisement is to be suppressed for any reason, such as if it may be offensive to that particular user as known from the profile data. Note that suppression may be built into step 304, e.g., only non-suppressed advertisements may be initially selected.
Step 310 represents evaluating whether the advertisement is to have its presentation such as its appearance modified and/or configured in any way based upon the profile data, including any changes to highlighting, coloring, flashing and/or movement and the like, as well as changes to text and/or images, and/or audio, animation and so forth turned on or off. If so, step 312 represents making the changes.
Step 314 repeats for other candidates, until zero or more advertisements remain. These may be ranked relative to one another at step 316, and (if any remain) are returned to the requesting entity, e.g., a search engine that will place one or more of them in a search results page.
Steps 320 and 322 represents the profile updating operations based upon the current context. As described above, the various profiles may be computed (step 322) and the profile with the maximum expected utility is returned (although if unchanged the user profile need not be returned).
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well-known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to
The computer 410 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 410 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer 410. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above may also be included within the scope of computer-readable media.
The system memory 430 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 431 and random access memory (RAM) 432. A basic input/output system 433 (BIOS), containing the basic routines that help to transfer information between elements within computer 410, such as during start-up, is typically stored in ROM 431. RAM 432 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 420. By way of example, and not limitation,
The computer 410 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media, described above and illustrated in
The computer 410 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 480. The remote computer 480 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 410, although only a memory storage device 481 has been illustrated in
When used in a LAN networking environment, the computer 410 is connected to the LAN 471 through a network interface or adapter 470. When used in a WAN networking environment, the computer 410 typically includes a modem 472 or other means for establishing communications over the WAN 473, such as the Internet. The modem 472, which may be internal or external, may be connected to the system bus 421 via the user input interface 460 or other appropriate mechanism. A wireless networking component such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a WAN or LAN. In a networked environment, program modules depicted relative to the computer 410, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
An auxiliary subsystem 499 (e.g., for auxiliary display of content) may be connected via the user interface 460 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary subsystem 499 may be connected to the modem 472 and/or network interface 470 to allow communication between these systems while the main processing unit 420 is in a low power state.
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention.