System and method for privacy-preserving determination of intersections of sets of user identifiers
By hashing user interactions and constructing vector data structures, the problem of third parties being difficult for estimating the total number of interactions between users and multiple content items is solved, and the anonymity and privacy of user interaction data are achieved.
Patent Information
- Application Number
- CN202080005451.8
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-10-03
- Filing Date
- 2020-05-29
- Publication Date
- 2025-04-11
- Estimated Expiration
- 2040-05-29
AI Technical Summary
While maintaining user privacy, it is difficult for third parties to effectively estimate the total number of interactions between users and content items collections from two different content delivery platforms.
By hashing the user interaction, each user interaction corresponds to a deterministic bit set, constructing a vector data structure, and sending it to a third party, who can estimate the total number of user interactions through statistical analysis.
It is realized that the total number of interactions between the user and multiple content item collections is estimated without exposing the user's private information, ensuring the anonymity and privacy of the user's interactive data.
Smart Images

Figure CN112789617B_ABST
Abstract
Description
[0001] This application claims the following benefits and priorities:
[0002] U.S. Patent Application No. 16 / 592,190, filed October 3, 2019, which is itself a continuation of and claims priority to:
[0003] U.S. Patent Application No. 16 / 564,116, filed on September 9, 2019, which itself claims the following benefits and priority:
[0004] U.S. Provisional Patent Application No. 62 / 877,251, filed on July 22, 2019, and U.S. Provisional Patent Application No. 62 / 870,970, filed on July 5, 2019;
[0005] U.S. Patent Application No. 16 / 592,190, filed October 3, 2019, also claims the following benefits and priority:
[0006] U.S. Provisional Patent Application No. 62 / 877,251, filed on July 22, 2019, and U.S. Provisional Patent Application No. 62 / 870,970, filed on July 5, 2019; and
[0007] This application also claims the following rights and priorities:
[0008] U.S. Provisional Patent Application No. 62 / 877,251, filed on July 22, 2019, and U.S. Provisional Patent Application No. 62 / 870,970, filed on July 5, 2019.
[0009] The contents of each of the above-identified applications are incorporated herein by reference in their entirety. Background Art
[0010] In a computer networking environment such as the Internet, third-party content providers provide third-party content items to be displayed on end-user computing devices. These third-party content items, such as advertisements, can be displayed on web pages associated with corresponding publishers. These third-party content items may include content that identifies the third-party content provider that provides the content item. Summary of the invention
[0011] A technical problem solved by the present disclosure is the difficulty in determining by a third party the total number of interactions between a user and a set of content items from two different content delivery platforms while maintaining the privacy of the user. For example, a third party may want to estimate the total number of user interactions with a certain set of content items across two separate content delivery platforms. However, sending all information about users and their interactions to the third party from each content delivery platform will provide the third party with private information about each user. The challenge solved in the present disclosure involves providing enough data to the third party to estimate the total number of user interactions with a certain set of content items while maintaining the privacy of the users of each content delivery platform.
[0012] By hashing each user interaction, one can protect the privacy of the user while maintaining some information about the user interaction. This information is a deterministic set of bits that can be used in further operations, but does not contain specific information about individual users or their interactions. These hashed fragments can be used to construct a data structure called a vector. Because the hash operation used on the user interaction data is deterministic, user interactions present on two different content delivery platforms will have the same quantitative contribution to the vector of each platform. The vector can be sent to a third party that can process the vectors from the two different content delivery platforms to use statistical analysis to estimate the total number of user interactions with the content item set across the two platforms.
[0013] This application claims priority to provisional application 62 / 870970 filed on July 5, 2019 and provisional application 62 / 877251 filed on July 22, 2019. The contents of each application are incorporated herein by reference.
[0014] At least one aspect relates to a method for estimating the number of unique user interactions with a set of content items provided by different content delivery platforms. The method includes transmitting a set of hash functions to a first content delivery platform via a network. The method also includes transmitting the set of hash functions to a second content delivery platform via the network. The method also includes receiving a first vector from the first content delivery platform via the network, each coordinate of the first vector being equal to a sum based on a plurality of hashes, wherein each hash is calculated from one of a plurality of user interactions with the set of content items that occurred via the first content delivery platform. The method also includes receiving a second vector from the second content delivery platform via the network, each coordinate of the second vector being equal to a sum based on a plurality of hashes, wherein each hash is calculated from one of a plurality of user interactions with the set of content items that occurred via the second content delivery platform. The method also includes estimating the number of user interactions with the set of content items that occurred via the first content delivery platform based on the sum of the elements of the first vector. The method also includes estimating the number of user interactions with the set of content items that occurred via the second content delivery platform based on the sum of the elements of the second vector. The method also includes estimating the number of unique user interactions with the set of content items provided by both the first content delivery platform and the second content delivery platform based on the number of user interactions with the set of content items that occurred via the first content delivery platform, the number of user interactions with the set of content items that occurred via the second content delivery platform, and the dot product of the first vector and the second vector.
[0015] In some embodiments, the method includes transmitting a first request for a first vector to a first content delivery platform via a network. In some embodiments, the method includes transmitting a second request for a second vector to a second content delivery platform via a network. In some embodiments, the first request includes a set of hash functions. In some embodiments, the second request includes a set of hash functions. In some embodiments, the method includes estimating the total number of user interactions with a set of content items that occurred via a first content delivery network based on the sum of all coordinates in the first vector divided by twice the number of coordinates in the first vector. In some embodiments, the method includes estimating the total number of user interactions with a set of content items that occurred via a second content delivery network based on the sum of all coordinates in the second vector divided by twice the number of coordinates in the second vector. In some embodiments, the method includes estimating the number of unique user interactions with a set of content items that are provided by both the first content delivery platform and the second content delivery platform based on the number of user interactions with the set of content items that occurred via the first content delivery platform, the number of user interactions with the set of content items that occurred via the second content delivery platform, and the covariance of the first vector and the second vector.
[0016] At least another aspect relates to a method for providing anonymous data about user interactions with a set of content items. The method includes receiving data identifying a set of hash functions via a network. The method also includes retrieving a plurality of user identifiers, each of the user identifiers identifying an interaction with the set of content items by a corresponding user of a plurality of users. The method also includes: for each of the plurality of user identifiers, generating k hashes of the user identifier, each hash corresponding to one of the set of hash functions; and generating a user vector, each coordinate of the user vector corresponding to a bit value of the corresponding hash. The method also includes generating an interaction vector by summing the plurality of generated user vectors. The method also includes transmitting the generated interaction vector to a requester via the network.
[0017] At least another aspect relates to a method for providing anonymous data about user interactions with a set of content items. The method includes receiving a request for an interaction vector from a requestor via a network, the request including data for identifying a hash function. The method also includes retrieving a plurality of user identifiers, each of the user identifiers identifying an interaction with the set of content items by a corresponding user of a plurality of users. The method also includes: for each of the plurality of user identifiers, generating a hash value for the user identifier using the hash function included in the request; determining a value of the first m bits of the hash value; and incrementing a count of a register corresponding to the value, the register being one of k registers, where k=2^m. The method also includes generating an interaction vector, each coordinate of the interaction vector being equal to the count of the corresponding kth register. The method also includes transmitting the generated interaction vector to the requestor via the network.
[0018] In another aspect, the present disclosure relates to a system comprising one or more processors configured to estimate the number of unique user interactions with a set of content items provided by different content delivery platforms. In some embodiments, the one or more processors are configured to transmit a set of hash functions to a first content delivery platform via a network. In some embodiments, the one or more processors are configured to transmit the set of hash functions to a second content delivery platform via a network. In some embodiments, the one or more processors are configured to receive a first vector from a first content delivery platform via a network, each coordinate of the first vector being equal to a sum based on a plurality of hashes, wherein each hash is calculated from one of a plurality of user interactions with a set of content items occurring via the first content delivery platform. In some embodiments, the one or more processors are configured to receive a second vector from a second content delivery platform via a network, each coordinate of the second vector being equal to a sum based on a plurality of hashes, wherein each hash is calculated from one of a plurality of user interactions with a set of content items occurring via the second content delivery platform. In some embodiments, the one or more processors are configured to estimate the number of user interactions with a set of content items occurring via the first content delivery platform based on the sum of the elements of the first vector. In some embodiments, the one or more processors are configured to estimate the number of user interactions with the set of content items that occurred via the second content delivery platform based on the sum of the elements of the second vector. In some embodiments, the one or more processors are configured to estimate the number of unique user interactions with the set of content items provided by both the first content delivery platform and the second content delivery platform based on the number of user interactions with the set of content items that occurred via the first content delivery platform, the number of user interactions with the set of content items that occurred via the second content delivery platform, and the dot product of the first vector and the second vector.
[0019] In another aspect, the present disclosure relates to a system comprising one or more processors configured to provide anonymous data about user interactions with a set of content items. In some embodiments, the one or more processors are configured to receive data for identifying a set of hash functions via a network. In some embodiments, the one or more processors are configured to retrieve a plurality of user identifiers, each of which identifies an interaction between a corresponding user in a plurality of users and a set of content items. In some embodiments, the one or more processors are configured to generate k hashes of the user identifier for each of the plurality of user identifiers, each hash corresponding to one of the hash function sets, and generate a user vector, each coordinate of the user vector corresponding to a bit value of the corresponding hash. In some embodiments, the one or more processors are configured to generate an interaction vector by calculating the sum of a plurality of generated user vectors. In some embodiments, the one or more processors are configured to transmit the generated interaction vector via a network.
[0020] In another aspect, the present disclosure relates to a system comprising one or more processors configured to provide anonymous data about user interactions with a set of content items. In some embodiments, the one or more processors are configured to receive data for identifying a set of hash functions via a network. In some embodiments, the one or more processors are configured to retrieve a plurality of user identifiers, each of which identifies an interaction with a set of content items by a corresponding user of a plurality of users. In some embodiments, the one or more processors are configured to generate a hash value of the user identifier using a hash function included in a request for each of the plurality of user identifiers, determine the value of the first m bits of the hash value, and increment the count of a register corresponding to the value, the register being one of k registers, where k=2^m. In some embodiments, the one or more processors are configured to generate an interaction vector, each coordinate of which is equal to the count of the corresponding kth register. In some embodiments, the one or more processors are configured to transmit the generated interaction vector via a network.
[0021] These and other aspects and embodiments are discussed in detail below. The foregoing information and the following detailed description include illustrative examples of the various aspects and embodiments, and provide an overview or framework for understanding the nature and character of the claimed aspects and embodiments. The accompanying drawings provide illustration and further understanding of the various aspects and embodiments, and are incorporated into and constitute a part of this specification. BRIEF DESCRIPTION OF THE DRAWINGS
[0022] The drawings are not intended to be drawn to scale. Like reference numbers and names refer to like elements in the various drawings. For clarity, not every component is labeled in every drawing. In the drawings:
[0023] Figure 1 A block diagram depicts an exemplary implementation of a networked computer system in accordance with an illustrative implementation.
[0024] Figure 2 A flow chart illustrating one embodiment of a method for estimating a number of unique user interactions with a set of content items across a first content delivery platform and a second content delivery platform is shown.
[0025] Figure 3 A graphical representation illustrating one embodiment of an intersection of a first set of user identifiers and a second set of user identifiers.
[0026] Figure 4A A flow chart illustrating one embodiment of a method for generating and transmitting interaction vectors representing user interactions with a set of content items based on a plurality of hash functions is shown.
[0027] Figure 4B As shown in the figure Figure 4A An embodiment of generating a k-length vector based on hashing of user interaction data in the method shown in .
[0028] Figure 5A A flow chart illustrating one embodiment of a method for generating and transmitting an interaction vector representing user interactions with a set of content items based on a single hash function is shown.
[0029] Figure 5B An embodiment of generating a k-length vector based on the m-bit hash of the user interaction data is shown, where k=2^m, such as Figure 5A The method shown in .
[0030] Figure 6 Shown from Figure 4A The method shown in FIG. 1 is a schematic diagram of adding an nk-length vector corresponding to n user identifiers to a content item set for generating an interaction vector.
[0031] Figure 7 One embodiment of a schematic diagram illustrating a hybrid method for determining an estimate of the intersection of two sets of user identifiers.
[0032] Figure 8
[0066] Shown is the general architecture of an illustrative computer system that can be employed to implement any of the computer systems discussed herein.
[0033] Fig. 9 Experimental data from a non-limiting embodiment of an architecture implemented to test the accuracy of joint cardinality estimation while varying vector size and set cardinality is shown.
[0034] Fig.10 Experimental data from a non-limiting embodiment of an architecture implemented to test the accuracy of joint cardinality estimation while increasing the cardinality of one of the sets relative to the other is shown.
[0035] Fig.11 Experimental data from a non-limiting embodiment of an architecture implemented to test the accuracy of joint cardinality estimation while varying the size of the intersection of two sets is shown.
[0036] Fig.12 Experimental data from a non-limiting embodiment of an architecture implemented to test the accuracy of joint cardinality estimation while varying the scale of the Laplace noise added to the vectors is shown. DETAILED DESCRIPTION
[0037] The following is a more detailed description of various concepts related to methods, apparatus, and systems for privacy-preserving determination of intersections of sets of user identifiers and their implementations. Because the concepts described are not limited to any particular implementation, the various concepts introduced above and discussed in more detail below may be implemented in any of a variety of ways.
[0038] Figure 1 A block diagram depicting an example implementation of a networked computer system 100. System 100 includes a first data computing system 102, a second data computing system 104, and a third data computing system 106. System 100 can also include a plurality of user devices 108a-108e (collectively referred to as user devices 108). First data computing system 102, second data computing system 104, and third data computing system 106 and user devices 108 can communicate via a network 110, which can include one or more of a local area network, a wide area network, a private network, a public network, and the Internet. In some examples, first data computing system 102 can be a content item (e.g., advertisement) provider capable of providing content items for distribution and rendering on user device 108. Second data computing system 104 and third data computing system can be content item distribution systems that distribute content items to user devices based on, for example, content provided to user devices. As an example, content such as, for example, a web page or audio-visual content can be provided to a user on user device 108. The content can include a content item slot (e.g., positional or temporal) for displaying the content item together with the content. A request for displaying the content item in the content item slot can be received by a content item distribution system. The request can include a user device identifier that identifies the user device 108 and additional information related to the user device, content provided to the user device 108, and the like. The content item distribution system can select a content item using the information included in the content item request, and provide the content item to the user device 108 to be rendered together with the provided content. The content item provided to the user device 108 can be part of a content item activity run by, for example, the first data computing system 102.
[0039] A content item distribution system or a content delivery platform such as the first data computing system 104 and the second data computing system 106 can maintain a record of user identifiers associated with content items provided to the user device 108. These records can include, for example, a list of user identifiers associated with a user or user device that is rendered with a particular set of content items or interacts with the content item (e.g., clicks). These lists of user identifiers are sometimes referred to as "sketches." A publisher such as the first data computing system 102 can determine the validity of a content item or content item activity by analyzing a sketch received from the content item distribution system. For example, a publisher can determine the validity of a content item activity by determining the number of users who interact with the content item in the content item activity. A publisher can request a content item distribution system to provide the publisher with a sketch associated with the content item activity. A sketch can include user identifiers of users or user devices that interact with the content item activity. A publisher can add the number of user identifiers included in the received sketch to determine the number of users who interact with the content item. However, sketches received from two different content item distribution systems may include duplicate user identifiers, resulting in the duplicate user identifiers being counted twice and, therefore, resulting in an inaccurate count. Duplicate identifiers may be, for example, the result of the same user or user device interacting with the same content item distributed by two content item distribution systems. In order to determine the actual number of users interacting with the content item, the publisher needs to remove duplicate user identifiers. One method of removing duplicate identifiers may be to determine the intersection of the two sketches, where the intersection includes user identifiers that are common to both sketches, and then remove that number from the sum of the sketches to derive the actual count of unique user identifiers of users interacting with the content item.
[0040] However, determining the intersection of two sets of user identifiers may be computationally expensive. For example, in some instances, each sketch may include hundreds of thousands if not millions of user identifiers. Determining a unique set of user identifiers from two large sets may be computationally expensive or even infeasible. In some instances, a cardinality estimation algorithm may be utilized to determine an estimate of the unique number of user identifiers in a sketch. Examples of cardinality estimation algorithms may include superlog, probability counting with random average (PCSA), kth minimum value (KMV), etc. Each of these algorithms may estimate the cardinality, i.e., the unique number of members in a multi-set, in a computationally efficient manner. However, these algorithms may indicate information about individual members of a sketch.
[0041] Discussed below is a collection of methods that can be utilized in determining the intersection of sketches in a computationally efficient manner that also protects the privacy of user identifiers in the sketches. In particular, three methods are discussed: a binomial vector method, a count vector method, and a hybrid method, each of which is capable of determining a user identifier at the intersection of two sketches while protecting the privacy of the user identifiers in those sketches.
[0042] Figure 2 1 is a flow chart showing a method 200, which is an example embodiment of a method for estimating the number of unique user interactions with a set of content items provided by different content delivery platforms. The method 200 can be executed on the system 100 to determine, for example, Figure 3 The intersection 306 of the first set of user identifiers 302 and the second set of user identifiers 304 is shown. This process stage can be performed, for example, by the first data processing system 102, which can receive Figure 3 A first set of user identifiers 302 and a second set of user identifiers 304 are shown.
[0043] exist Figure 2 In a brief overview of , a method for estimating the number of unique user interactions may include transmitting a set of hashes to a first content delivery platform 202. The first content delivery platform may calculate a vector representing user interactions with a set of content items provided by the first content delivery platform 216. The method may transmit the set of hashes to a second content delivery platform 204. The second content delivery platform may calculate a vector representing user interactions with a set of content items provided by the second content delivery platform 220. The first content delivery platform may transmit a vector representing user interactions provided by the first content delivery platform 218. The method may receive the vector representing user interactions from the first content delivery platform 206. The second content delivery platform may transmit a vector representing user interactions provided by the second content delivery platform 222. The method may receive the vector representing user interactions from the second content delivery platform 208. The method may estimate the number of user interactions from the first content delivery platform 210. The method may estimate the number of user interactions from the second content delivery platform 212. The method may finally use a dot product operation on the two vectors 214 to estimate the number of unique user interactions with the set of content items across both the first content delivery platform and the second content delivery platform.
[0044] In further details of step 202, a set of hashes is transmitted to the first content delivery platform. The set of hashes may contain many hashes. The set of hashes may contain only one hash. The set of hashes may contain an identity hash function. The set of hashes may be transmitted from the first content delivery platform as part of a request for user interaction data. The set of hashes may be transmitted over the network 110. In some embodiments, the set of hash functions may be an identifier indicating that the first content delivery platform uses certain hash functions. In some embodiments, the set of hash functions may be a single binary file containing computer instructions for executing the set of hash functions. In some embodiments, the set of hash functions may be many binary files, each containing computer instructions for executing a hash function. In some embodiments, the set of hash functions may be many binary files, each containing code for executing a subset of the hash functions in the set of hash functions.
[0045] In further details of step 204, a set of hashes is transmitted to the second content delivery platform. The set of hashes may contain many hashes. The set of hashes may contain only one hash. The set of hashes may contain an identity hash function. The set of hashes may be transmitted from the first content delivery platform as part of a request for user interaction data. The set of hashes may be transmitted over the network 110. In some embodiments, the set of hash functions may be an identifier that indicates that the second content delivery platform uses certain hash functions. In some embodiments, the set of hash functions may be a single binary file containing computer instructions for executing the set of hash functions. In some embodiments, the set of hash functions may be many binary files, each containing computer instructions for executing a hash function. In some embodiments, the set of hash functions may be many binary files, each containing code for executing a subset of the hash functions in the set of hash functions.
[0046] In further details of step 206, the method receives a first vector representing user interactions from a first content delivery platform. In some embodiments, the vector may be a binomial count vector. In some embodiments, the number of coordinates in the vector is equal to the number of hash functions in a set of hash functions. In some embodiments, each coordinate in the vector may correspond to a hash function in the set of hash functions. In some embodiments, each coordinate of the vector may be equal to the sum of a single bit of a hash of each user identifier provided by the first content delivery platform, where each coordinate corresponds to a hash function in the set of hash functions. In some embodiments, the number of coordinates in the vector may be equal to 2^k, where k is the number of hash functions in the set of hash functions. In some embodiments, while receiving the first vector representing user interactions from the first content delivery platform, method 200 may also receive the number of user identifiers that interacted with the set of content items from the first content delivery platform.
[0047] In further details of step 208, the method receives a second vector representing user interactions from a second content delivery platform. In some embodiments, the vector may be a binomial count vector. In some embodiments, the number of coordinates in the vector is equal to the number of hash functions in a set of hash functions. In some embodiments, each coordinate in the vector may correspond to a hash function in a set of hash functions. In some embodiments, each coordinate of the vector may be equal to the sum of a single bit of a hash of each user identifier provided by the first content delivery platform, where each coordinate corresponds to a hash function in a set of hash functions. In some embodiments, the number of coordinates in the vector may be equal to 2^k, where k is the number of hash functions in a set of hash functions. In some embodiments, while receiving the second vector representing user interactions from the second content delivery platform, method 200 may also receive the number of user identifiers that interacted with the set of content items from the second content delivery platform.
[0048] In some embodiments, the cardinality of the first vector and the second vector may be the same. In some embodiments, the cardinality of the first vector and the second vector will be different. The cardinality of the first vector may be a power of two. The cardinality of the second vector may be a power of two. In some embodiments, the method 200 may determine that the first vector has a cardinality greater than the second vector or that the second vector has a cardinality greater than the first vector. In such embodiments, the method 200 may downsample the larger of the two vectors to match the cardinality of the smaller of the two vectors. In such embodiments, the vectors may both have a cardinality equal to a power of two. Downsampling may be performed by summing the values in the coordinates of the larger vector that are congruent to the modulus of the cardinality of the smaller vector. In a non-limiting example, consider a first vector having a cardinality of 8 and a second vector having a cardinality of 4. In order to make the cardinality of the first vector and the second vector equal, downsampling is performed on the first vector. In this non-limiting example embodiment, downsampling is performed by summing the last four coordinates of the first vector with the first four coordinates of the first vector to generate a vector with a cardinality of four.
[0049] In further detail of step 210, the method estimates the total number of user interactions from the first content delivery platform. In some embodiments, the number of user interactions is based on the vector provided by the first content delivery platform in step 206. The number of user interactions can be estimated by summing each coordinate in the vector of user interactions provided by the first content delivery platform and dividing the sum by the number of coordinates in the vector. The number of user interactions can be estimated by summing each coordinate in the vector of user interactions provided by the first content delivery platform, multiplying the number by two and dividing by the number of coordinates in the vector. The estimated number of user interactions can also be received from the first content delivery platform, for example, via network 110. In some embodiments, the exact number of user interactions can also be received from the first content delivery platform, for example, via network 110. In such embodiments, the exact value is used as the estimated value by method 200.
[0050] In further detail of step 212, the method estimates the total number of user interactions from the second content delivery platform. In some embodiments, the number of user interactions is based on the vector provided by the second content delivery platform in step 208. The number of user interactions is estimated by summing each coordinate in the vector of user interactions provided by the second content delivery platform and dividing the sum by the number of coordinates in the vector. The number of user interactions is estimated by calculating the sum of each coordinate in the vector of user interactions provided by the second content delivery platform, multiplying the number by two and dividing by the number of coordinates in the vector. It is also possible to receive the estimated number of user interactions from the second content delivery platform, for example, via network 110. In some embodiments, it is also possible to receive the exact number of user interactions from the second content delivery platform, for example, via network 110. In such embodiments, the exact value is used as an estimated value by method 200.
[0051] In further details of step 214, the method can use a dot product to estimate the number of unique user interactions with the sets of content items provided by the first content delivery platform and the second content delivery platform. The estimate of the number of unique user interactions can be equal to the sum of the estimated number of user interactions from the first content delivery platform and the second content delivery platform minus the intersection of the sets 306. In some embodiments, the dot product is used to calculate the intersection of the sets 306 based on the vectors received in steps 206 and 208. In some embodiments, the intersection between the sets 306 is calculated by multiplying the dot product of the vectors received in steps 206 and 208 by four and dividing by the number of coordinates in the vectors. In some embodiments, the intersection between the sets 306 is calculated by multiplying the covariance of the vectors received in steps 206 and 208 by four. In some embodiments, the intersection between the sets 306 can be calculated by taking the dot product of multiple count vectors and taking the average of the multiple dot products.
[0052] In the non-limiting example embodiment of step 214, the intersection of the set 206 must first be calculated based on the first vector and the second vector received in steps 206 and 208, respectively. In the example embodiment described herein, both the first vector and the second vector are count vectors generated using method 500. Because each vector is based on a sum of user identifiers, each vector can be considered to be the sum of three different vectors: a vector representing user identifiers present on the first content delivery platform and the second content delivery platform (denoted z below), a vector representing user identifiers unique to the first content delivery platform or the second content delivery platform (denoted u below), and a noise vector (denoted e below). The expected value (i.e., estimate) of the dot product of the first vector and the second vector can be represented by the following equation:
[0053] E(v1·v2)=E[(z+u1+e1)·(z+u1+e1)]
[0054] When written in expanded form, the above equation can be written as:
[0055] E(v1·v2)=E(z·z)+E(z·u1)+E(z·u2)+E(u1·u2)+E(z·e1)+E(z·e1)+E(u2·e1)+E(u1·e2)+E(e1·e2)
[0056] In this example, if the noise term is derived from a zero-centered distribution and is independent of all other terms, its expected value of its dot product is equal to zero. Therefore, all terms in the above equation that contain noise from the first vector (e1) or the second vector (e2) are equal to zero. In this example, the first vector and the second vector are subtracted on average (i.e., the average value of all coordinates of each vector is subtracted from each coordinate of the corresponding vector). In addition, because they are unique to the first vector or the second vector, the non-intersecting parts of the two vectors u1 and u2 are considered independent. Therefore, the expected value of their dot product is also zero. In this non-limiting example, using the assumptions made above, the equations listed above are simplified to the equations provided below.
[0057] E(v1·v2)=E(z·z)
[0058] In further detail of the above non-limiting example, consider that a user identifier from a first content delivery platform has a probability of 1 / k contributing to any one coordinate of a first vector, where the cardinality of the first vector is k. For the benefit of this non-limiting example, the same assumptions are made for the second vector, except that it is based on a user identifier from a second content delivery platform. In this example, each coordinate of the first vector and the second vector is approximately 1 / k with a probability of N and a number of trials. i The binomial distribution of N, where the number of trials is equal to the number of user identifiers that contribute to the corresponding vector. i For large values of , it is possible to approximate the distribution of any coordinate by a Gaussian distribution with variance as shown below.
[0059] Var[v i (j)]=N i (k-1) / k 2
[0060] In the above equation, v i (j) represents the vector v i The j-th coordinate of , where i represents the first vector or the second vector. To continue analyzing the non-limiting example, consider below an expanded form of the expected value of the dot product of the first vector and the second vector.
[0061]
[0062] In the above equation, z(j) represents the jth coordinate of the vector z defined above. Based on our previous analysis, z(j) must also be approximated with a Gaussian distribution. Therefore, in this non-limiting example, we can simplify the above equation to the equation provided below.
[0063]
[0064] In the above equation, N 12 represents the number of user identifiers that have interacted with the set of content items on the first content delivery platform and the second content delivery platform. Note that for sufficiently large k, the value of (k-1) / k is approximately equal to 1. Therefore, in a final simplification step, one may arrive at the following equation.
[0065]
[0066] Thus, in this non-limiting example, based on the assumptions made above, one might calculate the number of user interactions common to the two content delivery platforms by using a dot product. In some embodiments, this example might be used as part of step 214 to calculate the number of unique user interactions across both the first content delivery platform and the second content delivery platform. In this example, the variance of the estimate of the number of user interactions common to the two content delivery platforms is described in the following equation.
[0067]
[0068] In the above equation, ε is equal to the inverse of the Laplace noise scale.
[0069] In further details of step 216, the first content delivery platform can calculate a vector representing user interactions with the set of content items provided by the first content delivery platform. Systems and methods for calculating a vector representing user interactions with the set of content items provided by the first content delivery platform are described in detail later in this specification. In further details of step 218, the first content delivery platform can transmit the vector representing the user interactions calculated in step 216 over a network, such as network 110, for use in method 200. In some embodiments, step 218 can also include sending the exact number of user interactions represented by the vector for use in method 200. In some embodiments, step 218 can also include sending an estimate of the number of user interactions represented by the vector for use in method 200. Systems and methods for calculating and transmitting a vector representing user interactions with the set of content items provided by the first content delivery platform are described in detail later in this specification.
[0070] In further details of step 220, the first content delivery platform can calculate a vector representing user interactions with the set of content items provided by the first content delivery platform. Systems and methods for calculating a vector representing user interactions with the set of content items provided by the first content delivery platform are described in detail later in this specification. In further details of step 222, the first content delivery platform can transmit the vector representing the user interactions calculated in method 220 over a network for use in method 200. In some embodiments, step 222 may also include sending the number of user interactions represented by the vector for use in method 200. Systems and methods for calculating and transmitting a vector representing user interactions with the set of content items provided by the first content delivery platform are described in detail later in this specification.
[0071] In some embodiments, the first data processing system 102 performs the method 200. In some embodiments, the first data processing system 102 can determine based on the following expression Figure 3 The intersection of 306:
[0072]
[0073] Where r represents an estimate of the number of user identifiers that appear in both the first user identifier set 302 and the second user identifier set 304. In some implementations, the first data processing system 102 can subtract an expected value of n / 2 from each position in the first vector and the second vector before generating a value for r. In such an example, the first data processing system 102 can determine the intersection r based on the following expression:
[0074]
[0075] In some embodiments, the first data processing system 102 can be based on the k-length first vector Zx k The size n of the first vector is estimated by the sum of the values of all k positions of . In some embodiments, for example, the first data processing system 102 can determine the size n based on the following expression:
[0076]
[0077] In some embodiments, the previous expressions can be used in steps 210 and 212 of method 200. In some embodiments, the sum calculated as part of the above expressions is calculated by the second data processing system 104 or the third data processing system 106. The first data processing system 102 can calculate the sum of the k-length vector Zy based on the second k-length vector Zy. k The size n of the second set of user identifiers 204 is similarly determined. The sizes of the respective first and second vectors can then be used to subtract the respective value n / 2 from the first and second vectors.
[0078] The method 200 can include: based on the first vector Vx k and the second vector Vy k The dot product of estimates the size of the intersection of the first set of user identifiers and the second set of user identifiers, such as Figure 7 In some embodiments, the first data processing system 102 can obtain the first vector Vx k Subtract the value n from each coordinate value x / k and from the second vector Vy k Subtract the value n from each coordinate value y / k, where n x and n y represents an estimate of the number of user identifiers in the first set of user identifiers 302 and the second set of user identifiers 304, respectively. x and n y In some embodiments, the first data processing system 102 can estimate the value r of the intersection, that is, the number of user identifiers shared by the first user identifier set 302 and the second user identifier set 304, based on the following expression:
[0079]
[0080] Since the determination of the vector is based on aggregate statistics of all user identifiers in the corresponding set of user identifiers, the aggregation removes any correlation between the value of the vector and the identity of the user. Therefore, the vector used to determine the estimate of the intersection is privacy-safe.
[0081] In some embodiments, the data processing system executing method 200 can determine an intermediate estimate of the intersection based on pairwise dot products of count vectors generated using the same hash function while executing step 214. Thus, for example, first data processing system 102 can Figure 7 Shown is based on V1x k and V1y k The dot product generates the first intermediate vector r1 based on V2x k and V2y k The dot product of generates r2, and so on. The data processing system can generate an estimate of the intersection based on an average of the intermediate estimates of the intersection by summing all of the intermediate estimates and dividing the sum by p, where p is the number of hash functions transmitted in steps 204 and 206 of method 200. By subtracting the estimate of the intersection value from the estimate of the total number of user identifiers in each vector, method 200 can estimate the number of unique user interactions with the sets of content items across the two content delivery platforms.
[0082] In some embodiments, the data processing system executing method 200 is capable of extracting from the vector V1x k 、V2x k 、...、Vpx k Subtract the value n from each coordinate value x / k 902 and from the second vector V1y k 、V2y k 、...、Vpy k Subtract the value n from each coordinate value y / k 904, where n x and n y represents the number of user identifiers in the first user identifier set 302 and the second user identifier set 304, respectively. The number of user identifiers in the first user identifier set and the second user identifier set is estimated in steps 210 and 212, respectively. The first data processing system can subtract these values before performing the dot product of the vectors. In some embodiments, when the first vector and the second vector are received in steps 206 and 208, the value n x and n y can be received by a data processing system executing method 200 , respectively.
[0083] In a non-limiting example embodiment, the code used to implement portions of method 200 may look like the following:
[0084] def ComputeVocIntersetion(voc1,voc2,n1,n2,k):
[0085] “““
[0086] Args:
[0087] voc1, voc2: count vectors of sets 1 and 2
[0088] n1, n2: cardinality of sets 1 and 2
[0089] k: size of the count vector
[0090] Returns:
[0091] The cardinality of the intersection of two sets.
[0092] ”””
[0093] assert len(voc1)==len(voc2)==k
[0094] return sum((voc[i]–n1 / k)*(voc2[i]-n2 / k),for I in range(k))
[0095] Figure 3 A simplified diagram showing two sets of user identifiers and their intersection. In particular, Figure 3 302 and a second user identifier set 304 are shown. The first user identifier set 302 and the second user identifier set 304 may be generated by the second data processing system 104 and the third data processing system 106, respectively. The first user identifier set 302 includes n user identifiers x1, x2, x3, ..., x n The second user identifier set 304 includes n user identifiers y1, y2, y3, ..., y n Although Figure 3 A first user identifier set 302 and a second user identifier set 304 are shown with the same number n of user identifiers, but it should be understood that the first user identifier set 302 can have a different number of user identifiers than the number of user identifiers in the second user identifier set 304. The first user identifier set 302 may include a list of user identifiers associated with users or user devices 108 that interact with a particular content item or content item activity, and may have been collected by a second data processing system 104. The first data processing system 104 can store the first user identifier set 302 in a data structure such as a one-dimensional or multi-dimensional array in a memory. For example, the second user identifier set 304 can be similarly managed by the third data processing system 106. A publisher such as the first data processing system 102 wants to determine a unique set of user identifiers based on the first user identifier set 302 and the second user identifier set 304.
[0096] In some embodiments, the second data processing system 104 and the third data processing system 106 may transmit the first user identifier set 302 and the second user identifier set 304 to the first data processing system 102 for determining a unique and non-repetitive user identifier set. However, only transmitting the first user identifier set 302 and the second user identifier set 304 can expose the identity of the user to the first data processing system, thereby destroying the privacy of the user associated with the user identifier. For example, the entire history of content item interactions of one or more users can be exposed to the first data processing system 102. In some embodiments, encryption techniques such as private set intersection (PSI) can be used to allow a third party such as the first data processing system 102 to determine the intersection of the first user identifier set 302 and the second user identifier set 304 while maintaining privacy. However, the PSI implementation involves a large amount of communication overhead between data computing systems, thereby increasing computing time. In some embodiments, the above-mentioned cardinality estimator such as the super log can be used to determine the union of the first user identifier set 302 and the second user identifier set 304, wherein the union can be used to determine the intersection of the two sets. However, SuperLog is not private and secure.
[0097] Figure 4A 4 is a flow chart of a method 400 illustrating an example embodiment of a method for generating a vector representing a user interaction with a collection of content items. The method 400 can be performed, for example, by the second data processing system 104 or the third data processing system 106. The method 400 can be performed, for example, to generate, for each item of the collection, a vector such as Figure 4B As shown in FIG. 4A , the user vector 420 is shown. For example, the set may be as follows Figure 3 The method 400 includes receiving data for identifying a set of hash functions 401. For example, this step can be performed, for example, by the second data processing system 104 or the third data processing system 106, which can receive the data for identifying the set of hash functions from the first data processing system 102 via the network 110. The method 300 includes retrieving a plurality of user identifiers 402. In some embodiments, the plurality of user identifiers can be retrieved from a storage local to the second data processing system 104 or from a storage local to the third data processing system 106. In some embodiments, the plurality of user identifiers can be retrieved from a remote storage via the network 110. In some embodiments, the plurality of user identifiers can be retrieved from a database or a data center.
[0098] The method 400 includes selecting an i-th user identifier 404. This step can be performed, for example, by the second data processing system 104 or the third data processing system 106 to process the set of user identifiers retrieved in step 402. Figure 4B A simplified diagram depicting the processing of a portion of method 400 is shown. In particular, Figure 4B The selection of the first user identifier x1 (i-th, i=1) is shown. Figure 4B Selection of a first user identifier in the first set of user identifiers 302 is shown, but it should be understood that the user identifiers can be selected in any order.
[0099] The method 400 includes generating k hashes of the selected user identifier 406. The second data processing system 104 or the third data processing system 106 can generate k hashes h1(x1), h2(x1), h3(x1), ..., ...3(x1), ..., h1(x1), h3(x1), h3(x1), ..., h1(x1), h3(x1), h3(x1), ..., h1(x1), h3(x1), h3(x1), ..., h1(x1), h3(x1), h3(x k (x1), such as Figure 4B In some embodiments, the second data processing system 104 or the third data processing system 106 can utilize k independent hash functions to generate k hashes of the first user identifier x1. In some embodiments, the k independent hash functions correspond to data for identifying a set of hash functions in step 401. In some embodiments, the second data processing system 104 or the third data processing system 106 can utilize k / b hash functions, where b is the number of bits in the hash digest.
[0100] In some embodiments, salinity can be added to each of the selected user identifiers to enhance the privacy of the user. Salinity can be a randomly generated bit string that can be cascaded or combined in some way with a data structure containing the selected user identifier. In some embodiments, the salinity can be predetermined. In such embodiments, the salinity can be predetermined by an entity connected to the system 100 via the network 110. In some embodiments, each user identifier selected by method 400 is cascaded with the same salinity. In some embodiments, each user identifier selected by method 400 is cascaded with a different salinity. In some embodiments, a data processing system executing method 400, such as 104 or 106, can cascade each user identifier with the same salinity. In some embodiments, two data processing systems executing method 400 can use different salinities.
[0101] In some embodiments, the salinity is received by a third party provider through a data processing system that performs method 400. In some embodiments, the salinity is hashed using a predetermined hash function before the salinity is concatenated with each user identifier. In such embodiments, the predetermined hash function can be determined by the third party that provides the salinity. In some embodiments, the third party that provides the salinity can provide a new salinity based on a fixed time period. For example, a third party salinity provider can provide a new salinity after one hour, two hours, one day, two days, one week, two weeks, one month, two months, or one year. In some embodiments, the third party salinity provider can sign the salinity with a public key belonging to the data processing system that performs method 400.
[0102] The method 400 includes generating a first k-length vector, wherein the coordinate values of the first k-length vector are equal to the bit values of the corresponding k-th hash 408. Figure 4B As shown, the second data processing system 104 or the third data processing system 106 can generate a first k-length vector 420, wherein the value of each coordinate of the k-length vector 420 is equal to the bit value of the k hashes 418. In some embodiments, such as Figure 4B In the illustrated embodiment, the value of the kth bit of the k-length vector 420 can be equal to the bit value of the least significant bit of the corresponding kth hash of the k-th hash 418. In some embodiments, instead of the least significant bit, any other bit position can be utilized. In some embodiments, at least two bits of the k-length vector 418 can correspond to two different bit positions of their corresponding hashes. For example, the bit value of one bit in the k-length vector can be equal to the least significant bit of the corresponding k-th hash, but the bit value of another bit in the k-length vector can be equal to the most significant bit of the corresponding k-th hash. The bit position of the k-th hash assigned to provide the bit value of the k-th bit of the k-length vector can be predetermined. In some embodiments, the bit position of the k-th hash assigned to provide the bit value of the k-th bit of the k-length vector can be received together with the data for identifying the hash function set in step 401. No matter what methodology is used to select the bit value of the k-length vector from the k-hash, it can be ensured that the same methodology is followed to generate the k-length vector from the second user identifier set 304. In some embodiments, the second data processing system 104 or the third data processing system 106 can generate the k-length vector 402 using fewer than k hashes. For example, the second data processing system 104 or the third data processing system 106 can set positions 1, 2, ..., b in the k-length vector based on bits 1, 2, ..., b of the hash h1(x1), and positions b+1, b+2, ..., 2*b based on bits 1, 2, ..., b of the hash h2(x1), and so on (assuming the LSB is in bit position 1). In general, the second data processing system 104 or the third data processing system 106 can generate the k-length vector 402 using fewer than k hashes. For example, the second data processing system 104 or the third data processing system 106 can set positions 1, 2, ..., b in the k-length vector based on bits 1, 2, ..., b of the hash h1(x1), and positions b+1, b+2, ..., 2*b based on bits 1, 2, ..., b of the hash h2(x1), and so on (assuming the LSB is in bit position 1).i The b bits of (x1) set bit positions (i-1)*b+1 to i*b of the k-length vector of the first user identifier x1. In instances where k is not divisible by b, then k / b can be rounded up and any remaining bits can be discarded.
[0103] The method 400 includes generating a k-length vector corresponding to all user identifiers in the plurality of user identifiers retrieved in step 402. For example, the second data processing system 104 or the third data processing system 106 can determine whether the currently generated k-length vector is the n-th k-length generated vector 410. If not, the second data processing system 104 or the third data processing system 106 can increment the counter i 312 and select the next user identifier from the plurality of user identifiers retrieved in step 402 and generate a k-length vector as discussed above. In this manner, the second data processing system 104 or the third data processing system 106 can generate n k-length vectors, each of which corresponds to a user identifier in the plurality of user identifiers retrieved in step 402.
[0104] Method 400 includes summing n k-length vectors to generate interaction vector 414. This can be referred to as a binomial vector method. Second data processing system 104 and third data processing system 106 can sum n k-length vectors corresponding to n user identifiers of the plurality of user identifiers retrieved in step 402. Second data processing system 104 or third data processing system 106 can sum n k-length vectors V 1k To V nk The "0" and "1" in the bit positions of the k-length first Zx are added to generate k In a non-limiting example, if there are 10 k-length vectors, six of which have a "1" in the first position and the remaining four of which have a "0" in the first position, then the k-length first vector Zx k can have the value 6 in the first position. In general, for a large number of k-length vectors (ie, for large values of n), in the first vector Zx k The value at each k-th position of will be Figure 6 As shown, it is approximately equal to n / 2.
[0105] Method 400 includes transmitting the interaction vector via network 416. In some embodiments, second data processing system 104 or third data processing system 106 transmits the interaction vector generated in step 414 to first data processing system 102. In some embodiments, transmitting the interaction vector includes transmitting the vector via an encrypted communication channel, such as HTTPS. In some embodiments, before transmitting the interaction vector, n / 2 is subtracted from each coordinate in the interaction vector. In some embodiments, the number of user interactions n is transmitted along with the interaction vector. In some embodiments, transmitting the interaction vector includes transmitting a plurality of count vectors. In such embodiments, before transmitting the plurality of count vectors, n / 2 is subtracted from each coordinate in each of the plurality of count vectors.
[0106] Figure 5A 5 is a flow chart of a method 500 illustrating an example embodiment of a method for generating a vector representing user interactions with a collection of content items. The counting vector method 500 can be performed, for example, by the second data processing system 104 or the third data processing system 106. The method 500 can be performed, for example, to generate, for each item of the collection, a vector such as Figure 5B As shown in FIG. 520, the set may be, for example, Figure 3 The method 500 includes retrieving a plurality of user identifiers 502. In some embodiments, the plurality of user identifiers can be retrieved from a storage local to the second data processing system 104 or from a storage local to the third data processing system 106. In some embodiments, the plurality of user identifiers can be retrieved from a remote storage via the network 110. In some embodiments, the plurality of user identifiers can be retrieved from a database or a data center.
[0107] The method 500 includes selecting 504 an i-th user identifier. This step can be performed, for example, by the second data processing system 104 or the third data processing system 106 to process the first set of user identifiers 302 or the second set of user identifiers 304. Figure 5B A simplified diagram depicting the processing of a portion of method 500 is shown. In particular, Figure 5B 1 shows the selection of the first user identifier x1 (i-th, i=1) by the second data processing system 104 or the third data processing system 106. Figure 5BSelection of a first identifier in the first set of user identifiers 302 is shown, but it should be understood that the user identifiers can be selected in any order and are the same user identifiers retrieved in step 502 .
[0108] Method 500 includes generating a hash of the selected user identifier 506. The second data processing system 104 or the third data processing system 106 can generate the hash using a hash function. In some embodiments, the hash function is based on data identifying a set of hash functions in step 501. In some embodiments, if there is more than one hash function in the set of hash functions received in step 501, the method can select one of the hash functions in the set of hash functions to perform the hash calculation. In a non-limiting example, the method can select a first hash function in the set of hash functions. For example, Figure 5B As shown, the second data processing system 104 or the third data processing system 106 generates a hash h(x1) based on the hash function h(). In some embodiments, the second data processing system 104 or the third data processing system 106 can use a well-known hash function such as SHA (1, 2 or 3), MD5, etc.
[0109] In some embodiments, salinity can be added to each of the selected user identifiers to enhance the privacy of the user. In some embodiments, the salinity is a randomly generated bit string cascaded with a data structure containing the selected user identifier. In some embodiments, the salinity can be predetermined. In some embodiments, the salinity can be predetermined by a third party connected to the system 100 via the network 110. In some embodiments, each user identifier selected by the method 500 is cascaded with the same salinity. In some embodiments, each user identifier selected by the method 500 is cascaded with a different salinity. In some embodiments, a data processing system such as 104 or 106 executing the method 500 can cascade each user identifier with the same salinity. In some embodiments, two data processing systems executing the method 400 can use different salinities.
[0110] In some embodiments, the salinity is received by a third party provider through a data processing system that performs method 500. In some embodiments, the salinity is hashed using a predetermined hash function before the salinity is concatenated with each user identifier. In such embodiments, the predetermined hash function can be determined by the third party that provides the salinity. In some embodiments, the third party that provides the salinity can provide a new salinity based on a fixed time period. For example, a third party salinity provider can provide a new salinity after one hour, two hours, one day, two days, one week, two weeks, one month, two months, or one year. In some embodiments, the third party salinity provider can sign the salinity with a public key belonging to the data processing system that performs method 500.
[0111] Method 500 includes incrementing a count of a register corresponding to m bits of hash value 508. Second data processing system 104 or third data processing system 106 can select a set of bits of the hash value to determine an appropriate register to increment. For example, Figure 5B As shown, the second data processing system 104 or the third data processing system 106 can select the first 3 bits of the hash value to determine the register. However, in some other embodiments, the second data processing system 104 or the third data processing system 106 can select any other set of bits of the hash value to determine the register value. Because the first three bits of the hash of the first user identifier x1 are "010", the data processing system executing the method can increment the second register in the register set 520. The total number k of registers in the register set 520 can be equal to 2^m, where m represents the number of bits of the hash value used by the data processing system executing the method to select the register. In some embodiments, the number k of registers can be independent of the number m of bits of the hash value used by the data processing system executing the method to select the register. For example, the second data processing system 104 or the third data processing system 106 can select a specific value k and appropriately map m bits to k registers. The register set 520 can represent the interaction vector Vx k The coordinates of .
[0112] Method 500 includes generating a hash for all user identifiers in the first set of user identifiers and incrementing a counter or register. This is referred to as a count vector method. For example, second data processing system 104 or third data processing system 106 can determine whether the currently generated hash value is for the nth user identifier 510. If not, the data processing system executing the method can increment counter i 512 and select the next user identifier from the plurality of user identifiers retrieved in step 502. For example, referring to Figure 5B, the data processing system executing the method can increment the third register based on the first three digits of the hash value of the third user identifier x3, and increment the sixth register based on the first three digits of the hash value of the second user identifier x2. In this way, the data processing system executing the method can increment the count in each register of the register set 520. The data processing system executing the method can store the register set 520 in a data structure in a memory. For example, the data structure can be a one-dimensional array or a multi-dimensional array. In some embodiments, the register set 520 can be stored as a vector representing a user interaction. In some embodiments, the data structure containing the register set 520 can be changed into a vector representation, wherein each coordinate of the vector is equal to one of the registers in the register set 520.
[0113] In some embodiments, the method 500 may add noise to one or more of the registers in the register set 520. In some embodiments, the method 500 may add noise to one or more coordinates represented by the vector based on the register set 520. In these embodiments, the method 500 may add Laplace noise to one or more of the registers in the register set 520. In some embodiments, the method 500 may add Laplace noise to all registers in the register set 520. In some embodiments, the method 500 may add a vector of Laplace noise to the interaction vector based on the register set 520. In these embodiments, the vector of Laplace noise may have the same cardinality as the interaction vector based on the register set 520. In some embodiments, the method 500 may subtract the expected value of each register from the contents of each register. In such embodiments, the expected value of each register may be equal to the total count of the register set 520 divided by the number of registers in the register set 520, where Figure 5B is designated as k.
[0114] In a non-limiting example embodiment, the code used to implement portions of method 500 may look like the following:
[0115] def ComputeVectorOfCounts(k,b,user_set):
[0116] “““
[0117] Args:
[0118] k: The size of the vector to be returned.
[0119] b: Scaling factor of Laplace noise.
[0120] user_set: A deduplicated set of user IDs.
[0121] Returns:
[0122] A count vector of size k for a given user set
[0123] A collection to which Laplace noise of scale b is added.
[0124] ”””
[0125] hashed_user_set=get_hashed_user_set(user_set)
[0126] user_buckets=[get_last_k_digits(id,k),for id in hashed_user_set]
[0127] voc=[]
[0128] for i in range(k):
[0129] voc.append(user_buckets.count(i)+generate_laplace_noise(b))
[0130] return voc
[0131] In some embodiments, method 500 may use a hybrid method to generate multiple interaction vectors. In particular, in the hybrid method, the data processing system executing method 500 can generate the count vector using not only one hash function as in the count vector method, but can use p hash functions to generate p count vectors. In some embodiments, the multiple hash functions are identified by the data received in step 501. Fig. 9 The p count vectors V1x generated by the second data processing system 104 or the third data processing system 106 based on the user identifier set (eg, the first user identifier set 302 or the second user identifier set 304) retrieved in step 502 are shown. k 、V2x k 、…、Vpx k 902. Each counting vector Vpx can be generated based on an independent hash function k Therefore, the first hash function can be used to generate the first count vector V1x k , and can use a second independent hash function to generate a second count vector V2x k , and so on. Therefore, the data processing system executing method 500 uses the first hash function to generate hashes of all user identities in the set of user identities retrieved in step 502 to be consistent with the above description of Figure 5A and Figure 5B The counting vector V1x is generated in a similar manner as discussed above. k .
[0132] Method 500 includes generating a k-length interaction vector based on register value 514. As mentioned above, the value of the count of register 520 can represent the k-length vector Vx k Method 500 includes transmitting the interaction vector via network 516. In some embodiments, second data processing system 104 or third data processing system 106 transmits the interaction vector generated in step 514 to first data processing system 102. In some embodiments, transmitting the interaction vector includes transmitting the vector via an encrypted communication channel, such as HTTPS. In some embodiments, the number of user interactions n is transmitted along with the interaction vector. In some embodiments, transmitting the interaction vector includes transmitting a plurality of count vectors. In some embodiments, n / k is subtracted from each coordinate in the interaction vector prior to transmitting the interaction vector.
[0133] Figure 6 A simplified diagram of a binomial counting vector method for generating an interaction vector from k hash functions and n user identifiers is shown. In some embodiments, the process outlined in the simplified diagram can be performed by a data processing system executing method 400. Each of vectors 602 representing hashed user interaction information can have a cardinality k representing k hash functions. Each of vectors 602 can represent a single user identifier from a set of user identifiers. Vectors 602 can be summed together, for example, in method 400 to generate an interaction vector 604 having a cardinality k. In some embodiments, each coordinate of interaction vector 604 can be approximately equal to n / 2, where n is the number of user identifiers.
[0134] Figure 7 A simplified diagram of a hybrid method for determining an estimate of the intersection of two sets of user identifiers is shown, which hybrid method is performed by a data processing system performing step 214 of method 200 in some embodiments. The hybrid method combines the features of the binomial vector method and the count vector method discussed above. In particular, in the hybrid method, the data processing system performing method 200 can generate the count vector using not only one hash function as in the count vector method, but also p hash functions to generate p count vectors.
[0135] In some embodiments, system 100 can apply additional techniques to improve the privacy of the method discussed above. For example, in some embodiments, second data processing system 104 and third data processing system 106 can add noise to count when generating the count vector discussed above with respect to Figures 5-7. Adding noise to the count vector can include adding a random number to each element of the count vector. Second data processing system 104 and third data processing system 106 can each add noise to their corresponding count vectors before sending the count vector to the first data processing system 102 that determines the estimate of the intersection. In some embodiments, second data processing system 104 and third data processing system 106 can add various types of noise such as, for example, Gaussian noise, geometric noise, etc. to the vector generated by the binomial vector method. In some embodiments, second data processing system 104 and third data processing system 106 can add, for example, Laplace noise to the vector generated by the count vector method. Adding noise to the vector generated by either the binomial vector method or the count vector method can improve the privacy of the difference of the user identifier. The differential privacy of the binomial vector method and the count vector method discussed above can be achieved while sacrificing lower accuracy than previously existing differential-specific cardinality estimators.
[0136] In yet another method, it is possible to generate the above Figure 3-4B The user identifiers are encrypted or hashed before the vectors discussed. For example, the second data processing system 104 and the third data processing system 106 can encrypt or calculate the hash of each of the user identities in the first user identity set 302 and the second user identity set 304. Then the second data processing system 104 and the third data processing system 106 can generate vectors (binomial vectors or counting vectors) based on the encrypted user identity sets. Encrypting the user identifiers before generating the vectors can improve the privacy of the user identities. In some instances where the vectors are formed by the same user identities, the intersection of the vectors can still include some information related to the user identities. By encrypting or hashing the user identities before generating the vectors, the risk of information leakage can be reduced.
[0137] In some embodiments, the counts in the count vector can be permuted before the vector is passed to the first data processing system 102. For example, the second data processing system 104 can permute the vector Vx before passing the vector to the first data processing system 102. k or V1x kThe third data processing system 106 may also similarly permute its corresponding count vector before sending the vector to the first data processing system. Both the first data processing system 104 and the second data processing system 106 may agree on a permutation scheme and keep the permutation secret. In some embodiments, the first data processing system 102 may select a desired permutation scheme and transmit it to the second data processing system 104 and the third data processing system 106 so that both systems utilize a matching permutation scheme. Permuting the vectors in the count vectors may improve the privacy of the user identity in instances where the vectors are formed by the same user identity, and the intersection of the vectors may still include some information related to the user identity.
[0138] Figure 8 The overall architecture of an illustrative computer system 800 is shown that may be employed to implement any of the computer systems discussed herein, including system 100 and its components, such as first data processing system 102, second data processing system 104, third data processing system 106, and user device 108, according to some embodiments. Computer system 800 may be used to provide information via network 110 for display. Figure 8 The computer system 800 includes one or more processors 820 communicatively coupled to a memory 825, one or more communication interfaces 805, and one or more output devices 810 (e.g., one or more display units) and one or more input devices 815. The processor 820 may be included in the data processing system 100 or other components of the system 100 such as the first data processing system 102, the second data processing system 104, the third data processing system 106, and the user device 108.
[0139] exist Figure 8 In the computer system 800 of the present invention, the memory 825 may include any computer-readable storage medium and may store computer instructions such as processor-executable instructions for implementing the various functionalities described herein for the corresponding system, as well as any data related thereto generated thereby or received via a communication interface or input device (if present). Figure 1 In the system 100, the data processing system may include a memory 825 to store information related to the user identifier set, the generated vector, etc. Figure 8 The processor 820 shown in FIG. 8 can be used to execute instructions stored in the memory 825 , and in doing so can also read from or write to the memory various information processed and / or generated for the execution of the instructions.
[0140] Figure 8The processor 820 of the computer system 800 shown in FIG. 8 may also be communicatively coupled to or control the communication interface 805 to transmit or receive various information for execution of instructions. For example, the communication interface 805 may be coupled to a wired or wireless network, bus, or other communication means, and thus may allow the computer system 800 to transmit information to or receive information from other devices (e.g., other computer systems). Although in FIG. Figure 8 Although not explicitly shown in the system 800, one or more communication interfaces facilitate the flow of information between components of the system 800. In some implementations, the communication interface can be configured (e.g., via various hardware components or software components) to provide a website as an access portal to at least some aspects of the computing system 800. Examples of communication interface 805 include a user interface (e.g., a web page) through which a user can communicate with the data processing system 800.
[0141] For example, you can provide Figure 8 Output devices 810 of the computer system 800 are shown to allow viewing or otherwise perceiving various information in conjunction with the execution of instructions. Input devices 815 may be provided, for example, to allow a user to make manual adjustments, make selections, enter data, or interact with the processor in various ways during the execution of instructions. Additional information related to general computer system architectures that can be used for the various systems discussed herein is further provided herein.
[0142] The embodiments of the subject matter and operations described in this specification may be implemented in digital electronic circuits or in computer software embodied in tangible media, firmware or hardware including the structures disclosed in this specification and their equivalent structures, or in a combination of one or more thereof. The embodiments of the subject matter described in this specification may be implemented as one or more computer programs, i.e., one or more components of computer program instructions, which are encoded on a computer storage medium to be executed by a data processing device or to control the operation of a data processing device. Program instructions may be encoded on an artificially generated propagation signal, such as a machine-generated electrical, optical or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device for execution by a data processing device. A computer storage medium may be or be included in a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more thereof. In addition, although a computer storage medium is not a propagation signal, a computer storage medium may include a source or destination of computer program instructions encoded in an artificially generated propagation signal. A computer storage medium may also be one or more separate physical components or media (e.g., multiple CDs, disks or other storage devices) or be included therein.
[0143] Features disclosed herein can be implemented on a smart TV module (or a connected TV module, a hybrid TV module, etc.), which may include a processing module configured to integrate an Internet connection with a more traditional TV program source (e.g., via cable, satellite, wireless or other signal reception). The smart TV module may be physically incorporated into a TV set, or may include separate devices such as a set-top box, a blue-ray or other digital media player, a game console, a hotel TV system, and other supporting equipment. The smart TV module may be configured to allow viewers to search and find videos, movies, photos, and other content on the web, on local cable TV channels, on satellite TV channels, or stored on a local hard drive. A set-top box (STB) or a set-top unit (STU) may include an information appliance device, which may include a tuner and be connected to a TV set and an external signal source, tune the signal to content, and then display the content on a TV screen or other display device. The smart TV module may be configured to provide a home screen or a top-level screen, which includes icons for multiple different applications, such as a web browser and multiple streaming services, connected cable or satellite media sources, other Web channels, and the like. The Smart TV module may be further configured to provide an electronic program guide to the user. A companion application for the Smart TV module may operate on the mobile computing device to provide the user with additional information about available programming, to allow the user to control the Smart TV module, etc. In alternative embodiments, features may be implemented on a laptop or other personal computer, smartphone, other mobile phone, palmtop, tablet computer, or other computing device.
[0144] The operations described in this specification may be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0145] The terms "data processing apparatus", "data processing system", "user equipment" or "computing device" cover all types of apparatus, devices and machines for processing data, including, for example, the aforementioned programmable processors, computers, systems on chips, or multiple or combinations thereof. The apparatus may include dedicated logic circuits, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more thereof. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.
[0146] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language including compiled or interpreted languages, declarative or procedural languages, and may be deployed in any form including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program may be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), a single file dedicated to the program in question, or multiple coordination files (e.g., files storing one or more modules, subroutines, or partial codes). A computer program may be deployed to execute on a computer or multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.
[0147] The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and the apparatus can also be implemented as, special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0148] For example, processors suitable for executing computer programs include general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for performing actions according to instructions and one or more storage devices for storing instructions and data. Typically, a computer will also include one or more large-capacity storage devices for storing data, such as a magnetic disk, a magneto-optical disk, or an optical disk, or be operably coupled to a large-capacity storage device to receive data from it or transmit data to it, or both. However, a computer does not have to have such a device. In addition, a computer can be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive). Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, such as semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; magnetic disks, such as internal hard disks or removable disks; magneto-optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0149] To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, such as a CRT (cathode ray tube), plasma, or LCD (liquid crystal display) monitor, for displaying information to the user, and a keyboard and pointing device, such as a mouse and trackball, through which the user can provide input to the computer. Other types of devices can also be used to provide for interaction with a user; for example, feedback provided to the user can include any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including sound, voice, or tactile input. In addition, the computer can interact with the user by sending documents to and receiving documents from a device used by the user; for example, by sending a web page to a web browser on a user's client device in response to a request received from the web browser.
[0150] The embodiments of the subject matter described in this specification may be implemented in a computing system including, for example, a back-end component as a data server or including, for example, a middleware component as an application server or including, for example, a client computer having a graphical user interface or a web browser, through which a user can interact with the embodiments of the subject matter described in this specification, or a combination of one or more such back-end, middleware or front-end components. The components of the system may be interconnected by any form or medium of digital data communication, for example, a communication network. Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), internetworks (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0151] Computing systems such as data processing systems 102, 104, 106, and 108 may include clients and servers. For example, data processing systems 102, 104, 106, and 108 may include one or more servers in one or more data centers or server farms. Clients and servers are usually far away from each other and usually interact through a communication network. The relationship between a client and a server is generated by computer programs that run on respective computers and have a client-server relationship with each other. In some embodiments, a server transmits data (e.g., an HTML page) to a client device (e.g., for the purpose of displaying data to a user interacting with a client device and receiving user input therefrom). Data generated at a client device (e.g., a result of a user interaction) may be received from a client device at a server.
[0152] Although this specification contains many specific implementation details, these should not be interpreted as limitations on any invention or the scope of protection that can be claimed, but should be interpreted as descriptions of features specific to specific embodiments of the systems and methods described herein. Certain features described in the context of separate embodiments in this specification may also be implemented in combination in a single embodiment. Conversely, the various features described in the context of a single embodiment may also be implemented in multiple embodiments individually or in any suitable sub-combination. Moreover, although features may be described above as working in certain combinations and even initially claimed as such, in some cases one or more features in the claimed combination may be cut out from the combination, and the claimed combination may be directed to a sub-combination or a variant of the sub-combination.
[0153] Similarly, although operations are depicted in a particular order in the drawings, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed to achieve the desired results. In some cases, the actions cited in the claims may be performed in a different order and still achieve the desired results. In addition, the processes depicted in the drawings do not necessarily require the particular order shown or sequential order to achieve the desired results.
[0154] In some cases, multitasking and parallel processing may be advantageous. In addition, the separation of various system components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. For example, data processing systems 102, 104, 106, and 108 can be a single module, a logical device with one or more processing modules, one or more servers, or part of a search engine.
[0155] Having now described some illustrative embodiments and implementations, it is apparent that the foregoing is illustrative rather than restrictive and has been presented by way of example. In particular, although many of the examples presented herein relate to specific combinations of method actions or system elements, those actions and those elements may be combined in other ways to achieve the same goals. The actions, elements, and features discussed only in conjunction with one embodiment are not intended to be excluded from similar effects in other embodiments or implementations.
[0156] The words and terms used herein are for descriptive purposes and should not be considered limiting. The use of "including," "comprising," "having," "containing," "involving," "characterized by," "characterized by," and variations thereof herein is intended to encompass the items listed thereafter, their equivalents, and additional items, as well as alternative embodiments consisting solely of the items listed thereafter. In one embodiment, the systems and methods described herein consist of one, more than one, each combination, or all of the described elements, acts, or components.
[0157] Any reference to the implementation or element or action of the system and method mentioned in the singular form herein may also include the implementation including multiple of these elements, and any reference to the plural form of any implementation or element or action herein may also include the implementation including only a single element. Reference in the singular or plural form is not intended to limit the currently disclosed system or method, their components, actions or elements to a single or multiple configurations. Reference to any action or element based on any information, action or element may include the implementation where the action or element is based at least in part on any information, action or element.
[0158] Any embodiment disclosed herein may be combined with any other embodiment, and references to "an embodiment," "some embodiments," "alternative embodiments," "various embodiments," "one embodiment," etc. are not necessarily mutually exclusive and are intended to indicate that a particular feature, structure, or characteristic described in conjunction with an embodiment may be included in at least one embodiment. Such terms as used herein do not necessarily all refer to the same embodiment. Any embodiment may be inclusively or exclusively combined with any other embodiment in any manner consistent with the aspects and embodiments disclosed herein.
[0159] References to "or" may be construed as inclusive such that any term described using "or" may indicate any of a single, more than one, and all of the described terms.
[0160] To the extent that technical features in the drawings, detailed description or any claims are followed by reference numerals, the reference numerals have been included for the sole purpose of increasing the intelligibility of the drawings, detailed description and claims. Therefore, reference numerals or their absence have no limiting effect on the scope of any claim element.
[0161] Without departing from its characteristics, the system and method described herein may be implemented in other specific forms. Although the examples provided herein relate to the display of controlling information resource content, the system and method described herein may include applications to other environments. The foregoing embodiments are illustrative rather than limiting the described system and method. Therefore, the scope of the system and method described herein is indicated by the appended claims rather than the preceding description, and changes within the equivalent meaning and scope of the claims are included therein.
[0162] Further to the above description, controls may be provided to the user that allow the user to select whether and when the systems, programs, or features described herein may initiate the collection of information (e.g., information about the user's social network, social actions or activities, occupation, user preferences, or the user's current location) and whether to send content or communications from a server to the user. In addition, certain data may be processed in one or more ways before it is stored or used so that personally identifiable information is removed. For example, the user's identity may be processed so that no personally identifiable information can be determined for the user, or where location information is obtained, the user's geographic location may be generalized (such as at the city, zip code, or state level) so that the user's specific location cannot be determined. Thus, the user may control what information is collected about the user, how the information is used, and what information is provided to the user.
[0163] In more detail and as an example, the results from the comparison between different architectures and model parameters may be described herein. The results described herein are not meant to limit the scope of the invention. All architectures implemented herein may be composed of elements that make up system 100. In the non-limiting example embodiment described herein, data processing system 102 is responsible for estimating the union between two user data sets 302 and 304. Data processing system 104 is responsible for generating a first interaction vector using, for example, method 500 and set 302. Data processing system 106 is responsible for generating a second interaction vector using, for example, method 500 and set 304. In this example embodiment, data processing systems 102, 104, and 106 may communicate via network 110. The non-limiting example embodiment described herein uses a counting vector method.
[0164] In an exemplary embodiment, the accuracy for estimating the size of the union of two sets of user identifiers, such as 302 and 304, may depend on setting the cardinality and the magnitude of its intersection. In some exemplary embodiments, the accuracy for estimating the size of the union of two sets of user identifiers may depend on the size of the interaction vector generated, for example, in method 400 or method 500. In some exemplary embodiments, the accuracy for estimating the size of the union of two sets of user identifiers may depend on the scale of the noise added to the interaction vector.
[0165] In a non-limiting exemplary embodiment for implementing and testing various architectures without limiting the scope of the invention, the accuracy of the implementation was tested while varying the interaction vector cardinality and the size of the user identifier sets 302 and 304. Data from this example experiment is illustrated in Fig. 9 In this non-limiting exemplary embodiment, the size of the intersection 306 of the two sets is one tenth of the size of the first set of user identifiers 302. It is assumed that the two sets of user identifiers have the same cardinality. The scale of the Laplace noise applied in this exemplary embodiment is fixed at ε=ln(3), where the scale of the Laplace noise is equal to b=1 / ε. Fig. 9 Graph showing a contour curve of an estimated constant fractional standard error of the union cardinality (306) of two sets of user identifiers 302 and 304. Fig. 9 As illustrated, profile 912 has a 10% standard error, profile 910 has a 5% standard error, profile 908 has a 3% standard error, profile 906 has a 2% standard error, and profile 904 has a 1% standard error. Fig. 9 The contour indication in has a set cardinality N1=N2=2 16 This exemplary embodiment can be used when the vector size (k) is between 2 13 with 2 17 The estimate of the union between achieves 1% accuracy.
[0166] Fig. 9 The figures included in show that non-limiting exemplary embodiments are able to ensure an accuracy of the order of 1-5% with a proper choice of the vector size k. Fig. 9 The graph in also shows that the accuracy profile is relatively flat in vector size k with varying set sizes N1=N2. Based on this data, one can assume that the minimum vector size k=2 10 =1024 may ensure a 2% error threshold.
[0167] In another non-limiting exemplary embodiment that does not limit the scope of the invention, the accuracy of the implementation is tested while varying the set cardinality ratio of N1 (302) and N2 (304). In this non-limiting exemplary embodiment, all other parameters are fixed to values from previous experiments. Fig.10 Graphs showing data obtained from this non-limiting exemplary embodiment. Profiles 1002, 1004, 1006, and 1008 each show a 2% error in estimating the cardinality of the union of two sets while increasing the cardinality of one of these sets relative to the other. Fig.10As shown, when the two sets are equal in size, contour 1002 shows a threshold of 2% standard error. When set N2 (304) is twice the size of set N1 (302), contour 1004 shows a threshold of 2% standard error. When set N2 (304) is four times the size of set N1 (302), contour 1006 shows a threshold of 2% standard error. When set N2 (304) is eight times the size of set N1 (302), contour 1008 shows a threshold of 2% standard error.
[0168] As Fig.10 As demonstrated by the figures included in , this non-limiting example embodiment shows that as the cardinality of the two sets (302 and 304) becomes more unequal, it becomes significantly easier to maintain a fixed standard error. This is because, in this non-limiting example embodiment, the absolute error is a function of the size of the intersection, and the standard error is relative to the size of the union. Further discussing the results obtained from this embodiment, as the difference in the cardinality of the sets increases, the size of the intersection relative to the size of the union decreases because the size of the intersection is limited by the size of the smaller set.
[0169] In another non-limiting exemplary embodiment, which does not limit the scope of the invention, the accuracy of the implementation is tested while varying the fraction of users shared (306) by N1 (302) and N2 (304). In this non-limiting exemplary embodiment, it is assumed that the two sets N1 (302) and N2 (304) have the same cardinality (N1=N2). The scale of the Laplace noise applied in this exemplary embodiment is fixed at ε=ln(3), where the scale of the Laplace noise is equal to b=1 / ε. Fig.11 Shown is a graph of data obtained from experiments carried out using this example embodiment. Fig.11 The contours 1102, 1104, 1106, and 1108 shown in FIG. 1 show a constant standard error of 2% for different intersection sizes 306. When the overlap area N 12 (306) is 5% of the size of the first set of user identifiers N1 (302), the contour 1102 shows a threshold of 2% constant error. 12 (306) is 10% of the size of the first set of user identifiers N1 (302), the contour 1104 shows a threshold of 2% constant error. 12 (306) is 20% of the size of the first set of user identifiers N1 (302), the contour 1106 shows a threshold of 2% constant error. 12 When (306) is 30% of the size of the first user identifier set N1 (302), the contour 1108 shows a threshold of 2% constant error.
[0170] From Fig.11The data illustrated for this non-limiting example embodiment shows that increasing the size of the intersection between sets N1 (302) and N2 (304) increases the error for the same size of N1 (302) and interaction vector size k. Fig.11 The data illustrated also shows that the optimal vector size is almost constant with increasing intersection fraction (306). With respect to this example embodiment, this means that each data processing system 104 and 106 is able to choose the optimal value of k for its value of N without affecting the accuracy of the estimate in a significant way.
[0171] In another non-limiting exemplary embodiment for implementing and testing various architectures without limiting the scope of the invention, the accuracy of the implementation was tested while varying the scale of the Laplace noise (b=1 / ε). In the example embodiment described herein, two sets of user identifiers N1 (302) and N2 (304) have the same cardinality (N1=N2). The intersection (306) of the two sets is fixed to one-tenth the size of N1. Fig.12 Shown is a graph of data obtained from experiments carried out using this example embodiment. Fig.11 The contours 1102, 1104, 1106, and 1108 shown in the figure in FIG. 1 show a constant standard error of 2% for different values of ε. When ε = 2ln(3), contour 1202 shows the threshold of 2% constant error. When ε = sqrt(2)ln(3), contour 1204 shows the threshold of 2% constant error. When ε = ln(3), contour 1206 shows the threshold of 2% constant error. When ε = (1 / sqrt(2))ln(3), contour 1208 shows the threshold of 2% constant error. When ε = (1 / 2)ln(3), contour 1210 shows the threshold of 2% constant error.
[0172] From Fig.12 The data of this non-limiting example embodiment illustrated shows that the lower bound on the vector size k for ensuring accuracy is almost independent of the noise scale. With respect to this example embodiment, this means that the data processing systems 104 and 106 can choose a lower bound on the vector size k independently of the noise scale they choose. Fig.12 The data in also indicate that the optimal vector size k decreases significantly as the error scale increases.
Claims
1. A method for providing anonymous data about user interactions with a collection of content items, the method comprising: receiving data identifying a set of k hash functions based on a request from a requestor; retrieving a plurality of user identifiers, each of the user identifiers identifying one or more interactions with the set of content items by a corresponding user identifier of the plurality of user identifiers; For each respective user identifier of the plurality of user identifiers, a user vector is generated by: generating a first hash value for a corresponding user identifier using a first hash function from the set of k hash functions included in the request from the requestor; generating a second hash value for a corresponding user identifier using a second hash function from the set of k hash functions included in the request from the requestor; generating a user vector comprising k coordinates, wherein a first coordinate of the user vector comprises a subset of bits of the first hash value and a second coordinate of the user vector comprises a subset of bits of the second hash value, wherein each coordinate of the user vector contains no specific information about an individual user identifier or a specific interaction of a user identifier with a content item in the set of content items; as well as generating an interaction vector by summing a plurality of generated user vectors, the plurality of generated user vectors being generated for each respective user identifier; as well as The generated interaction vector is transmitted to the requestor, wherein the generated interaction vector provides anonymous data about multiple user interactions with the set of content items from multiple content delivery platforms without revealing the user identifier to the requestor, wherein the generated interaction vector is used to estimate the number of unique user interactions with the set of content items based on the generated user vector and a second interaction vector associated with a third party.
2. The method according to claim 1, wherein: Receiving the set of k hash functions includes receiving data identifying the set of content items.
3. The method according to claim 2, wherein: Retrieving a plurality of user identifiers, each of the user identifiers identifying an interaction with the set of content items by a respective user of the plurality of users comprises retrieving only the plurality of user identifiers identifying interactions with the set of content items identified by the received data.
4. The method according to claim 1, comprising: generating p hash values for each user identifier in the plurality of user identifiers, wherein the p hash values correspond to a corresponding hash function in a set of hash functions, determining an m-bit value for each of the p hash values, and A count of a register corresponding to the hash value is incremented, the register being one of k registers, where k=2^m, wherein each of the p hash values corresponds to a set of k registers.
5. The method according to claim 4, wherein: Generating the interaction vector includes generating p interaction vectors, wherein each coordinate of the p interaction vectors corresponds to a kth register in the pth register set.
6. The method according to claim 1, wherein: Determining the value of the m bits of the hash value includes determining the least significant bit of the hash value.
7. The method according to claim 1, wherein: The interaction vector includes a plurality of coordinates, each coordinate of the interaction vector is equal to the count of a corresponding kth register, wherein generating the interaction vector includes: subtracting a value equal to the number of user identifiers divided by k from each coordinate of the interaction vector.
8. The method according to claim 1, wherein: The interaction vector includes a plurality of coordinates, each coordinate of the interaction vector is equal to a count of a corresponding k-th register, wherein generating the interaction vector includes: adding a noise function to each coordinate of the interaction vector based on one or more parameters.
9. The method according to claim 1, wherein: Transmitting the generated interaction vector includes transmitting a number of the user identifiers identifying interactions with the set of content items.
10. The method according to claim 5, wherein: Transmitting the generated interaction vectors includes transmitting p interaction vectors.
11. A system comprising one or more processors, the processors being configured to: receiving data identifying a set of k hash functions based on a request from a requestor; retrieving a plurality of user identifiers, each of the user identifiers identifying one or more interactions with the set of content items by a corresponding user identifier in the plurality of user identifiers; For each respective user identifier of the plurality of user identifiers, a user vector is generated by: generating a first hash value for a corresponding user identifier using a first hash function from the set of k hash functions included in the request from the requestor; generating a second hash value for a corresponding user identifier using a second hash function from the set of k hash functions included in the request from the requestor; generating a user vector comprising k coordinates, wherein a first coordinate of the user vector comprises a subset of bits of the first hash value and a second coordinate of the user vector comprises a subset of bits of the second hash value, wherein each coordinate of the user vector contains no specific information about an individual user identifier or a specific interaction of a user identifier with a content item in the set of content items; as well as generating an interaction vector by summing a plurality of generated user vectors, the plurality of generated user vectors being generated for each respective user identifier; as well as The generated interaction vector is transmitted to the requestor, wherein the generated interaction vector provides anonymous data about multiple user interactions with the set of content items from multiple content delivery platforms without revealing the user identifier to the requestor, wherein the generated interaction vector is used to estimate the number of unique user interactions with the set of content items based on the generated user vector and a second interaction vector associated with a third party.
12. The system according to claim 11, wherein: The one or more processors are configured to receive data identifying the set of hash functions and receive data identifying the set of content items via a network.
13. The system according to claim 12, wherein: The one or more processors are configured to retrieve only a plurality of user identifiers identifying interactions with the set of content items identified by the received data.
14. The system according to claim 11, wherein: The one or more processors are configured to: generating p hash values for each user identifier in the plurality of user identifiers, wherein the p hash values correspond to a corresponding hash function in a set of hash functions, determining an m-bit value for each of the p hash values, and Incrementing a count of a register corresponding to the value, the register being one of k registers, where k=2^m, wherein each of the p hash values corresponds to the set of k registers.
15. The system of claim 14, wherein: The one or more processors are configured to generate p interaction vectors, wherein each coordinate of the p interaction vectors corresponds to a k-th register in a p-th register set.
16. The system according to claim 11, wherein: The one or more processors are configured to determine a value of the m bits of the hash value by determining a least significant bit of the hash value.
17. The system of claim 11, wherein: The one or more processors are configured to generate an interaction vector, each coordinate of the interaction vector being equal to the count of the corresponding kth register, and to subtract from each coordinate of the interaction vector a value equal to the number of user identifiers divided by k.
18. The system of claim 11, wherein: The one or more processors are configured to generate the interaction vector, each coordinate of the interaction vector being equal to the count of the corresponding k-th register, and to add a noise function to each coordinate of the interaction vector based on one or more parameters.
19. The system of claim 11, wherein: The one or more processors are configured to transmit, via a network, the generated interaction vector and a number of user identifiers identifying interactions with the set of content items.
20. The system of claim 15, wherein: The one or more processors are configured to transmit the generated p interaction vectors via a network.
Citation Information
Patent Citations
Systems and methods of attributing and compensating acquisition of influential users in a software application
US20150066636A1
Generating bridge match identifiers for linking identifiers from server logs
US20170026352A1