Patent Description:
Present techniques for accurately distributing content from publishers to users across multiple publisher platforms generally require users to link accounts between publishers. However, such linking is not always technically feasible or desirable due to privacy concerns. Accordingly, one approach is for each publishing platform to transmit the full set of content to a user, even when another publisher platform is likely to independently transmit some of this content to the same user. As a result, a user sometimes receives unnecessary copies of content, which in turns results in excessive use of network bandwidth and processing power. <CIT> discloses estimating reach overlap and unique reach for delivery of content items.

<CIT> discloses a content delivery frequency capping method.

A system generates a model of content presentations from multiple independent (disjoint) publishers to users via client devices. The system uses the generated model to create virtual user identifiers and determine which virtual user identifiers are associated with each of the multiple disjoint publishers. The system categorizes the virtual user identifiers, so that virtual user identifiers associated with more than one of the multiple disjoint publishers form a category of overlapping user identifiers, and virtual user identifiers associated with a single publisher form a category of unique user identifiers. Using the number of overlapping user identifiers and the number of unique user identifiers for each publisher, the system determines a frequency capping value for each publisher. The system then uses the frequency capping to limit transmissions via each publishing platform.

The system may use virtual person identifiers (VPIDs) as the virtual user identifiers and may subsequently determine distinct virtual user identifiers by sampling and/or using cookies associated with a geographic region. The system may also use other information associated with the cookies, such as a demographic of network users, timestamps of events, and information from one or more sensors.

The system may modify a predetermined initial frequency capping value to determine the proper frequency capping value for each publisher using the number of overlap user identifiers, the number of unique user identifiers for a publisher, the number of total user identifiers for the publisher, and the number of impressions shown to overlap users to determine the proper frequency capping values.

An invention is set out in the appended claims. According to a first aspect, there is provided a method for improving accuracy of distributing content from a plurality of publishers to a multiplicity of users while maintaining user privacy, wherein at least some of the multiplicity of users have accessed content from the plurality of publishers using different respective user identifiers. The method includes: generating, by one or more processors, a statistical model of presentations of content from the plurality of publishers to the multiplicity of users; determining, using the statistical model for each of the multiplicity of users, one or more user identifiers corresponding to the user, to define a virtual user identifier, wherein each of the user identifiers is associated with a different one of the plurality of publishers; determining, using the statistical model and the virtual user identifiers, how many of the multiplicity of users are associated with multiple ones of the plurality of publishers, to generate an overlap metric; generating, using an overlap metric, a respective frequency capping value for each of the plurality of publishers; and causing each of the plurality of publishers to limit a number of times a content element is provided to the multiplicity of users in accordance with the respective frequency capping value.

In this aspect, each virtual user identifier is defined using cookies associated with a geographic region. In an embodiment, the method further comprises: compiling a set of cookies, each cookie of the set of cookies associated with a user identifier of the one or more user identifiers; and assigning each cookie of the set of cookies to a virtual user identifier of the virtual user identifiers based on at least the geographic region associated with the respective cookie.

In another variation of this embodiment, compiling the set of cookies includes sampling a subset of cookies based on the cookies associated with the geographic region.

In yet another variation of this embodiment, each virtual user identifier is further constructed based on at least one of: a demographic of network users in the geographic region, timestamps of events in the geographic region, and information from one or more sensors.

In still yet another variation of this embodiment, the respective frequency capping value for each of the plurality of publishers is further generated based on a corresponding multiplier for each publisher and a predetermined initial frequency capping value.

In another variation of this embodiment, the respective frequency capping value for each of the plurality of publishers is further generated based on how many of the multiplicity of users are associated with a single publisher of the plurality of publishers.

In yet another variation of this embodiment, the respective frequency capping value for each of the plurality of publishers is calculated using the equation: Fpx = F * <MAT>, and further wherein: Fpx is the respective frequency capping value for publisher x of the plurality of publishers; F is a predetermined initial frequency capping value; OverlapUserIDspx is the overlap metric, the overlap metric how many of the multiplicity of users are associated with multiple ones of the plurality of publishers including the publisher x; OverlapImpressionspx is a number of presentations shown to OverlapUserIDspx for the publisher x; TotalUserIDspx is a total number of user identifiers associated with the publisher x; and Σi OverlapImpressionspi is a sum of OverlapImpressions for each publisher i of the plurality of publishers, including at least publisher x.

In still yet another variation of this embodiment, the method further includes receiving a predetermined initial frequency capping value; and modifying the predetermined initial frequency capping value for each publisher of the plurality of publishers based on the respective frequency capping value for the respective publisher of the plurality of publishers.

In another variation, the respective frequency capping value for each publisher of the plurality of publishers is further based on a predetermined time period.

In yet another variation, each of generating the statistical model, determining to define a virtual user identifier, determining how many of the multiplicity of users are associated with multiple ones of the plurality of publishers, generating the respective frequency capping value for each of the plurality of publishers, and causing each of the plurality of publishers to limit the number of times the content element is provided to the multiplicity of users repeats after the predetermined time period elapses.

In still yet another variation, the one or more user identifiers are disconnected across the plurality of publishers.

In another variation of this embodiment, the plurality of publishers consists of two publishers and wherein determining how many of the multiplicity of users are associated with multiple ones of the plurality of publishers is determining how many of the multiplicity of users are associated with both of the plurality of publishers.

In yet another variation, each virtual user identifier of the virtual user identifiers is a virtual person identifier (VPID).

In still yet another variation of this embodiment, each virtual user identifier of the virtual user identifiers is an internet protocol (IP) address.

Another example embodiment of these techniques is a system comprising processing hardware and configured to implement a method according to any of the preceding variations and/or embodiments.

A data processing server, a client device, and/or publisher devices implement the techniques of this disclosure to calculate and implement a frequency capping value to limit the number of content media elements transferred to the client device. The data processing server uses a number of virtual identifiers to determine an approximate number of unique and overlapping users between the publishers and, subsequently, to calculate and implement the frequency capping value.

Referring first to <FIG>, an example content management system <NUM> for distributing media content elements among multiple computing devices includes a data processing server <NUM>, a client device <NUM>, a first publisher <NUM>, and a second publisher <NUM>, all communicatively coupled via a network <NUM>. In some implementations, the data processing server <NUM> may include a database <NUM> and a number of logic modules, such as a bidding module <NUM>, a virtual identifier module <NUM>, and a frequency capping module <NUM>.

The data processing server <NUM> includes at least one processor and a memory. The memory stores computer-executable instructions that, when executed by the processor, cause the processor to perform one or more of the operations described herein. Depending on the implementation, the processor(s) may include any of a microprocessor, application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), etc., or combinations thereof. Similarly, the memory can include any of electronic, optical, magnetic, or any other storage or transmission device capable of providing the processor with program instructions. The memory can further include any or all of a floppy disk, CD-ROM, DVD, magnetic disk, memory chip, ASIC, FPGA, read-only memory (ROM), random-access memory (RAM), electrically-erasable ROM (EEPROM), erasable-programmable ROM (EPROM), flash memory, optical media, or any other suitable memory from which the processor can read instructions. The instructions can include code from any suitable computer-programming language. Though not illustrated in <FIG>, the data processing server <NUM> can include and/or is communicatively coupled to one or more computing devices or servers that can perform various functions.

The instructions stored in the memory of data processing server <NUM> may be instructions for implementing the various functionalities described herein for respective systems, as well as any data relating thereto, generated thereby, or received via the communications interface(s) or input device(s) (if present). In some implementations, the data processing server <NUM> includes the memory to store data structures and/or information related to, for example, software components of the data processing server <NUM> and/or algorithms used in calculating a respective frequency capping value for publishers, as described in more detail below. In some such implementations, the memory includes or is part of the database <NUM>. The processor(s) may execute instructions stored in the memory and, in so doing, may also read from and/or write to the memory various information processed and/or generated pursuant to execution of the instructions.

The processor(s) of the data processing server <NUM> also may be communicatively coupled to and/or control a communications interface of the data processing server <NUM> to transmit and/or receive various information pursuant to execution of instructions via the network <NUM>. For example, the communications interface(s) may be coupled to a wired or wireless network, bus, and/or other communication means, and may therefore allow the data processing server <NUM> to transmit information to and/or receive information from other devices (e.g., other computer systems). Moreover, one or more communication interfaces facilitate information flow between the components of the data processing server <NUM>. In some implementations, the communications interface(s) may be configured (e.g., via various hardware and/or software components) to provide a website to at least some aspects of the data processing server <NUM> as an access portal.

Further, the data processing server <NUM> may include output devices that, for example, allow a user to view and/or otherwise perceive various information in connection with the execution of the instructions. Similarly, the data processing server <NUM> may include input devices that, for example, allow a user to make manual adjustments, make selections, enter data, and/or interact in any of a variety of manners with the processor during execution of the instructions. Additional information relating to a general computer system architecture that may be employed for various systems discussed herein is provided further herein.

The network <NUM> can be and/or include computer networks such as the Internet, a local area network (LAN), a wide area network (WAN), a metropolitan area network, one or more intranets, a satellite network, a cellular network, an optical network, other types of data network, or a combination thereof. The data processing server <NUM> is capable of communicating via the network <NUM> with the first and second publisher computing devices <NUM> and <NUM>, and/or the one or more client devices <NUM>. The network <NUM> can include any number of network devices, such as gateways, switches, routers, modems, repeaters, and wireless access points, among others. The network <NUM> can also include computing devices such as computer servers. The network <NUM> can also include any number of hardwired and/or wireless connections.

The first and second publisher computing devices <NUM> and <NUM> can include servers or other computing devices operated by a content publishing entity to provide primary content for display via the network <NUM>. The primary content can include websites, webpages, client applications, gaming content, or social media content among others for display on the client devices <NUM>. The primary content can include search results provided by search engines. Pages, video segments, or other units of the primary content can include executable instructions, such as instructions associated with content (or ad) slots that cause the client device <NUM> to request third-party content from the data processing server <NUM> or other remote systems when the primary content is displayed on the client device.

The client device <NUM> can include a computing device configured to acquire and display primary content provided by the first and second publisher computing devices <NUM> and <NUM> as well as content (e.g., third-party content items such as texts, software programs, images, and/or videos) provided by the data processing server <NUM>. The client device <NUM> can request and receive such content via the network <NUM>. The client device <NUM> can include a desktop computer, laptop computer, tablet device, smartphone, personal digital assistant, mobile device, consumer computing device, server, digital video recorder, set-top box, smart television, video game console, or any other computing device capable of communicating via the network <NUM> and consuming media content. While <FIG> shows a single client device <NUM>, the system <NUM> can include a plurality of client devices <NUM> served by the data processing server <NUM>.

The data processing server <NUM> can include a third-party content placement system, e.g., an ad server or ad placement system. The data processing server <NUM> includes a number of logic modules. In some such implementations, the data processing server <NUM> includes a bidding module <NUM>, a virtual identifier module <NUM>, a frequency capping module <NUM>, and a database <NUM>. Depending on the implementation, each of the bidding module <NUM>, virtual identifier module <NUM>, and frequency capping module <NUM> can be implemented as a software module, hardware module, or a combination of both. For example, each of these modules can include a processing unit, server, virtual server, circuit, engine, agent, appliance, or other logic device such as programmable logic arrays configured to communicate with the database <NUM> and/or with other computing devices via the network <NUM>. The computer-executable instructions of the data processing server <NUM> can include instructions, which, when executed by one or more processors, cause the data processing server <NUM> to perform operations discussed below with regard to the bidding module <NUM>, virtual identifier module <NUM>, and frequency capping module <NUM>, or a combination thereof.

The database <NUM> can maintain a data structure such as a table of virtual user identifiers, corresponding user identifiers and/or characteristics, and cookies associated with the virtual user identifiers. The database can further maintain one or more data structures regarding publisher identifiers and/or information, such as a tree, a linked list, a table, a string, or a combination thereof. The database can further use the one or more data structures to keep track of the assets used in distributing content to client devices <NUM>.

The bidding module <NUM> can facilitate a content bidding process, such as real-time bidding (RTB). In some implementation, a user visits a website and/or a platform controlled by a content publisher. The visit triggers a bid request that may include one or more cookies that the user has given permission for the content publisher to use. The content publisher transmits the information to the bidding module <NUM> of the data processing server <NUM>, which facilitates the bidding process with one or more content providers. The content providers may then submit bids to the bidding module <NUM>, which then determines the highest bidder.

In some implementations, the bidding module <NUM> may additionally or alternatively receive a frequency or predetermined initial frequency capping value with which to serve the media content elements to the user as part of a content campaign. For example, the highest bidder may bid to display <NUM> copies of a particular media content element in a campaign to a user. The data processing server <NUM> may determine how to distribute the elements between multiple publishers using the techniques as described herein via the virtual identifier module <NUM> and frequency capping module <NUM> before finalizing and/or distributing the campaign.

The virtual identifier module <NUM> retrieves user identifier information from the network <NUM>, the bidding module <NUM>, and/or the database <NUM> and defines and/or causes the data processing system <NUM> to define virtual user identifiers using the retrieved user identifier information. For example, the virtual identifier module <NUM> may retrieve geographical location cookies from the network <NUM> and, based on differences in the cookies, assign the cookies to a number of constructed virtual user identifiers. Using the characteristics of the cookies, the virtual identifier module <NUM> may then determine which virtual user identifiers are associated with both the first publisher <NUM> and the second publisher <NUM>, and/or any other publishers not shown. The virtual identifier module <NUM> may then classify such virtual user identifiers as overlap identifiers and may classify virtual user identifiers associated with only a single publisher as unique identifiers.

The frequency capping module <NUM> retrieves data from the virtual identifier module <NUM> including the classified list of virtual user identifiers. Using the number of overlap and unique identifiers for a given publisher, the frequency capping module <NUM> calculates an adjusted frequency capping value for the given publisher. In some implementations, the frequency capping module <NUM> retrieves further information from the bidding module <NUM>, database <NUM>, and/or network <NUM> to perform the calculations. For example, in some implementations, the frequency capping module retrieves a predetermined initial frequency capping value from the bidding module <NUM> as well as an algorithm or statistical model from the database <NUM>.

Referring next to <FIG>, a method <NUM> can be implemented for a number of publisher platforms, such as an example pair of publisher platforms <NUM>. The pair of publisher platforms include accounts unique to the first publisher platform, accounts unique to the second publisher platform, and overlapping accounts for both platforms. Depending on the implementation, the publisher platforms <NUM> may be implemented in the system and devices of <FIG>.

In method <NUM>, at block <NUM>, the system <NUM> generates a statistical model of presentations of content from a plurality of publishers to a multiplicity of users. Depending on the implementation, the publisher platforms <NUM> may include any number of publishers. For the sake of clarity of illustration, <FIG> illustrates an exemplary pair of two disjoint publisher platforms from separate publishers, publisher platform <NUM> and publisher platform <NUM>. However, the methods described herein can be expanded such that a system <NUM> working with any number of publishing platforms may implement the techniques described herein.

In some implementations, the system <NUM> uses a non-deterministic model as a method of improving privacy for users. Because the model is non-deterministic, the system <NUM> does not directly link a user or real-world identity to the identifiers through the impressions or events taken as an input to the model. Instead, the model may link presentations of content, also known as impressions, to identifiers that are more broadly applicable to groups for the sake of preserving privacy. For example, the system <NUM> may instead associate the impressions and events with an internet protocol (IP) address or an internet service provider (ISP) identifier. For further enhanced privacy, the system <NUM> may associate the impressions and events with a virtual person identifier (VPID) as described in more detail below.

At block <NUM>, the system <NUM> determines, using the statistical model for each of the multiplicity of users, one or more user identifiers corresponding to the user, to define a virtual user identifier, wherein each of the user identifiers is associated with a different one of the plurality of publishers. Each of publisher platforms <NUM> and <NUM> has a number of virtual user identifiers associated with the publisher platforms <NUM> and <NUM>. Some virtual user identifiers are unique to each publisher platform <NUM> and <NUM>, such as unique virtual user identifiers <NUM> and <NUM>, unique to publisher platform <NUM> and <NUM>, respectively. In addition to unique virtual identifiers <NUM> and <NUM>, publisher platforms <NUM> and <NUM> have overlap in virtual user identifiers. Overlap 330A and 330B collectively represent the overlap in accounts for both platforms <NUM> and <NUM>. Similarly, overlap virtual user identifiers 335A and 335B collectively comprise the overlap identifiers between the publisher platforms <NUM> and <NUM>.

In some implementations, the virtual user identifiers <NUM>, <NUM>, 335A, and 335B are user accounts or are associated with user accounts on publisher platforms <NUM> and <NUM>. In other implementations, the virtual user identifiers <NUM>, <NUM>, 335A, and 335B are identifiers associated with cookies for a geographic location. In some such implementations, the accounts <NUM>, <NUM>, 335A, and 335B correspond with VPIDs or IP addresses rather than direct user accounts. As such, the instant techniques provide a measure of anonymity and privacy over the use of direct user accounts. Moreover, in implementations in which the virtual user identifiers <NUM>, <NUM>, 335A, and 335B are VPIDs or IP addresses rather than accounts, the instant techniques provide a wider range of applicability and generality over techniques that require direct user accounts.

In implementations in which the system <NUM> associates the impressions and events with a VPID, the model may be a model that receives event-level data about impressions and outputs a VPID and/or information about a VPID. For example, in some such implementations, the model receives records of single ads being displayed on a website once, i.e., event-level impressions, and determine that some of the ads were displayed to different VPIDs. As such, the system <NUM> determines that ads were displayed to different "people," further causing the system <NUM> to determine to define virtual user identifiers for the different "people. " In such implementations, the VPIDs do not necessarily represent real people, and instead may represent different constructive people-i.e., the VPIDs instead represent fake "people" that are approximations of the number and/or characteristic of actual people. As such, the system <NUM> may define VPIDs without relying on direct knowledge or characteristics of users. This use of VPIDs allows for better accuracy in determining a frequency capping value while preserving the privacy of users making use of publisher platforms <NUM> and <NUM>.

In some implementations, the VPIDs are constructed by labelling cookies according to geographic location where the impression occurred. For example, if three impressions occurred in geo region <NUM> and four impressions occurred in geo region <NUM>, the system <NUM> may determine that there are two VPIDs being serviced. Moreover, each VPID may be further constructed based on any or all of a demographic of network users in the geographic region, timestamps of events in the geographic region, common network traffic in the geographic region, and/or information from one or more sensors, such as a smart device.

Furthermore, to improve processing power and reduce network traffic, the system <NUM> can sample cookies rather than assign all cookies to a VPID. As the average internet or network user can use hundreds or thousands of cookies for even brief sessions of activity, large quantities of cookies are redundant for the purpose of differentiating between VPIDs. As such, in some implementations, the system <NUM> samples some number of cookies and complies a subset of relevant VPID cookies rather than assigning all cookies to VPIDs. The system <NUM> then constructs each VPID by segmenting the subset of VPID cookies, and each VPID corresponds to a different segment of the subset of cookies. For example, the system <NUM> may sample <NUM> in every <NUM> cookies, <NUM> in every <NUM> cookies, <NUM> in every <NUM> cookies or any other suitable sampling rate. Depending on the implementation, the system <NUM> may use a predetermined sampling rate and/or the system <NUM> may modify the sampling rate according to an input.

At block <NUM>, the system <NUM>, using the statistical model and the virtual user identifiers, how many of the multiplicity of users are associated with multiple ones of the plurality of publishers, to generate an overlap metric. In some implementations, the system <NUM> determines how many of the users are associated with multiple publishers by identifying user identifiers with similar characteristics or traits. For example, determining that a set of cookies originate from a similar geographic location from similar sites or regarding similar content from publishers may be sufficient for a system <NUM> to determine that the set of cookies is associated with the same virtual user identifier. As such, the overlap metric denotes that the virtual user identifier in question is an overlap identifier.

In further implementations, the system <NUM> additionally or alternatively uses further identifying characteristics such as a demographic of network users in the geographic region, timestamps of events in the geographic region, common network traffic in the geographic region, and/or information from one or more sensors, such as a smart device. In implementations in which the system <NUM> uses cookies to identify overlap user identifiers, the system <NUM> may use a subset of the cookies as described with more detail in <FIG> below.

At block <NUM>, the system <NUM> generates, using the overlap metric, a respective frequency capping value for each of the plurality of publishers. In some implementations, the system <NUM> generates the respective frequency capping value using a number of variables defined by information gathered at blocks <NUM>, <NUM>, and <NUM>. In some such implementations, the system <NUM> defines at least the following variables: UniqueUserIDs, OverlapUserIDs, TotalUserIDs, OverlapImpressions, and EligibleImpressions. The TotalUserIDspx represents the total number of unique virtual user identifiers from a given publisher x. UniqueUserIDspx represents the total number of unique virtual user identifiers from the publisher x, and the OverlapUserIDspx represents the total number of unique virtual user identifiers that overlap between the publisher x and another publisher. In some implementations, there may only be two publishers <NUM> and <NUM> for the algorithm to analyze, and thus OverlapUserIDsp<NUM> = OverlapUserIDsp<NUM>. In further implementations, there may be a greater number of publishers for the algorithm to analyze, and, as such, OverlapUserIDsp<NUM> ≠ OverlapUserIDsp<NUM>. OverlapImpressionspx refers to the number of content presentations (i.e., impressions) the system <NUM> shows to OverlapUserIDspx.

Depending on the implementation, EligibleImpressionspx refers to the total number of impressions that a publisher x is eligible for and may be calculated using the above-noted variables and a predetermined initial capping value. In some such implementations, the system <NUM> calculates the EligibleImpressionspx for a publisher x according to the equation EligibleImpressionspx = F * UniqueUserIDspx + F * <MAT>. For example, in implementations in which the publishing platforms <NUM> include two publisher platforms <NUM> and <NUM> for publishers <NUM> and <NUM>, respectively, EligibleImpressionsp<NUM> = F * UniqueUserIDsp<NUM> + F * <MAT> and EligibleImpressionsp2 = F * UniqueUserIDsp<NUM> + F * OverlapUserIDsp<NUM> * <MAT>.

Further, the system <NUM> may calculate the adjusted frequency capping value for each publisher x according to the equation Fpx = F * Mpx, where Fpx is the adjusted frequency capping value for each respective publisher x, F is a predetermined initial frequency capping value on a particular media content element being presented, and Mpx is a particular multiplier for the publisher x based on the variables described above. In some implementations, <MAT> <MAT>. As such, Mpx = <MAT>.

At block <NUM>, the system <NUM> causes each of the publishers to limit a number of times a content element is provided to the multiplicity of users in accordance with the respective frequency capping value. In some implementations, the system <NUM> initially transmits the predetermined initial capping value before subsequently transmitting a message including a command to modify the predetermined initial capping value by the calculated multiplier to each of the publisher platforms <NUM> and <NUM>. In other implementations the system <NUM> transmits a message including a command to replace the predetermined initial capping value with the adjusted frequency capping value. In still other implementations, the system <NUM> does not initially transmit the predetermined initial capping value, but instead uses the predetermined initial capping value only in calculating the adjusted frequency capping value before transmitting the adjusted frequency capping value to the publishers.

Depending on the implementation, the predetermined initial capping value and/or the adjusted frequency capping value may include a time frame aspect. For example, the predetermined initial capping value may command a publisher to present a media content element no more than <NUM> times, or the value may command a publisher to present a media content element no more than <NUM> times per week. In implementations in which the predetermined initial capping value and the adjusted frequency capping value include a time frame aspect, the system <NUM> may perform the method <NUM> for the publisher platforms <NUM> at least once per time frame completion (e.g.. , once per week, etc.).

<FIG> illustrates a block diagram of an example model <NUM> using VPIDs to determine the number of unique and overlap user identities. Depending on the implementation, the model <NUM> may be implemented in the system and devices of <FIG>.

In an example implementation of model <NUM>, the system <NUM> may query the publishers the system analyzes to obtain information and/or identifiers related to the users using a publisher platform, such as platforms <NUM> and/or <NUM> of <FIG>. In some implementations, the publisher in turn queries one or more databases with relevant information. In further implementations, the system <NUM> directly queries the publisher databases and/or servers. For the sake of clarity, <FIG> is illustrated depicting four databases queried by the system <NUM>. However, other implementations of the techniques described herein are described by <FIG>. For example, each publisher may have a single database rather than multiple databases.

In an example implementation of model <NUM>, the system <NUM> queries each of databases <NUM>, <NUM>, <NUM>, and <NUM>. In some implementations, database <NUM> is a user characteristic database <NUM> for a first publisher, database <NUM> is a content display database <NUM> for the first publisher. In further implementations, databases <NUM> and <NUM> are a user characteristic database <NUM> and a content display database <NUM>, respectively, for the second publisher.

In some implementations, the system <NUM> provides at least the server or database IP address, a process ID, and a <NUM>-digit Unix time code timestamp when querying each database <NUM>, <NUM>, <NUM>, and/or <NUM>. The databases <NUM>-<NUM> then provide the requested traits to the system <NUM>. In some implementations, the system <NUM> receives the information from the publishers at respective virtual identifier module <NUM> and/or databases <NUM> and <NUM>. In further implementations, the databases <NUM> and <NUM> of system <NUM> then sort the information into a list at each database and/or for each publisher by virtual user identifier, using techniques described above with regard to <FIG>.

The system <NUM> then determines, at frequency capping module <NUM> and/or a database <NUM>, the number of unique and overlap virtual user identifiers by comparing the lists of user events sorted by VPID and, depending on the implementation, by sorting out a list of unique virtual user identifiers and overlap virtual user identifiers for each publisher, 440A and 440B.

<FIG> illustrates an example messaging diagram <NUM> depicting relevant network traffic for a system <NUM> implementing the techniques described herein and a system implementing techniques known in the art. Message events depicted using a dashed line are unnecessary message events that only exist in a system implementing techniques known in the art, while message events depicted using a solid line take place for a system <NUM> implementing the techniques discussed herein and a system implementing techniques known in the art. The message diagram <NUM> depicts an example of network traffic while implementing techniques, not the methodology of the techniques described herein-an example of which may be seen in method <NUM> of <FIG>.

At step <NUM>, a client device <NUM> begins a network browsing session connected to a communication network through any known techniques, such as via <NUM>, <NUM>, <NUM>, Wi-Fi, Bluetooth, etc. During the browsing session, the client device transmits <NUM> and <NUM> access requests to at least the first publisher <NUM> and the second publisher <NUM>, respectively. Depending on the implementation, the client device <NUM> may transmit <NUM> and <NUM> the access requests to access a webpage or application of each of the first publisher <NUM> and second publisher <NUM>. In further implementations, rather than access requests, the client device <NUM> may transmit a request to download data at servers for each of first publisher <NUM> and second publisher <NUM>. After receiving <NUM> the access request, the first publisher <NUM> transmits <NUM> an impression request to the data processing server <NUM>. The impression request is a request from the first publisher for content and/or for a number of impressions of content to display to a user at the client device <NUM>.

After receiving <NUM> the impression request, the data processing server <NUM> transmits <NUM> an acknowledgement of the request to the first publisher <NUM>. In some implementations, the data processing server <NUM> transmits the content element and/or a cap for impressions to the first publisher <NUM> in addition to or in place of the acknowledgement. Similarly, after receiving <NUM> the access request from the client device <NUM>, the second publisher <NUM> transmits <NUM> an impression request. Subsequently, the second publisher <NUM> receives <NUM> a request acknowledgement from the data processing server. In some implementations, the data processing server <NUM> transmits the content element and/or a cap for impressions to the second publisher <NUM> in addition to or in place of the acknowledgement.

Further, the timing of events <NUM> and <NUM> are flexible when compared to each other and to event pairs <NUM>/<NUM> and <NUM>/<NUM>. As such, events <NUM>, <NUM>, and <NUM> may precede events <NUM>, <NUM>, and <NUM>. Alternatively, events <NUM>, <NUM>, and <NUM> may precede events <NUM>, <NUM>, and <NUM>. In other implementations, client device <NUM> may transmit both access requests <NUM> and <NUM> before events <NUM>/<NUM> and <NUM>/<NUM> occur.

At event <NUM>, the data processing server <NUM> determines the number of impressions each of the first publisher <NUM> and the second publisher <NUM> should transmit to the client device <NUM>. In some implementations, the data processing server <NUM> makes the determination using the techniques as described herein, such as the method <NUM> illustrated in <FIG> and described above.

Although <FIG> depicts event <NUM> as occurring after events <NUM>-<NUM>, the timing of event <NUM> is flexible and event <NUM> may be implemented earlier in the process. For example, the data processing server <NUM> may determine the number of impressions at event <NUM> before the client device <NUM> begins the session <NUM>. In such implementations, the data processing server <NUM> may transmit content elements for impressions and/or a cap value for impression presentations to the first publisher <NUM> and/or second publisher along with transmitting <NUM> and <NUM> the request acknowledgements. In some such implementations, the data processing server <NUM> determines the number of impressions at event <NUM> prior to events <NUM>-<NUM> and updates the impression cap values after events <NUM>-<NUM> instead.

The data processing server <NUM> then transmits <NUM> an impression quantity message to the first publisher <NUM> and transmits <NUM> an impression quantity message to the second publisher <NUM>. In some implementations, the impression quantity messages include a frequency capping value for the respective publisher telling each of publisher <NUM> and <NUM> the number of times to display a media content element to a user of a client device <NUM>. In further implementations, the impression quantity messages include the media content element for the publisher to display. In some implementations, the impression quantity message transmitted <NUM> to the first publisher <NUM> and the impression quantity message transmitted <NUM> to the second publisher <NUM> are identical in format and/or in content.

After receiving <NUM> the impression quantity message, the first publisher <NUM> transmits 524A a first impression event <NUM> to the client device <NUM>, causing the client device <NUM> to display the media content element a first time. The first publisher <NUM> repeats the transmission of the impression event until reaching the cap set by the data processing server <NUM> in the impression quantity message received <NUM> by the first publisher <NUM>. In the example messaging diagram <NUM> of <FIG>, the data processing server <NUM> has a predetermined initial capping value of <NUM>, meaning that the data processing server attempts to cause the client device <NUM> to display <NUM> copies of a media content element to the user. Using traditional techniques known in the art, the data processing server <NUM> is unaware that the client device <NUM> accessing both the first publisher <NUM> and the second publisher <NUM> is the same client device <NUM>. As such, using traditional techniques, the first publisher <NUM> transmits 524A, 524B, 524C, 524D, and 524E each of a first copy, second copy, third copy, fourth copy, and fifth copy of the impression event, respectively (Impression Event <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>) to the client device <NUM>. Further, the second publisher transmits 528A, 528B, 528C, 528D, and 528E each of a sixth copy, seventh copy, eighth copy, ninth copy, and tenth copy of the impression event, respectively (Impression Event <NUM>, <NUM>, <NUM>, <NUM>, and <NUM>) to the client device <NUM>. Therefore, the data processing server <NUM> instructs each of the first publisher <NUM> and the second publisher <NUM> to cause the client device <NUM> to display the media content element <NUM> times, leading to a total of <NUM> impressions on the user-twice as many impressions as desired and twice as much network traffic as necessary.

Using the present techniques discussed herein, however, the data processing server determines that the first publisher <NUM> should cause the client device <NUM> to display <NUM> impressions and the second publisher <NUM> should cause the client device <NUM> to display <NUM> impressions. As such, the first publisher transmits 524A-C and the second publisher transmits 528A-C three copies each of the impression event (Impression Events <NUM>-<NUM> and <NUM>-<NUM>) to the client device <NUM> before the client device <NUM> ends the session at event <NUM>. Therefore, the client device displays the media content element <NUM> times, decreasing the number of impressions displayed and the amount of network traffic.

Though <FIG> depicts the transmission <NUM> of the message to the first publisher <NUM> before the transmission <NUM> of the message to the second publisher, in some implementations the order is reversed. Further, though <FIG> depicts events 524A-E occurring directly after event <NUM> and events 528A-E occurring directly after event <NUM>, this is for the sake of clarity. Events 524A-E and 528A-E may occur in any order and/or substantially simultaneously. Similarly, though events <NUM> and 524A-E occur after events <NUM>-<NUM>, they may occur before events <NUM>-<NUM>. The above is also true for events <NUM> and 528A-E with regard to events <NUM>-<NUM>.

While <FIG> illustrates a reduction in network traffic of four messages, these numbers are only exemplary, and in general the scenario of <FIG> can involve any suitable number of messages. For example, the predetermined initial capping value may be dozens or hundreds of impressions of a media content element, depending on the implementation, leading to greater reductions in network traffic. Further, the reduction in network traffic is in aggregate across all devices accessing the publishers. As such, the techniques described herein improve the network traffic of a system <NUM>, improve the accuracy of distribution of media content elements by ensuring that the proper recipient receives the correct number of impression events, improve the distribution spread of impression events by allowing additional impression events to be transmitted to a wider array of users, and improve the privacy of a user by avoiding direct connections of user accounts and personal data, as is described above with reference to <FIG>.

The following additional considerations apply to the foregoing discussion.

In some implementations, "message" is used and can be replaced by "information element (IE)". In some implementations, "IE" is used and can be replaced by "field". In some implementations, "configuration" can be replaced by "configurations" or the configuration parameters.

A user device in which the techniques of this disclosure can be implemented can be any suitable device capable of wireless communications such as a smartphone, a tablet computer, a laptop computer, a mobile gaming console, a point-of-sale (POS) terminal, a health monitoring device, a drone, a camera, a media-streaming dongle or another personal media device, a wearable device such as a smartwatch, a wireless hotspot, a femtocell, or a broadband router. Further, the user device in some cases may be embedded in an electronic system such as the head unit of a vehicle or an advanced driver assistance system (ADAS). Still further, the user device can operate as an internet-of-things (IoT) device or a mobile-internet device (MID). Depending on the type, the user device can include one or more general-purpose processors, a computer-readable memory, a user interface, one or more network interfaces, one or more sensors, etc..

Certain embodiments are described in this disclosure as including logic or a number of components or modules. Modules may be software modules (e.g., code, or machine-readable instructions stored on non-transitory machine-readable medium) or hardware modules. A hardware module is a tangible unit capable of performing certain operations and may be configured or arranged in a certain manner. A hardware module can include dedicated circuitry or logic that is permanently configured (e.g., as a special-purpose processor, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC), a digital signal processor (DSP)) to perform certain operations. A hardware module may also include programmable logic or circuitry (e.g., as encompassed within a general-purpose processor or other programmable processor) that is temporarily configured by software to perform certain operations. The decision to implement a hardware module in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

When implemented in software, the techniques can be provided as part of the operating system, a library used by multiple applications, a particular software application, etc. The software can be executed by one or more general-purpose processors or one or more special-purpose processors.

Claim 1:
A method for improving accuracy of distributing content from a plurality of publishers (<NUM>, <NUM>) to a multiplicity of users while maintaining user privacy, wherein at least some of the multiplicity of users have accessed content from the plurality of publishers using different respective user identifiers; the method comprising:
generating (<NUM>), by one or more processors, a statistical model (<NUM>) of presentations of content from the plurality of publishers to the multiplicity of users;
determining (<NUM>), using the statistical model for each of the multiplicity of users, one or more user identifiers corresponding to the user, to define a virtual user identifier (<NUM>, <NUM>), wherein each of the user identifiers is associated with a different one of the plurality of publishers and defining the virtual user identifier includes assigning cookies associated with a respective geographic region to the virtual user identifier;
determining (<NUM>), using the statistical model and the virtual user identifiers, how many of the multiplicity of users are associated with multiple ones of the plurality of publishers, to generate an overlap metric;
generating (<NUM>), using the overlap metric, a respective frequency capping value for each of the plurality of publishers; and
causing (<NUM>) each of the plurality of publishers to limit a number of times a content element is provided to the multiplicity of users in accordance with the respective frequency capping value.