DE112020000091T5 - Systeme und Verfahren zur Wahrung der Privatsphäre durch Bestimmung der Schnittstellen von Sätzen von Benutzererkennungen - Google Patents

Systeme und Verfahren zur Wahrung der Privatsphäre durch Bestimmung der Schnittstellen von Sätzen von Benutzererkennungen Download PDF

Info

Publication number
DE112020000091T5
DE112020000091T5 DE112020000091.5T DE112020000091T DE112020000091T5 DE 112020000091 T5 DE112020000091 T5 DE 112020000091T5 DE 112020000091 T DE112020000091 T DE 112020000091T DE 112020000091 T5 DE112020000091 T5 DE 112020000091T5
Authority
DE
Germany
Prior art keywords
vector
user
interaction
user ids
hash
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020000091.5T
Other languages
English (en)
Inventor
Michael William Daub
Scott Schneider
Joseph sean Cahill Goodknight KNIGHTBROOK
Sheng Ma
Laura Grace Book
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE112020000091T5 publication Critical patent/DE112020000091T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0242Determining effectiveness of advertisements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/212Schema design and management with details for data modelling support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6263Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0242Determining effectiveness of advertisements
    • G06Q30/0246Traffic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0277Online advertisement
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0414Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden during transmission, i.e. party's identity is protected against eavesdropping, e.g. by using temporary identifiers, but is known to the other party or parties involved in the communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0407Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the identity of one or more communicating identities is hidden
    • H04L63/0421Anonymous communication, i.e. the party's identifiers are hidden from the other party or parties, e.g. using an anonymizer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Business, Economics & Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Game Theory and Decision Science (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Computing Systems (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Power Engineering (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Mindestens ein Aspekt ist darauf gerichtet, eine Schätzung eines Schnittpunkts von Benutzerkennungen in einem ersten Satz von Benutzerkennungen und einem zweiten Satz von Benutzerkennungen zu bestimmen. Der erste und der zweite Satz von Benutzerkennungen können mit Benutzerkennungen, die mit demselben Inhaltselement oder derselben Inhaltselementkampagne interagiert haben, gefüllt werden. Schätzungen von Schnittpunkten des ersten und des zweiten Satzes können basierend auf einem Binomialvektoransatz, einem Vektorzählungsansatz oder einem Hybridansatz bestimmt werden. Der Binomialvektoransatz erzeugt Vektoren basierend auf k Hashes jeder Benutzerkennung im ersten Satz und summiert die Vektoren, um einen ersten Vektor zu erzeugen. Der Schnittpunkt kann basierend auf einem Punktprodukt des ersten Vektors und eines zweiten Vektors, der auf ähnliche Weise aus dem zweiten Satz von Benutzerkennungen erzeugt wird, bestimmt werden.

Description

  • QUERVERWEIS AUF VERWANDTE ANWENDUNGEN
  • Die vorliegende Anmeldung beansprucht den Vorteil und die Priorität von:
    • der US-Patentanmeldung Nr. 16/592,190 , eingereicht am 3. Oktober 2019, die selbst eine Continuation-Anmeldung ist und die Priorität beansprucht von:
      • der US-Patentanmeldung Nr. 16/564,116 , eingereicht am 9. September 2019, die selbst den Vorteil und die Priorität beansprucht von:
        • der vorläufigen US-Patentanmeldung Nr. 62/877,251 , eingereicht am 22. Juli 2019, und der vorläufigen US-Patentanmeldung Nr. 62/870,970 , eingereicht am 5. Juli 2019;
    • der US-Patentanmeldung Nr. 16/592,190 , eingereicht am 3. Oktober 2019, die außerdem den Vorteil und die Priorität beansprucht von:
      • der vorläufigen US-Patentanmeldung Nr. 62/877,251 , eingereicht am 22.
      • Juli 2019, und der vorläufigen US-Patentanmeldung Nr. 62/870,970 ,
      • eingereicht am 5. Juli 2019; und
    die vorliegende Anmeldung beansprucht auch den Vorteil und die Priorität von:
    • der vorläufigen US-Patentanmeldung Nr. 62/877,251 , eingereicht am 22. Juli 2019, und der vorläufigen US-Patentanmeldung Nr. 62/870,970 , eingereicht am 5. Juli 2019.
  • Der Inhalt jeder der oben genannten Anmeldungen wird hiermit in seiner Gesamtheit durch Bezugnahme aufgenommen.
  • HINTERGRUND
  • In einer Computernetzwerkumgebung wie dem Internet stellen Inhaltsanbieter von Drittanbietern Inhaltselemente von Drittanbietern zur Anzeige auf Endbenutzer-Computergeräten bereit. Diese Inhaltselemente von Drittanbietern, z.B. Anzeigen, können auf einer Webseite angezeigt werden, die einem jeweiligen Herausgeber zugeordnet ist. Diese Inhaltselemente von Drittanbietern können Inhalte enthalten, die den Inhaltsanbieter von Drittanbietern, der das Inhaltselement bereitgestellt hat, identifizieren.
  • ZUSAMMENFASSUNG
  • Ein technisches Problem, das in der vorliegenden Offenbarung angesprochen wird, ist die Schwierigkeit, die Gesamtzahl der Interaktionen zwischen Benutzern und einem Satz von Inhaltselementen von zwei verschiedenen Inhaltsbereitstellungsplattformen durch einen Dritten zu bestimmen, während die Privatsphäre der Benutzer gewahrt bleibt. Beispielsweise möchte ein Dritter möglicherweise die Gesamtzahl der Benutzerinteraktionen mit einem bestimmten Satz von Inhaltselementen auf zwei separaten Inhaltsbereitstellungsplattformen schätzen. Wenn jedoch alle Informationen über die Benutzer und ihre Interaktionen von jeder Inhaltsbereitstellungsplattform an Dritte gesendet werden, erhält der Dritte private Informationen über jeden Benutzer. Die in dieser Offenbarung angesprochenen Herausforderungen bestehen darin, dem Dritten genügend Daten zur Verfügung zu stellen, um die Gesamtinteraktionen der Benutzer mit einem bestimmten Satz von Inhaltselementen zu schätzen und gleichzeitig die Privatsphäre der Benutzer jeder Inhaltsbereitstellungsplattform zu wahren.
  • Durch Hashing jeder Benutzerinteraktion kann man die Privatsphäre der Benutzer bewahren, während einige Informationen über die Benutzerinteraktionen beibehalten werden. Diese Informationen sind ein deterministischer Satz von Bits, die für die weitere Berechnung verwendet werden können, jedoch keine spezifischen Informationen über die einzelnen Benutzer oder deren Interaktionen enthalten. Teile dieser Hashes können verwendet werden, um Datenstrukturen zu konstruieren, die als Vektoren bezeichnet werden. Eine Benutzerinteraktion, die auf zwei verschiedenen Plattformen für die Bereitstellung von Inhalten vorhanden ist, hat den gleichen quantitativen Beitrag zum Vektor jeder Plattform, da die für die Benutzerinteraktionsdaten verwendeten Hashing-Operationen deterministisch sind. Der Vektor kann an einen Dritten gesendet werden, der Vektoren von zwei verschiedenen Plattformen für die Bereitstellung von Inhalten verarbeiten kann, um die Gesamtzahl der Benutzerinteraktionen mit einer Reihe von Inhaltselementen auf beiden Plattformen mithilfe statistischer Analysen zu schätzen.
  • Diese Anmeldung beansprucht die Priorität der am 5. Juli 2019 eingereichten vorläufigen Anmeldung Nr. 62/870970 und der am 22. Juli 2019 eingereichten vorläufigen Anmeldung Nr. 62/877251.
  • Mindestens ein Aspekt ist auf ein Verfahren zum Schätzen der Anzahl eindeutiger Benutzerinteraktionen mit einem Satz von Inhaltselementen, die von verschiedenen Inhaltsbereitstellungsplattformen bereitgestellt werden, gerichtet. Das Verfahren umfasst das Übertragen einer Reihe von Hash-Funktionen über ein Netzwerk an eine erste Inhaltsbereitstellungsplattform. Das Verfahren umfasst ferner das Übertragen des Satzes von Ha sh-Funktionen über ein Netzwerk an eine zweite Inhaltsbereitstellungsplattform. Das Verfahren umfasst auch das Empfangen eines ersten Vektors von der ersten Inhaltsbereitstellungsplattform über ein Netzwerk, wobei jede Koordinate des ersten Vektors gleich einer Summe ist, die auf einer Vielzahl von Hashes basiert, wobei jeder Hash aus einer von mehreren Benutzerinteraktionen mit dem Satz von Inhaltselementen berechnet wird, die über die erste Inhaltsbereitstellungsplattform auftreten. Das Verfahren umfasst auch das Empfangen eines zweiten Vektors von der zweiten Inhaltsbereitstellungsplattform über ein Netzwerk, wobei jede Koordinate des zweiten Vektors gleich einer Summe ist, die auf einer Vielzahl von Hashes basiert, wobei jeder Hash aus einer von mehreren Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die zweite Inhaltsbereitstellungsplattform auftreten, berechnet wird. Das Verfahren umfasst ferner, basierend auf einer Summe der Elemente des ersten Vektors, das Schätzen einer Anzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die erste Inhaltsbereitstellungsplattform auftreten. Das Verfahren umfasst auch das Schätzen, basierend auf einer Summe der Elemente des zweiten Vektors, einer Anzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die zweite Inhaltsbereitstellungsplattform auftreten. Das Verfahren umfasst ferner das Schätzen einer Anzahl eindeutiger Benutzerinteraktionen mit dem Satz von Inhaltselementen, die sowohl von der ersten Inhaltsbereitstellungsplattform als auch von der zweiten Inhaltsbereitstellungsplattform bereitgestellt werden, basierend auf der Anzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die erste Inhaltsbereitstellungsplattform auftreten, die Anzahl der Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die zweite Inhaltsbereitstellungsplattform auftreten, und ein Punktprodukt des ersten und des zweiten Vektors.
  • In einigen Implementierungen umfasst das Verfahren das Übertragen einer ersten Anforderung für einen ersten Vektor über ein Netzwerk an eine erste Inhaltsbereitstellungsplattform über ein Netzwerk. In einigen Implementierungen umfasst das Verfahren das Übertragen einer zweiten Anforderung für einen zweiten Vektor über ein Netzwerk an eine zweite Inhaltsbereitstellungsplattform. In einigen Implementierungen umfasst die erste Anforderung einen Satz von Hash-Funktionen. In einigen Implementierungen umfasst die zweite Anforderung einen Satz von Hash-Funktionen. In einigen Implementierungen umfasst das Verfahren das Schätzen der Gesamtzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über das erste Inhaltsübermittlungsnetzwerk auftreten, basierend auf der doppelten Gesamtsumme aller Koordinaten im ersten Vektor geteilt durch die Anzahl der Koordinaten im ersten Vektor. In einigen Implementierungen umfasst das Verfahren das Schätzen der Gesamtzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über das zweite Inhaltsübermittlungsnetzwerk auftreten, basierend auf der doppelten Gesamtsumme aller Koordinaten im zweiten Vektor geteilt durch die Anzahl der Koordinaten im zweiten Vektor. In einigen Implementierungen umfasst das Verfahren das Schätzen einer Anzahl eindeutiger Benutzerinteraktionen mit dem Satz von Inhaltselementen, die sowohl von der ersten Inhaltsbereitstellungsplattform als auch von der zweiten Inhaltsbereitstellungsplattform , basierend auf der Anzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über auftreten die erste Inhaltsbereitstellungsplattform , der Anzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die zweite Inhaltsbereitstellungsplattform auftreten, und der Kovarianz des ersten Vektors und des zweiten Vektors, bereitgestellt werden.
  • Zumindest ein anderer Aspekt ist auf ein Verfahren zum Bereitstellen anonymer Daten über Benutzerinteraktionen mit einem Satz von Inhaltselementen gerichtet. Das Verfahren umfasst das Empfangen von Daten über ein Netzwerk, um einen Satz von Hash-Funktionen zu identifizieren. Das Verfahren umfasst ferner das Abrufen einer Vielzahl von Benutzerkennungen, wobei jede der Benutzerkennungen die Interaktion mit einem Satz von Inhaltselementen durch einen jeweiligen Benutzer der Vielzahl identifiziert. Das Verfahren umfasst ferner für jede der mehreren Benutzerkennungen das Erzeugen von k-Hashes der Benutzerkennung, wobei jeder Hash einem der Sätze von Hashfunktionen entspricht, und das Erzeugen eines Benutzervektors, wobei jede Koordinate des Benutzervektors einem Bit-Wert eines jeweiligen Hash entspricht. Das Verfahren umfasst auch das Erzeugen eines Interaktionsvektors durch Summieren der Vielzahl von erzeugten Benutzervektoren. Das Verfahren umfasst ferner das Übertragen über ein Netzwerk des erzeugten Interaktionsvektors über ein Netzwerk an die anfordernde Partei.
  • Zumindest ein anderer Aspekt ist auf ein Verfahren zum Bereitstellen anonymer Daten über Benutzerinteraktionen mit einem Satz von Inhaltselementen gerichtet. Das Verfahren umfasst das Empfangen einer Anforderung über ein Netzwerk für einen Interaktionsvektor von einer anfordernden Partei über ein Netzwerk, wobei die Anforderung Daten zum Identifizieren einer Hash-Funktion umfasst. Das Verfahren umfasst ferner das Abrufen einer Vielzahl von Benutzerkennungen, wobei jede der Benutzerkennungen die Interaktion mit einem Satz von Inhaltselementen durch einen jeweiligen Benutzer der Vielzahl identifiziert. Das Verfahren umfasst auch für jede der mehreren Benutzerkennungen das Erzeugen eines Hashwerts der Benutzerkennung unter Verwendung der in der Anforderung enthaltenen Hashfunktion, das Bestimmen eines Werts eines ersten m-Bits des Hashwerts und das Inkrementieren einer Anzahl eines Registers entsprechend dem Wert, wobei das Register eines von k Registern ist, wobei k = 2^m ist. Das Verfahren umfasst auch das Erzeugen eines Interaktionsvektors, wobei jede Koordinate des Interaktionsvektors gleich einer Zählung eines entsprechenden k-ten Registers ist. Das Verfahren umfasst ferner das Übertragen, über ein Netzwerk, des erzeugten Interaktionsvektors über ein Netzwerk an die anfordernde Partei.
  • In einem anderen Aspekt ist die vorliegende Offenbarung auf ein System gerichtet, das einen oder mehrere Prozessoren umfasst, die konfiguriert sind, um die Anzahl eindeutiger Benutzerinteraktionen mit einem Satz von Inhaltselementen, die von verschiedenen Inhaltsbereitstellungsplattform en bereitgestellt werden, zu schätzen. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie über ein Netzwerk eine Reihe von Hash-Funktionen an eine erste Inhaltsbereitstellungsplattform übertragen. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie über ein Netzwerk den Satz von Hash-Funktionen an eine zweite Inhaltsbereitstellungsplattform übertragen. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie über ein Netzwerk einen ersten Vektor von der ersten Inhaltsbereitstellungsplattform empfangen, wobei jede Koordinate des ersten Vektors gleich einer Summe ist, die auf einer Vielzahl von Hashes basiert, wobei jeder Hash aus einer von mehreren Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die erste Inhaltsbereitstellungsplattform auftreten, berechnet wird. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie über ein Netzwerk einen zweiten Vektor von der zweiten Inhaltsbereitstellungsplattform empfangen, wobei jede Koordinate des zweiten Vektors einer Summe entspricht, die auf mehreren Hashes basiert, wobei jeder Hash aus einer von mehreren Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die zweite Inhaltsbereitstellungsplattform auftreten, berechnet wird. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie eine Anzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen schätzen, die über die erste Inhaltsbereitstellungsplattform auftreten, basierend auf einer Summe der Elemente des ersten Vektors. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie eine Anzahl von Benutzerinteraktionen mit dem Satz von Inhaltselementen schätzen, die über die zweite Inhaltsbereitstellungsplattform auftreten, basierend auf einer Summe der Elemente des zweiten Vektors. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie eine Anzahl eindeutiger Benutzerinteraktionen mit dem Satz von Inhaltselementen schätzen, die sowohl von der ersten Inhaltsbereitstellungsplattform als auch von der zweiten Inhaltsbereitstellungsplattform bereitgestellt werden, basierend auf der Anzahl der Benutzerinteraktionen mit dem Satz von Inhaltselemente, die über die erste Inhaltsbereitstellungsplattform auftreten, der Anzahl der Benutzerinteraktionen mit dem Satz von Inhaltselementen, die über die zweite Inhaltsbereitstellungsplattform auftreten, und einem Punktprodukt des ersten Vektors und des zweiten Vektors.
  • In einem anderen Aspekt ist die vorliegende Offenbarung auf ein System gerichtet, das einen oder mehrere Prozessoren umfasst, die konfiguriert sind, um anonyme Daten über Benutzerinteraktionen mit einem Satz von Inhaltselementen bereitzustellen. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie über ein Netzwerk Daten empfangen, um einen Satz von Hash-Funktionen zu identifizieren. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie mehrere Benutzerkennungen abrufen, wobei jede der Benutzerkennungen die Interaktion mit einem Satz von Inhaltselementen durch einen jeweiligen Benutzer der Mehrzahl identifiziert. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie für jede der mehreren Benutzerkennungen k Hashes der Benutzerkennung erzeugen, wobei jeder Hash einer der Hash-Funktionen entspricht, und einen Benutzervektor erzeugt, wobei jede Koordinate des Benutzervektors einem Bit-Wert eines jeweiligen Hash entspricht. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie einen Interaktionsvektor erzeugen, indem die Vielzahl der erzeugten Benutzervektoren summiert wird. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie den erzeugten Interaktionsvektor über ein Netzwerk übertragen.
  • In einem anderen Aspekt ist die vorliegende Offenbarung auf ein System gerichtet, das einen oder mehrere Prozessoren umfasst, wobei die Prozessoren konfiguriert sind, um anonyme Daten über Benutzerinteraktionen mit einem Satz von Inhaltselementen bereitzustellen. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie über ein Netzwerk Daten empfangen, um einen Satz von Hash-Funktionen zu identifizieren. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie mehrere Benutzerkennungen abrufen, wobei jede der Benutzerkennungen die Interaktion mit einem Satz von Inhaltselementen durch einen jeweiligen Benutzer der Mehrzahl identifiziert. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, um einen Hash-Wert der Benutzerkennung unter Verwendung der in der Anforderung enthaltenen Hash-Funktion zu erzeugen, um einen Wert eines ersten m-Bits des Hash-Werts zu bestimmen und um eine Anzahl eines Registers zu erhöhen, das dem Wert entspricht, wobei das Register eines von k Registern ist, wobei k = 2^m ist. In einigen Implementierungen sind der eine oder die mehreren Prozessoren konfiguriert, um einen Interaktionsvektor zu erzeugen, wobei jede Koordinate des Interaktionsvektors gleich einer Anzahl eines entsprechenden k-ten Registers ist. In einigen Implementierungen sind der eine oder die mehreren Prozessoren so konfiguriert, dass sie den erzeugten Interaktionsvektor über ein Netzwerk übertragen.
  • Diese und andere Aspekte und Implementierungen werden nachstehend ausführlich erörtert. Die vorstehenden Informationen und die folgende detaillierte Beschreibung enthalten veranschaulichende Beispiele für verschiedene Aspekte und Implementierungen und bieten einen Überblick oder Rahmen für das Verständnis der Art und der Eigenschaften der beanspruchten Aspekte und Implementierungen. Die Zeichnungen dienen zur Veranschaulichung und zum weiteren Verständnis der verschiedenen Aspekte und Implementierungen und sind in dieser Beschreibung enthalten, und bilden einen Teil davon.
  • Figurenliste
  • Die beigefügten Zeichnungen sollen nicht maßstabsgetreu gezeichnet werden. Gleiche Bezugsnummern und Bezeichnungen in den verschiedenen Zeichnungen kennzeichnen gleiche Elemente. Aus Gründen der Übersichtlichkeit darf nicht jede Komponente in jeder Zeichnung beschriftet sein. In den Zeichnungen:
    • 1 zeigt ein Blockdiagramm einer beispielhaften Implementierung eines vernetzten Computersystems gemäß einer veranschaulichenden Implementierung.
    • 2 zeigt ein Flussdiagramm, das eine Ausführungsform eines Verfahrens zum Schätzen der Anzahl eindeutiger Benutzerinteraktionen mit einem Satz von Inhaltselementen über eine erste Inhaltsbereitstellungsplattform und eine zweite Inhaltsbereitstellungsplattform darstellt.
    • 3 zeigt eine grafische Darstellung einer Ausführungsform des Schnittpunkts des ersten Satzes von Benutzerkennungen und des zweiten Satzes von Benutzerkennungen.
    • 4A zeigt ein Flussdiagramm, das eine Ausführungsform eines Verfahrens zum Erzeugen und Übertragen eines Interaktionsvektors, der Benutzerinteraktionen mit einem Satz von Inhaltselementen darstellt, die auf mehreren Hash-Funktionen basieren, darstellt.
    • 4B zeigt eine Ausführungsform des Erzeugens eines k-Längenvektors basierend auf Hashes von Benutzerinteraktionsdaten wie in dem in 4A gezeigten Verfahren.
    • 5A zeigt ein Flussdiagramm, das eine Ausführungsform eines Verfahrens zum Erzeugen und Übertragen eines Interaktionsvektors, der Benutzerinteraktionen mit einem Satz von Inhaltselementen darstellt, die auf einer einzelnen Hash-Funktion basieren, darstellt.
    • 5B zeigt eine Ausführungsform des Erzeugens eines k-Längenvektors basierend auf m-Bits eines Hash von Benutzerinteraktionsdaten, wobei k = 2^m, wie in dem in 5A gezeigten Verfahren ist.
    • 6 zeigt eine Ausführungsform eines Schemas zum Hinzufügen von n k-Längenvektoren, die n Benutzerkennungen entsprechen, aus einem Satz von Inhaltselementen, die einen Interaktionsvektor, wie in dem in 4A gezeigten Verfahren, erzeugen.
    • 7 zeigt eine Ausführungsform eines Schemas eines Hybridansatzes zum Bestimmen einer Schätzung eines Schnittpunkts zweier Sätze von Benutzerkennungen.
    • 8 zeigt die allgemeine Architektur eines veranschaulichenden Computersystems, das verwendet werden kann, um eines der hier diskutierten Computersysteme zu implementieren.
    • 9 zeigt experimentelle Daten aus einer nicht einschränkenden Ausführungsform einer Architektur, die implementiert wurde, um die Genauigkeit einer Einheit von Kardinalität-Schätzungen zu testen, während die Vektorgröße variiert und die Kardinalität eingestellt wird.
    • 10 zeigt experimentelle Daten aus einer nicht einschränkenden Ausführungsform einer Architektur, die implementiert wurde, um die Genauigkeit von einer Gesamtheit von Kardinalität-Schätzungen zu testen, während die Kardinalität eines der Sätze relativ zum anderen erhöht wird.
    • 11 zeigt experimentelle Daten aus einer nicht einschränkenden Ausführungsform einer Architektur, die implementiert ist, um die Genauigkeit von einer Gesamtheit von Kardinalität-Schätzungen zu testen, während die Größe des Schnittpunkts beider Sätze variiert wird.
    • 12 zeigt experimentelle Daten aus einer nicht einschränkenden Ausführungsform einer Architektur, die implementiert ist, um die Genauigkeit von einer Einheit von Kardinalität-Schätzungen zu testen, während die Skala des zu den Vektoren hinzugefügten Laplace-Rauschens variiert wird.
  • DETAILLIERTE BESCHREIBUNG
  • Nachstehend sind detaillierte Beschreibungen verschiedener Konzepte aufgeführt, die sich auf Verfahren, Vorrichtungen und Systeme zur Wahrung der Privatsphäre beziehen und deren Implementierung bestimmen, wobei die Schnittmenge von Sätzen von Benutzerkennungen bestimmt wird. Die verschiedenen oben eingeführten und nachstehend ausführlicher diskutierten Konzepte können auf eine von zahlreichen Arten implementiert werden, da die beschriebenen Konzepte nicht auf eine bestimmte Art der Implementierung beschränkt sind.
  • 1 zeigt ein Blockdiagramm einer beispielhaften Implementierung eines vernetzten Computersystems 100. Das System 100 umfasst ein erstes Datencomputersystem 102, ein zweites Datencomputersystem 104 und ein drittes Datencomputersystem 106. Das System 100 kann auch mehrere Benutzervorrichtungen 108a bis 108e enthalten (zusammen als Benutzervorrichtungen 108 bezeichnet). Das erste, zweite und dritte Datencomputersystem 102, 104 und 106 und die Benutzervorrichtungen 108 können über ein Netzwerk 110 kommunizieren, das eines oder mehrere lokale Netzwerke, ein Weitverkehrsnetzwerk, private Netzwerke, öffentliche Netzwerke und das Internet umfassen kann. In einigen Beispielen kann das erste Datencomputersystem 102 ein Anbieter von Inhaltselementen (z.B. Anzeigen) sein, der Inhaltselemente zum Verteilen und Rendern auf den Benutzergeräten 108 bereitstellen kann. Das zweite Datencomputersystem 104 und das dritte Datencomputersystem können Inhaltselementverteilungssysteme sein, die die Inhaltselemente an die Benutzergeräte, beispielsweise basierend auf dem Inhalt, der den Benutzergeräten bereitgestellt wird, verteilen. Beispielsweise können Benutzern auf den Benutzergeräten 108 Inhalte wie beispielsweise Webseiten oder audiovisuelle Inhalte bereitgestellt werden. Der Inhalt kann Inhaltselementschlitze (z.B. positionell oder zeitlich) zum Anzeigen von Inhaltselementen zusammen mit dem Inhalt enthalten. Die Anforderungen zum Anzeigen von Inhaltselementen in den Inhaltselementsteckplätzen können von den Inhaltselementverteilungssystemen empfangen werden. Die Anforderungen können eine Benutzergerätekennung enthalten, die das Benutzergerät 108 identifiziert, und zusätzliche Informationen, die sich auf das Benutzergerät, den dem Benutzergerät 108 bereitgestellten Inhalt usw. beziehen. Das Inhaltselementverteilungssystem kann die in der Inhaltselementanforderung enthaltenen Informationen verwenden, um ein Inhaltselement auszuwählen, und das Inhaltselement der Benutzervorrichtung 108, die zusammen mit dem bereitgestellten Inhalt gerendert werden soll, bereitstellen. Das dem Benutzergerät 108 bereitgestellte Inhaltselement kann Teil einer Inhaltselementkampagne, die beispielsweise von dem ersten Datencomputersystem 102 ausgeführt wird, sein.
  • Das Inhaltselementbereitstellungssystem oder die Inhaltsbereitstellungsplattform, wie das erste Datencomputersystem 104 und das zweite Datencomputersystem 106, können Aufzeichnungen der Benutzerkennungen in Bezug auf die den Benutzergeräten 108 bereitgestellten Inhaltselemente führen. Diese Datensätze können beispielsweise eine Liste von Benutzerkennungen enthalten, die Benutzern oder Benutzergeräten, die mit einem bestimmten Satz von Inhaltselementen gerendert wurden oder mit dem Inhaltselement interagierten (z.B. angeklickt wurden), zugeordnet sind. Diese Listen von Benutzerkennungen werden manchmal als „Skizzen“ bezeichnet. Ein Herausgeber, wie beispielsweise das erste Datencomputersystem 102, kann die Wirksamkeit eines Inhaltselements oder einer Inhaltselementkampagne bestimmen, indem er die von den Inhaltselementverteilungssystemen empfangenen Skizzen analysiert. Beispielsweise kann der Herausgeber die Effektivität einer Inhaltselementkampagne bestimmen, indem er die Anzahl der Benutzer bestimmt, die mit den Inhaltselementen in der Inhaltselementkampagne interagiert haben. Der Herausgeber kann die Verteilungssysteme für Inhaltselemente anfordern, dem Herausgeber Skizzen, die mit der Kampagne für Inhaltselemente verknüpft sind, zur Verfügung zu stellen. Eine Skizze kann Benutzerkennungen der Benutzer oder Benutzergeräte, die mit der Inhaltselementkampagne interagiert haben, enthalten. Der Herausgeber kann die Anzahl der in den empfangenen Skizzen enthaltenen Benutzerkennungen hinzufügen, um die Anzahl der Benutzer zu bestimmen, die mit dem Inhaltselement interagiert haben. Skizzen, die von zwei verschiedenen Verteilungssystemen für Inhaltselemente empfangen werden, können jedoch doppelte Benutzer-IDs enthalten, was dazu führt, dass die doppelten Benutzer-IDs zweimal gezählt werden und daher zu einer ungenauen Anzahl führen. Die doppelten Kennungen können beispielsweise darauf zurückzuführen sein, dass dieselben Benutzer oder Benutzergeräte mit demselben Inhaltselement interagieren, das von den beiden Inhaltselementverteilungssystemen verteilt wird. Um die tatsächliche Anzahl der Benutzer zu ermitteln, die mit dem Inhaltselement interagiert haben, muss der Herausgeber doppelte Benutzerkennungen entfernen. Ein Ansatz zum Entfernen der doppelten Kennungen kann darin bestehen, den Schnittpunkt der beiden Skizzen zu bestimmen, wobei der Schnittpunkt die Benutzerkennungen, die beiden Skizzen gemeinsam sind, enthält und diese Zahl dann aus der Summe der Skizzen zu entfernen, um die tatsächliche Anzahl von eindeutigen Benutzer-IDs, im Weiteren Benutzerkennungen genannt, die mit dem Inhaltselement interagiert haben, zu ermitteln.
  • Das Bestimmen des Schnittpunkts der zwei Sätze von Benutzerkennungen kann jedoch rechenintensiv sein. In einigen Fällen kann beispielsweise jede Skizze Hunderttausende, wenn nicht Millionen von Benutzerkennungen enthalten. Das Bestimmen eines eindeutigen Satzes von Benutzerkennungen aus den zwei großen Sätzen kann rechenintensiv oder sogar nicht durchführbar sein. In einigen Fällen können Kardinalitäts-Schätzungsalgorithmen verwendet werden, um eine Schätzung der eindeutigen Anzahl von Benutzerkennungen in den Skizzen zu bestimmen. Beispiele für Kardinalitäts-Schätzungsalgorithmen können Hyperloglog, probabilistisches Zählen mit stochastischer Mittelung (PCSA), k-ten Minimalwert (KMV) usw. umfassen. Jeder dieser Algorithmen kann die Kardinalität, d.h. eine eindeutige Anzahl von Mitgliedern in einem Multiset, auf rechentechnisch effiziente Weise schätzen. Diese Algorithmen können jedoch Informationen zu einzelnen Teilnehmern der Skizzen anzeigen.
  • Im Folgenden wird einen Satz von Ansätzen diskutiert, die verwendet werden können, um den Schnittpunkt der Skizzen auf eine rechnerisch effiziente Weise zu bestimmen, die auch die Privatsphäre der Benutzerkennungen in den Skizzen bewahrt. Insbesondere werden drei Ansätze diskutiert: ein Binomialvektoransatz, ein Vektorzählungsansatz und ein Hybridansatz, von denen jeder die Benutzerkennungen am Schnittpunkt zweier Skizzen bestimmen kann, während die Privatsphäre der Benutzerkennungen in diesen Skizzen gewahrt bleibt.
  • 2 zeigt ein Flussdiagramm des Verfahrens 200, das eine beispielhafte Ausführungsform eines Verfahrens zum Schätzen der Anzahl eindeutiger Benutzerinteraktionen mit einem Satz von Inhaltselementen ist, die von verschiedenen Inhaltsbereitstellungsplattformen bereitgestellt werden. Das Verfahren 200 kann auf dem System 100 ausgeführt werden, um beispielsweise den Schnittpunkt 306 des ersten und des zweiten Satzes von Benutzerkennungen 302 und 304, die in 3 gezeigt sind, zu bestimmen. Diese Prozessstufe kann beispielsweise von dem ersten Datenverarbeitungssystem 102 ausgeführt werden, das den ersten Satz von Benutzerkennungen 302 und den zweiten Satz von Benutzerkennungen 304, die in 3 gezeigt sind, empfangen kann.
  • In einer kurzen Übersicht von 2 kann das Verfahren zum Schätzen der Anzahl eindeutiger Benutzerinteraktionen das Übertragen eines Satzes von Hashes an eine erste Inhaltsbereitstellungsplattform 202 umfassen. Die erste Inhaltsbereitstellungsplattform kann einen Vektor berechnen, der Benutzerinteraktionen mit einem Satz von Inhaltselementen darstellt, die von der ersten Inhaltsbereitstellungsplattform 216 bereitgestellt werden. Das Verfahren kann den Satz von Hashes an eine zweite Inhaltsbereitstellungsplattform 204 übertragen. Die zweite Inhaltsbereitstellungsplattform kann einen Vektor berechnen, der Benutzerinteraktionen mit dem Satz von Inhaltselementen darstellt, die von der zweiten Inhaltsbereitstellungsplattform 220 bereitgestellt werden. Die erste Inhaltsbereitstellungsplattform kann den Vektor übertragen, der Benutzerinteraktionen darstellt, die von der ersten Inhaltsbereitstellungsplattform 218 bereitgestellt werden. Das Verfahren kann einen Vektor empfangen, der Benutzerinteraktionen der ersten Inhaltsbereitstellungsplattform 206 darstellt. Die zweite Inhaltsbereitstellungsplattform kann den Vektor übertragen, der Benutzerinteraktionen darstellt, die von der zweiten Inhaltsbereitstellungsplattform 222 bereitgestellt werden. Das Verfahren kann den Vektor, der Benutzerinteraktionen darstellt, von der zweiten Inhaltsbereitstellungsplattform 208 empfangen. Das Verfahren kann die Anzahl von Benutzerinteraktionen von der ersten Inhaltsbereitstellungsplattform 210 schätzen. Das Verfahren kann die Anzahl von Benutzerinteraktionen von der zweiten Inhaltsbereitstellungsplattform 212 schätzen. Das Verfahren kann schließlich die Anzahl eindeutiger Benutzerinteraktionen mit dem Satz von Inhaltselementen sowohl auf der ersten als auch auf der zweiten Inhaltsbereitstellungsplattform unter Verwendung einer Punktproduktoperation auf den beiden Vektoren 214 schätzen.
  • In weiteren Einzelheiten von Schritt 202 wird ein Satz von Hashes an die erste Inhaltsbereitstellungsplattform übertragen. Der Satz von Hashes kann viele Hashes enthalten. Der Satz von Hashes darf nur einen Hash enthalten. Der Satz von Hashes kann die Identitätsfunktion enthalten. Der Satz von Hashes kann als Teil einer Anforderung für Benutzerinteraktionsdaten von der ersten Inhaltsbereitstellungsplattform übertragen werden. Der Satz von Hashes kann über das Netzwerk 110 übertragen werden. In einigen Implementierungen kann der Satz von Hash-Funktionen Bezeichner sein, die die erste Inhaltsbereitstellungsplattform anweisen, bestimmte Hash-Funktionen zu verwenden. In einigen Implementierungen kann der Satz von Hash-Funktionen eine einzelne Binärdatei sein, die Computeranweisungen zum Ausführen eines Satzes von Hash-Funktionen enthält. In einigen Implementierungen kann der Satz von Hash-Funktionen viele Binärdateien sein, wobei jede Binärdatei Computeranweisungen zum Ausführen einer Hash-Funktion enthält. In einigen Implementierungen kann der Satz von Hash-Funktionen viele Binärdateien sein, wobei jede Binärdatei Code enthält, um eine Teilmenge der Hash-Funktionen in dem Satz von Hash-Funktionen auszuführen.
  • In weiteren Einzelheiten von Schritt 204 wird ein Satz von Hashes an die zweite Inhaltsbereitstellungsplattform übertragen. Der Satz von Hashes kann viele Hashes enthalten. Der Satz von Hashes darf nur einen Hash enthalten. Der Satz von Hashes kann die Identitäts-Hash-Funktion enthalten. Der Satz von Hashes kann als Teil einer Anforderung für Benutzerinteraktionsdaten von der ersten Inhaltsbereitstellungsplattform übertragen werden. Der Satz von Hashes kann über das Netzwerk 110 übertragen werden. In einigen Implementierungen kann der Satz von Hash-Funktionen-Kennungen sein, die die zweite Inhaltsbereitstellungsplattform anweisen, bestimmte Hash-Funktionen zu verwenden. In einigen Implementierungen kann der Satz von Hash-Funktionen eine einzelne Binärdatei, die Computeranweisungen zum Ausführen eines Satzes von Hash-Funktionen enthält, sein. In einigen Implementierungen kann der Satz von Hash-Funktionen viele Binärdateien sein, wobei jede Binärdatei Computeranweisungen zum Ausführen einer Hash-Funktion enthält. In einigen Implementierungen kann der Satz von Hash-Funktionen viele Binärdateien sein, wobei jeder Binärdatei einen Code enthält, um eine Teilmenge der Hash-Funktionen in dem Satz von Hash-Funktionen auszuführen.
  • In weiteren Einzelheiten von Schritt 206 empfängt das Verfahren einen ersten Vektor, der Benutzerinteraktionen, von der ersten Inhaltsbereitstellungsplattform, darstellt. In einigen Implementierungen kann der Vektor ein Binomialvektor von Zählungen sein. In einigen Implementierungen ist die Anzahl der Koordinaten im Vektor gleich der Anzahl der Hash-Funktionen in dem Satz der Hash-Funktionen. In einigen Implementierungen könnte jede Koordinate im Vektor einer Hash-Funktion im Satz von Hash-Funktionen entsprechen. In einigen Ausführungsformen könnte jede Koordinate des Vektors gleich der Summe eines einzelnen Bits der Hashes jeder Benutzerkennung sein, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden, wobei jede Koordinate einer Hash-Funktion in dem Satz von Hash-Funktionen entspricht. In einigen Implementierungen könnte die Anzahl der Koordinaten im Vektor gleich 2^k sein, wobei k die Anzahl der Hash-Funktionen in dem Satz der Hash-Funktionen ist. In einigen Implementierungen kann das Verfahren 200 beim Empfangen des ersten Vektors, der Benutzerinteraktionen darstellt, von der ersten Inhaltsbereitstellungsplattform auch die Anzahl von Benutzerkennungen, die mit dem Satz von Inhaltselementen von der ersten Inhaltsbereitstellungsplattform interagierten, empfangen.
  • In weiteren Einzelheiten von Schritt 208 empfängt das Verfahren einen zweiten Vektor, der Benutzerinteraktionen von der zweiten Inhaltsbereitstellungsplattform darstellt. In einigen Implementierungen kann der Vektor ein Binomialvektor von Zählungen sein. In einigen Implementierungen ist die Anzahl der Koordinaten im Vektor gleich der Anzahl der Hash-Funktionen in dem Satz der Hash-Funktionen. In einigen Implementierungen könnte jede Koordinate im Vektor einer Hash-Funktion im Satz von Hash-Funktionen entsprechen. In einigen Ausführungsformen könnte jede Koordinate des Vektors gleich der Summe eines einzelnen Bits der Hashes jeder Benutzerkennung sein, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden, wobei jede Koordinate einer Hash-Funktion in dem Satz von Hash-Funktionen entspricht. In einigen Implementierungen könnte die Anzahl der Koordinaten im Vektor gleich 2^k sein, wobei k die Anzahl der Hash-Funktionen in der Menge der Hash-Funktionen ist. In einigen Implementierungen kann das Verfahren 200 beim Empfangen des zweiten Vektors, der Benutzerinteraktionen darstellt, von der zweiten Inhaltsbereitstellungsplattform auch die Anzahl von Benutzerkennungen empfangen, die mit dem Satz von Inhaltselementen von der zweiten Inhaltsbereitstellungsplattform interagierten.
  • In einigen Implementierungen kann die Kardinalität des ersten Vektors und des zweiten Vektors gleich sein. In einigen Implementierungen ist die Kardinalität des ersten Vektors und des zweiten Vektors unterschiedlich. Die Kardinalität des ersten Vektors kann eine Zweierpotenz sein. Die Kardinalität des zweiten Vektors kann eine Zweierpotenz sein. In einigen Ausführungsformen kann das Verfahren 200 entweder bestimmen, dass der erste Vektor eine größere Kardinalität als der zweite Vektor aufweist, oder dass der zweite Vektor eine größere Kardinalität als der erste Vektor aufweist. In solchen Ausführungsformen kann das Verfahren 200 den größeren der beiden Vektoren herunterabtasten, um der Kardinalität des kleineren der beiden Vektoren zu entsprechen. In solchen Ausführungsformen können beide Vektoren eine Kardinalität haben, die gleich einer Zweierpotenz ist. Die Abwärtsabtastung kann durchgeführt werden, indem die Werte in den Koordinaten des größeren Vektors summiert werden, die zum Modul der Kardinalität des kleineren Vektors kongruent sind. In einem nicht einschränkenden Beispiel wird der erste Vektor mit einer Kardinalität von 8 und der zweite Vektor mit einer Kardinalität von 4 betrachtet. Um die Kardinalität des ersten Vektors und des zweiten Vektors gleich zu machen, wird eine Abwärtsabtastung des ersten Vektors durchgeführt. In dieser nicht einschränkenden Ausführungsform der Abtastung wird eine Abwärtsabtastung durchgeführt, indem die letzten vier Koordinaten des ersten Vektors mit den ersten vier Koordinaten des ersten Vektors summiert werden, um einen Vektor mit der Kardinalität vier zu erzeugen.
  • In weiteren Einzelheiten von Schritt 210 schätzt das Verfahren die Gesamtzahl der Benutzerinteraktionen der ersten Inhaltsbereitstellungsplattform. In einigen Implementierungen basiert die Anzahl der Benutzerinteraktionen auf dem Vektor, der von der ersten Inhaltsbereitstellungsplattform in Schritt 206 bereitgestellt wird. Die Anzahl der Benutzerinteraktionen kann geschätzt werden, indem jede Koordinate im Vektor der Benutzerinteraktionen summiert wird, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden, und diese Summe durch die Anzahl der Koordinaten im Vektor dividiert wird. Die Anzahl der Benutzerinteraktionen kann geschätzt werden, indem jede Koordinate im Vektor der Benutzerinteraktionen summiert wird, diese Zahl mit zwei multipliziert und durch die Anzahl der Koordinaten im Vektor dividiert wird, Die geschätzte Anzahl von Benutzerinteraktionen kann auch von der ersten Inhaltsbereitstellungsplattform empfangen werden, beispielsweise über das Netzwerk 110. In einigen Ausführungsformen kann die genaue Anzahl von Benutzerinteraktionen auch von der ersten Inhaltsbereitstellungsplattform empfangen werden, beispielsweise über das Netzwerk 110. In solchen Ausführungsformen wird der genaue Wert von dem Verfahren 200 als der geschätzte Wert verwendet.
  • In weiteren Einzelheiten von Schritt 212 schätzt das Verfahren von der zweiten Inhaltsbereitstellungsplattform die Gesamtzahl der Benutzerinteraktionen. In einigen Implementierungen basiert die Anzahl der Benutzerinteraktionen auf dem Vektor, der von der zweiten Inhaltsbereitstellungsplattform in Schritt 208 bereitgestellt wird. Die Anzahl der Benutzerinteraktionen wird geschätzt, indem jede Koordinate im Vektor der Benutzerinteraktionen, die von der zweiten Inhaltsbereitstellungsplattform bereitgestellt werden, summiert wird und diese Summe durch die Anzahl der Koordinaten im Vektor dividiert wird. Die Anzahl der Benutzerinteraktionen wird geschätzt, indem jede Koordinate in dem Vektor der Benutzerinteraktionen, die von der zweiten Inhaltsbereitstellungsplattform bereitgestellt werden, summiert wird, diese Anzahl mit zwei multipliziert und durch die Anzahl der Koordinaten im Vektor dividiert wird. Die geschätzte Anzahl von Benutzerinteraktionen kann auch von der zweiten Inhaltsbereitstellungsplattform empfangen werden, beispielsweise über das Netzwerk 110. In einigen Ausführungsformen kann die genaue Anzahl von Benutzerinteraktionen auch von der zweiten Inhaltsbereitstellungsplattform empfangen werden, beispielsweise über das Netzwerk 110. In solchen Ausführungsformen wird der genaue Wert von dem Verfahren 200 als der geschätzte Wert verwendet.
  • In weiteren Einzelheiten von Schritt 214 kann das Verfahren die Anzahl eindeutiger Benutzerinteraktionen mit dem Satz von Inhaltselementen schätzen, die von der ersten und zweiten Inhaltsbereitstellungsplattformen unter Verwendung eines Punktprodukts bereitgestellt werden. Die Schätzung der Anzahl eindeutiger Benutzerinteraktionen kann gleich der Summe der geschätzten Anzahl von Benutzerinteraktionen von der ersten und zweiten Inhaltsbereitstellungsplattformen abzüglich des Schnittpunkts der Sätze 306 sein. In einigen Implementierungen wird ein Punktprodukt verwendet, um den Schnittpunkt der Sätze 306 basierend auf den in den Schritten 206 und 208 empfangenen Vektoren zu berechnen. In einigen Implementierungen wird der Schnittpunkt zwischen Sätzen 306 berechnet, indem das Punktprodukt der in den Schritten 206 und 208 empfangenen Vektoren mit vier multipliziert und durch die Anzahl der Koordinaten in den Vektoren dividiert wird. In einigen Implementierungen wird der Schnittpunkt zwischen den Sätzen 306 berechnet, indem die Kovarianz der in den Schritten 206 und 208 empfangenen Vektoren mit vier multipliziert wird. In einigen Implementierungen kann der Schnittpunkt zwischen den Sätzen 306 berechnet werden, indem das Punktprodukt einer Vielzahl von Vektoren von Zählungen und der Durchschnitt der Vielzahl von Punktprodukten genommen wird.
  • In einer nicht einschränkenden beispielhaften Ausführungsform von Schritt 214 muss der Schnittpunkt der Sätze 206 zuerst basierend auf dem ersten Vektor und dem zweiten Vektor berechnet werden, die in Schritt 206 bzw. 208 empfangen wurden. In der hier beschriebenen beispielhaften Ausführungsform sind sowohl der erste als auch der zweite Vektor Vektoren von Zählungen, die unter Verwendung des Verfahrens 500 erzeugt wurden. Da jeder Vektor auf einer Summe der Benutzer-IDs basiert, kann jeder Vektor als die Summe von drei verschiedenen Vektoren betrachtet werden: ein Vektor, der Benutzer-IDs darstellt, die auf der ersten und zweiten Inhaltsbereitstellungsplattform (nachstehend als z dargestellt) vorhanden sind, Benutzer-IDs, die für die erste oder zweite Inhaltsbereitstellungsplattformen eindeutig sind (unten als u dargestellt), und ein Rauschvektor (unten als e dargestellt). Der erwartete Wert (d.h. die Schätzung) des Punktprodukts des ersten und des zweiten Vektors kann durch die folgende Gleichung dargestellt werden: E ( v 1 v 2 ) = E [ ( z + u 1 + e 1 ) ( z + u 1 + e 1 ) ]
    Figure DE112020000091T5_0001
  • In erweiterter Form kann die obige Gleichung wie folgt geschrieben werden: E ( v 1 v 2 ) = E ( z z ) + E ( z u 1 ) + E ( z u 2 ) + E ( u 1 u 2 ) + E ( z e 1 ) + E ( z e 1 ) + E ( u 2 e 1 )                         +E ( u 1 e 2 ) + E ( e 1 e 2 )
    Figure DE112020000091T5_0002
  • Wenn in diesem Beispiel die Rauschterme aus nullzentrierten Verteilungen stammen und von allen anderen Termen unabhängig sind, ist ihr erwarteter Wert ihrer Punktprodukte gleich Null. Daher sind alle Terme in der obigen Gleichung, die Rauschen entweder vom ersten Vektor (e1) oder vom zweiten Vektor (e2) enthalten, gleich Null. In diesem Beispiel werden der erste Vektor und der zweite Vektor im Mittel subtrahiert (d.h. der Durchschnitt aller Koordinaten jedes Vektors wird von jeder Koordinate des jeweiligen Vektors subtrahiert). Da sie entweder für den ersten oder den zweiten Vektor eindeutig sind, werden die disjunkten Teile der beiden Vektoren u1 und u2 als unabhängig betrachtet. Daher sind die erwarteten Werte ihrer Punktprodukte ebenfalls Null. In diesem nicht einschränkenden Beispiel wird mit den oben getroffenen Annahmen die oben aufgeführte Gleichung auf die unten angegebene Gleichung reduziert. e ( v 1 v 2 ) = E ( z z )
    Figure DE112020000091T5_0003
  • In einem weiteren Detail des obigen nicht einschränkenden Beispiels sei angenommen, dass eine Benutzerkennung von der ersten Inhaltsbereitstellungsplattform eine Wahrscheinlichkeit von 1/k hat, zu einer beliebigen Koordinate des ersten Vektors beizutragen, wobei der erste Vektor eine Kardinalität von k hat. Im Interesse dieses nicht einschränkenden Beispiels werden die gleichen Annahmen für den zweiten Vektor getroffen, außer auf der Grundlage der Benutzerkennungen von der zweiten Inhaltsbereitstellungsplattform. In diesem Beispiel nähert sich jede Koordinate des ersten und zweiten Vektors einer Binomialverteilung mit einer Wahrscheinlichkeit von 1/k und einer Anzahl von Versuchen Ni an, wobei die Anzahl von Versuchen gleich der Anzahl von Benutzerkennungen ist, die zum jeweiligen Vektor beitragen. Für einen großen Wert von Ni könnte die Verteilung für jede Koordinate durch eine Gauß'sche Verteilung mit Varianz, wie unten gezeigt, angenähert werden. V a r [ v i ( j ) ] = N i ( k 1 ) / k 2
    Figure DE112020000091T5_0004
  • In der obigen Gleichung repräsentiert vi(j) die j-te Koordinate des Vektors vi, wobei i entweder den ersten oder den zweiten Vektor repräsentiert. Um die Analyse des nicht einschränkenden Beispiels fortzusetzen, wird die erweiterte Form des erwarteten Werts des Punktprodukts des ersten und zweiten Vektors unten betrachtet. E ( v 1 v 2 ) = E ( z z ) = j = 1 k [ 1 ( j ) 2 ]
    Figure DE112020000091T5_0005
  • In der obigen Gleichung repräsentiert z(j) die j-te Koordinate des oben definierten Vektors z. Basierend auf unserer vorherigen Analyse muss z(j) auch mit einer Gaußschen Verteilung approximiert werden. Daher können wir in diesem nicht einschränkenden Beispiel die obige Gleichung auf die unten angegebene vereinfachen. E ( z z ) = j = 1 k E [ z ( j ) 2 ] = j = 1 k V a r ( z ( j ) ) = N 12 ( k 1 ) k
    Figure DE112020000091T5_0006
  • In der obigen Gleichung repräsentiert N12 die Anzahl der Benutzerkennungen, die mit einer Reihe von Inhaltselementen sowohl auf der ersten als auch auf der zweiten Inhaltsbereitstellungsplattform interagiert haben. Es ist zu beachten, dass für ein ausreichend großes k der Wert von (k-1)/k ungefähr gleich 1 ist. Daher könnte man in einem letzten Vereinfachungsschritt zu der folgenden Gleichung gelangen. E ( v 1 v 2 ) = E ( z z ) = N 12 ( k 1 ) k N 12
    Figure DE112020000091T5_0007
  • Daher könnte man in diesem nicht einschränkenden Beispiel, basierend auf den oben getroffenen Annahmen, die Anzahl der Benutzerinteraktionen, die beiden Plattformen für die Bereitstellung von Inhalten gemeinsam sind, berechnen, indem ein Punktprodukt verwendet wird. In einigen Ausführungsformen könnte dieses Beispiel als Teil von Schritt 214 verwendet werden, um die Anzahl eindeutiger Benutzerinteraktionen sowohl über die erste als auch über die zweite Inhaltsbereitstellungsplattform zu berechnen. In diesem Beispiel wird die Varianz des geschätzten Werts der Anzahl von Benutzerinteraktionen, die beiden Plattformen für die Bereitstellung von Inhalten gemeinsam sind, in der folgenden Gleichung beschrieben. V a r ( N 12 ^ ) = N 1 N 2 + N 12 2 k + 2 ( N 1 + N 2 ) ε 2 + 4 k ε 4
    Figure DE112020000091T5_0008
  • In der obigen Gleichung ist ε gleich der Umkehrung der Laplace-Rauschskala.
  • In weiteren Einzelheiten von Schritt 216 kann die erste Inhaltsbereitstellungsplattform einen Vektor berechnen, der Benutzerinteraktionen mit einem Satz von Inhaltselementen darstellt, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden. Die Systeme und Verfahren zum Berechnen des Vektors, der Benutzerinteraktionen mit einer Reihe von Inhaltselementen darstellt, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden, werden später in der Beschreibung erläutert. In weiteren Einzelheiten von Schritt 218 kann die erste Inhaltsbereitstellungsplattform den Vektor, der die in Schritt 216 berechneten Benutzerinteraktionen darstellt, über ein Netzwerk, beispielsweise das Netzwerk 110, das in dem Verfahren 200 verwendet werden soll, übertragen. In einigen Implementierungen kann Schritt 218 auch das Senden der genauen Anzahl von Benutzerinteraktionen umfassen, die durch den in Verfahren 200 zu verwendendem Vektor dargestellt werden. In einigen Implementierungen kann Schritt 218 auch das Senden einer Schätzung der Anzahl von Benutzerinteraktionen umfassen, die durch den Vektor, der in dem Verfahren 200 verwendet werden soll, dargestellt werden. Die Systeme und Verfahren zum Berechnen und Übertragen des Vektors, der Benutzerinteraktionen mit einer Reihe von Inhaltselementen, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden, darstellt, werden später in der Beschreibung erläutert.
  • In weiteren Einzelheiten von Schritt 220 kann die erste Inhaltsbereitstellungsplattform einen Vektor berechnen, der Benutzerinteraktionen mit einem Satz von Inhaltselementen darstellt, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden. Die Systeme und Verfahren zum Berechnen des Vektors, der Benutzerinteraktionen mit einer Reihe von Inhaltselementen, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden, darstellt, werden später in der Beschreibung erläutert. In weiteren Einzelheiten von Schritt 222 kann die erste Inhaltsbereitstellungsplattform den Vektor, der Benutzerinteraktionen, die in Schritt 220 berechnet wurden, darstellt, über ein Netzwerk übertragen, das in Verfahren 200 verwendet werden soll. In einigen Implementierungen kann Schritt 222 auch das Senden der Anzahl von Benutzerinteraktionen umfassen, die durch den Vektor dargestellt werden, der in dem Verfahren 200 verwendet werden soll. Die Systeme und Verfahren zum Berechnen und Übertragen des Vektors, der Benutzerinteraktionen mit einer Reihe von Inhaltselementen darstellt, die von der ersten Inhaltsbereitstellungsplattform bereitgestellt werden, werden später in der Beschreibung erläutert.
  • In einigen Ausführungsformen führt das erste Datenverarbeitungssystem das Verfahren 200 aus. In einigen Ausführungsformen kann das erste Datenverarbeitungssystem 102 den Schnittpunkt 306 von 3, basierend auf dem folgenden Ausdruck, bestimmen: r = 4 C o v ( Z x , Z y ) 4 k ( z x 1 z y 1 + + z x k z y k ) 4 k 2 ( z x 1 + + z x k ) ( z y 1 + + z y k )
    Figure DE112020000091T5_0009
  • Wobei r eine Schätzung der Anzahl von Benutzerkennungen darstellt, die sowohl in dem ersten Satz von Benutzerkennungen 302 als auch in dem zweiten Satz von Benutzerkennungen 304 erscheinen. In einigen Implementierungen kann das erste Datenverarbeitungssystem 102 einen erwarteten Wert von n/2 von jeder Position im ersten Vektor und im zweiten Vektor subtrahieren, bevor der Wert für r erzeugt wird. In solchen Fällen kann das erste Datenverarbeitungssystem 102 den Schnittpunkt r basierend auf dem folgenden Ausdruck bestimmen: r = 4 C o v ( Z x , Z y ) 4 k ( z x 1 z y 1 + + z x k z y k )
    Figure DE112020000091T5_0010
  • In einigen Ausführungsformen kann das erste Datenverarbeitungssystem 102 die Größe n des ersten Vektors basierend auf der Summe der Werte aller k-Positionen des ersten Vektors Zxk mit k Länge schätzen. In einigen Ausführungsformen kann beispielsweise das erste Datenverarbeitungssystem 102 die Größe n basierend auf dem folgenden Ausdruck bestimmen: n 2 k ( z x 1 + + z x k )
    Figure DE112020000091T5_0011
  • In einigen Ausführungsformen kann der vorherige Ausdruck in Schritt 210 und Schritt 212 des Verfahrens 200 verwendet werden. In einigen Ausführungsformen ist die als Teil des obigen Ausdrucks berechnete Summe entweder vom zweiten Datenverarbeitungssystem 104 oder vom dritten Datenverarbeitungssystem ein Computer 106. Das erste Datenverarbeitungssystem 102 kann auf ähnliche Weise die Größe n des zweiten Satzes von Benutzerkennungen 204 basierend auf dem zweiten k-Längenvektor Zyk bestimmen. Die Größen des jeweiligen ersten und zweiten Vektors können dann verwendet werden, um den jeweiligen Wert n/2 vom ersten und dem zweiten Vektor zu subtrahieren.
  • Das Verfahren 200 kann das Schätzen einer Größe des Schnittpunkts des ersten Satzes von Benutzerkennungen und des zweiten Satzes von Benutzerkennungen basierend auf einem Punktprodukt des ersten Vektors Vxk und des zweiten Vektors Vyk umfassen, wie in 7 gezeigt. In einigen Ausführungsformen kann das erste Datenverarbeitungssystem 102 einen Wert nx/k von jedem Koordinatenwert des ersten Vektors Vxk und einen Wert ny/k von jedem Koordinatenwert des zweiten Vektors Vyk subtrahieren, wobei nx und ny die Schätzung der Anzahl von Benutzerkennungen in dem ersten Satz von Benutzerkennungen 302 bzw. dem zweiten Satz von Benutzerkennungen 304 darstellen. In einigen Implementierungen werden nx und ny von der ersten bzw. zweiten Inhaltsbereitstellungsplattform bereitgestellt. In einigen Ausführungsformen kann das erste Datenverarbeitungssystem 102 den Wert r der Kreuzung schätzen, d.h. die Anzahl von Benutzerkennungen, die sowohl dem ersten Satz von Benutzerkennungen 302 als auch dem zweiten Satz von Benutzerkennungen 304 gemeinsam sind, basierend auf dem folgenden Ausdruck: r = i = 1 k V x i , V y i
    Figure DE112020000091T5_0012
  • Da die Bestimmung des Vektors auf der Aggregatstatistik aller Benutzerkennungen innerhalb des entsprechenden Satzes von Benutzerkennungen basiert, beseitigt die Aggregation jegliche Korrelation zwischen dem Wert des Vektors und der Identität des Benutzers. Daher sind die zur Bestimmung der Schätzung des Schnittpunkts verwendeten Vektoren datenschutzsicher.
  • In einigen Ausführungsformen kann das Datenverarbeitungssystem, das das Verfahren 200 ausführt, Zwischenschätzungen der Schnittmenge basierend auf paarweisen Punktprodukten des Zählvektors bestimmen, die unter Verwendung derselben Hash-Funktion erzeugt werden, während Schritt 214 ausgeführt wird. So kann beispielsweise das erste Datenverarbeitungssystem 102 einen ersten Zwischenvektor r1 basierend auf dem Punktprodukt von V1xk und V1yk, r2 basierend auf dem Punktprodukt von V2xk und V2yk usw. erzeugen, wie in 7 gezeigt. Das Datenverarbeitungssystem kann eine Schätzung der Schnittmenge basierend auf dem Durchschnitt der Zwischenschätzungen der Schnittpunkte erzeugen, indem alle Zwischenschätzungen summiert werden und die Summe durch p dividiert wird, wobei p die Anzahl der in den Schritten 204 und 206 des Verfahrens 200 übertragenen Hash-Funktionen ist. Durch Subtrahieren der Schätzung des Schnittwerts von der Summe der Schätzungen der Gesamtzahl der Benutzerkennungen in jedem Vektor kann das Verfahren 200 die Anzahl eindeutiger Benutzerinteraktionen mit dem Satz von Inhaltselementen über beide Inhaltsbereitstellungsplattform en hinweg schätzen.
  • In einigen Ausführungsformen kann das Datenverarbeitungssystem, das das Verfahren 200 ausführt, einen Wert nx/k von jedem Koordinatenwert der Vektoren V1xk, V2xk, ..., Vpxk, 902 und ein Wert ny/k von jedem Koordinatenwert der zweiten Vektoren V1yk, V2yk, ..., Vpyk, 904, wobei nx und ny die Anzahl von Benutzerkennungen in dem ersten Satz von Benutzerkennungen 302 bzw. dem zweiten Satz von Benutzerkennungen 304 darstellen. Die Anzahl der Benutzerkennungen im ersten und zweiten Satz von Benutzerkennungen wird in den Schritten 210 bzw. 212 geschätzt. Das erste Datenverarbeitungssystem kann diese Werte subtrahieren, bevor das Punktprodukt der Vektoren ausgeführt wird. In einigen Ausführungsformen können die Werte nx und ny von dem Datenverarbeitungssystem empfangen werden, das das Verfahren 200 ausführt, wenn der erste und der zweite Vektor in den Schritten 206 bzw. 208 empfangen werden.
  • In einer nicht einschränkenden beispielhaften Ausführungsform kann der Code zum Implementieren von Teilen des Verfahrens 200 wie folgt aussehen:
       def ComputeVoclntersetion(voc1, voc2, n1, n2, k):

        """
        Args:
          voc1, voc2: Vectors of counts for sets 1 and 2
          n1, n2: Cardinalities of sets 1 and 2
          k: Size of the vectors of counts
        Returns:
          The cardinality of the intersection of the two sets.
        """
        assert len(voc1) == len(voc2) == k
        return sum((voc[i]-n1/k)*(voc2[i]-n2/k) for i in range(k))
  • 3 zeigt eine schematische Darstellung von zwei Sätzen von Benutzerkennungen und deren Schnittmenge. Insbesondere zeigt 3 einen ersten Satz von Benutzerkennungen 302 und einen zweiten Satz von Benutzerkennungen 304. Der erste Satz von Benutzerkennungen 302 und der zweite Satz von Benutzerkennungen 304 können durch das zweite Datenverarbeitungssystem 104 bzw. das dritte Datenverarbeitungssystem 106 erzeugt werden. Der erste Satz von Benutzerkennungen 302 enthält einen Satz von n Benutzerkennungen x1, x2, x3, ..., xn, während der zweite Satz von Benutzerkennungen 304 einen Satz von n Benutzerkennungen y1, y2, y3, ..., yn. Während 3 den ersten und den zweiten Satz von Benutzerkennungen 302 und 304 mit der gleichen Anzahl n von Benutzerkennungen zeigt, es versteht sich, dass der erste Satz von Benutzerkennungen 302 eine andere Anzahl von Benutzerkennungen aufweisen kann als der zweite Satz von Benutzerkennungen 304. Der erste Satz von Benutzerkennungen 302 kann eine Liste von Benutzerkennungen enthalten, die Benutzern oder Benutzergeräten 108, die mit einem bestimmten Inhaltselement oder einer bestimmten Inhaltselementkampagne interagiert haben, zugeordnet sind, und kann von dem zweiten Datenverarbeitungssystem 104 gesammelt worden sein. Das erste Datenverarbeitungssystem 104 kann den ersten Satz von Benutzerkennungen 302 im Speicher in einer Datenstruktur wie einem eindimensionalen oder mehrdimensionalen Array speichern. Der zweite Satz von Benutzerkennungen 304 kann beispielsweise vom dritten Datenverarbeitungssystem 106 auf ähnliche Weise verwaltet werden. Ein Herausgeber, wie beispielsweise das erste Datenverarbeitungssystem 102, möchte den eindeutigen Satz von Benutzerkennungen aus dem ersten und dem zweiten Satz von Benutzerkennungen 302 und 304 bestimmen.
  • In einigen Implementierungen könnten das zweite und das dritte Datenverarbeitungssystem 104 und 106 den ersten und den zweiten Satz von Benutzerkennungen 302 bzw. 304 an das erste Datenverarbeitungssystem 102 zur Bestimmung eines eindeutigen und nicht duplizierten Satzes von Benutzerkennungen. Das bloße Übertragen des ersten und des zweiten Satzes von Benutzerkennungen 302 und 304 kann jedoch die Identitäten der Benutzer dem ersten Datenverarbeitungssystem aussetzen, wodurch die Privatsphäre der Benutzer, die den Benutzerkennungen zugeordnet sind, beeinträchtigt wird. Beispielsweise kann der gesamte Verlauf der Interaktion von Inhaltselementen eines oder mehrerer Benutzer dem ersten Datenverarbeitungssystem 102 ausgesetzt sein. In einigen Implementierungen können kryptografische Techniken, wie z.B. PSI (Private Set Intersection), verwendet werden, um es einem Dritten zu ermöglichen, das erste Datenverarbeitungssystem 102, um einen Schnittpunkt des ersten und des zweiten Satzes von Benutzerkennungen 302 und 304 zu bestimmen, während die Privatsphäre gewahrt bleibt. PSI-Implementierungen sind jedoch mit einem erheblichen Kommunikationsaufwand zwischen den Datencomputersystemen verbunden, wodurch die Rechenzeit erhöht wird. In einigen Implementierungen können Kardinalitäts-Schätzer wie das oben erwähnte Hyperloglog verwendet werden, um die Vereinigung des ersten und des zweiten Satzes von Benutzerkennungen 302 und 304 zu bestimmen, wobei die Vereinigung verwendet werden kann, um den Schnittpunkt der beiden Sätze zu bestimmen. Hyperloglog ist jedoch nicht datenschutzsicher.
  • 4A zeigt ein Flussdiagramm des Verfahrens 400, das eine beispielhafte Ausführungsform eines Verfahrens zum Erzeugen eines Vektors, der Benutzerinteraktionen mit einem Satz von Inhaltselementen darstellt, zeigt. Das Verfahren 400 kann beispielsweise von dem zweiten Datenverarbeitungssystem 104 oder dem dritten Datenverarbeitungssystem 106 ausgeführt werden. Das Verfahren 400 kann zum Beispiel ausgeführt werden, um einen Benutzervektor 420 zu erzeugen, wie in 4B für jeden Gegenstand eines Satzes, gezeigt. Zum Beispiel könnte der Satz von Benutzerkennungen 302 oder der Satz von Benutzerkennungen 304 festgelegt sein, wie in 3 gezeigt. Das Verfahren 400 umfasst das Empfangen von Daten zum Identifizieren eines Satzes von Hash-Funktionen 401. Dieser Schritt kann beispielsweise von dem zweiten Datenverarbeitungssystem 104 oder dem dritten Datenverarbeitungssystem 106, das die Daten empfangen kann, ausgeführt werden, um den Satz von Hash-Funktionen vom ersten Datenverarbeitungssystem 102 über das Netzwerk 110 zu identifizieren. Das Verfahren 300 umfasst das Abrufen mehrerer Benutzerkennungen 402. In einigen Implementierungen kann die Vielzahl von Benutzerkennungen vom lokalen Speicher zum zweiten Datenverarbeitungssystem 104 oder vom lokalen Speicher zum dritten Datenverarbeitungssystem 106 abgerufen werden. In einigen Implementierungen können mehrere Benutzerkennungen über das Netzwerk 110 von einem entfernten Speicher abgerufen werden. In einigen Implementierungen können mehrere Benutzerkennungen aus einer Datenbank oder einem Datencenter abgerufen werden.
  • Das Verfahren 400 umfasst das Auswählen der i-ten Benutzerkennung 404. Dieser Schritt kann beispielsweise von dem zweiten Datenverarbeitungssystem 104 oder dem dritten Datenverarbeitungssystem 106 ausgeführt werden, um den in Schritt 402 abgerufenen Satz von Benutzerkennungen zu verarbeiten. 4B zeigt eine schematische Darstellung der Verarbeitung eines Teils des Verfahrens 400. Insbesondere ist 4B zeigt die Auswahl der ersten Benutzerkennung x1 (i, i = 1). Während 4B zeigt die Auswahl der ersten Benutzerkennung in dem ersten Satz von Benutzerkennungen 302, versteht sich, dass die Benutzerkennungen in beliebiger Reihenfolge ausgewählt werden können.
  • Das Verfahren 400 umfasst das Erzeugen von k Hashes der ausgewählten Benutzerkennung 406. Das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 können k Hashes h1(x1), h2(x1), h3(x1), ..., hk(x1) der ausgewählten Benutzerkennung x1, wie in 4B gezeigt. In einigen Ausführungsformen können das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 k unabhängige Hash-Funktionen verwenden, um k Hashes der ersten Benutzerkennung x1 zu erzeugen. In einigen Ausführungsformen entsprechen die k unabhängigen Hash-Funktionen den Daten, um einen Satz von Hash-Funktionen in Schritt 401 zu identifizieren. In einigen Ausführungsformen können das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 k/b-Hash-Funktionen verwenden, wobei b eine Anzahl von Bits in dem Hash-Digest ist.
  • In einigen Ausführungsformen kann jedem der ausgewählten Benutzerkennungen ein Salt hinzugefügt werden, um die Privatsphäre des Benutzers zu verbessern. Der Salt kann eine zufällig erzeugte Folge von Bits sein, die verkettet oder irgendwie mit der Datenstruktur kombiniert werden können, die die ausgewählte Benutzerkennung enthält. In einigen Ausführungsformen kann der Salt vorbestimmt werden. In solchen Ausführungsformen kann der Salt durch eine Entität, die über das Netzwerk 110 mit dem System 100 verbunden ist, vorbestimmt werden. In einigen Ausführungsformen wird jede durch das Verfahren 400 ausgewählte Benutzerkennung mit demselben Salt verkettet. In einigen Ausführungsformen wird jede durch das Verfahren 400 ausgewählte Benutzerkennung mit einem anderen Salt verkettet. In einigen Ausführungsformen können die Datenverarbeitungssysteme, die das Verfahren 400 ausführen, beispielsweise 104 oder 106, jede Benutzerkennung mit demselben Satz verketten. In einigen Ausführungsformen können die zwei Datenverarbeitungssysteme, die das Verfahren 400 ausführen, unterschiedliche Sätze verwenden.
  • In einigen Ausführungsformen wird der Salt von dem Datenverarbeitungssystem, das das Verfahren 400 von einem Drittanbieter ausführt, empfangen. In einigen Ausführungsformen wird der Salt vor dem Verketten des Satzes mit jeder Benutzerkennung unter Verwendung einer vorbestimmten Hash-Funktion gehasht. In solchen Ausführungsformen kann die vorbestimmte Hash-Funktion von dem Dritten der der Salt bereitstellt, bestimmt werden. In einigen Ausführungsformen kann der Dritte, der der Salt bereitstellt, ein neuer Salt basierend auf einem festgelegten Zeitraum bereitstellen. Beispielsweise kann der Salt-Anbieter eines Drittanbieters nach einer Stunde, zwei Stunden, einem Tag, zwei Tagen, einer Woche, zwei Wochen, einem Monat, zwei Monaten oder einem Jahr einen neuen Salt bereitstellen. In einigen Ausführungsformen kann der Salt-Anbieter eines Drittanbieters der Salt mit einem öffentlichen Schlüssel signieren, der zu dem Datenverarbeitungssystem gehört, das das Verfahren 400 ausführt.
  • Das Verfahren 400 umfasst das Erzeugen eines ersten k-Längenvektors, wobei Koordinatenwerte des ersten k-Längenvektors gleich einem Bit-Wert des entsprechenden k-ten Hash 408 sind. Wie in 4B gezeigt, kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 einen ersten k-Längenvektor 420 erzeugen, wobei der Wert jeder Koordinate des k-Längenvektors 420 gleich einem Bit-Wert der k Hashes 418 ist. In einigen Ausführungsformen, wie der in 4B gezeigten, kann der Wert eines k-ten Bits des k-Längenvektors 420 gleich dem Bit-Wert des niedrigstwertigen Bits des entsprechenden k-ten Hash der k-Hashes 418 sein. In einigen Ausführungsformen kann anstelle des niedrigstwertigen Bits jede andere Bitposition verwendet werden. In einigen Ausführungsformen können mindestens zwei Bits des k-Längenvektors 418 zwei verschiedenen Bitpositionen ihres jeweiligen Hash entsprechen. Beispielsweise kann der Bit-Wert eines Bits im k-Längenvektor gleich einem niedrigstwertigen Bit des entsprechenden k-ten Hash sein, während der Bit-Wert eines anderen Bits im k-Längenvektor gleich dem höchstwertigen Bit des entsprechenden k-ten Hash sein kann. Die Bitposition eines k-ten Hashs, der zugewiesen ist, um den Bit-Wert für das k-te Bit des k-Längenvektors bereitzustellen, kann vorbestimmt werden. In einigen Ausführungsformen kann die Bitposition eines k-ten Hashs, der zugewiesen ist, um den Bit-Wert für das k-te Bit des k-Längenvektors bereitzustellen, mit den Daten empfangen werden, um einen Satz von Hash-Funktionen in Schritt 401 zu identifizieren. Unabhängig von der Methodik, die zum Auswählen der Bit-Werte für den k-Längenvektor aus den k Hashes verwendet wird, kann sichergestellt werden, dass die Erzeugung des k-Längenvektors aus dem zweiten Satz von Benutzerkennungen 304 der gleichen Methodik folgt. In einigen Ausführungsformen kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 weniger als k Hashes verwenden, um den k-Längenvektor 402 zu erzeugen. Beispielsweise können das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 die Positionen 1, 2, ..., b im k-Längenvektor basierend auf den Bits 1, 2, ..., b des Hash h1(x1), Positionen b + 1, b + 2, ..., 2*b basierend auf den Bits 1, 2, ..., b von h2(x1) usw. (vorausgesetzt, das LSB befindet sich an Bitposition 1). Im Allgemeinen kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 Bitpositionen (i-1)*b + 1 bis i*b eines k-Längenvektors einer ersten Benutzerkennung x1 basierend auf b Bits des setzen Hash hi(x1). In Fällen, in denen k nicht durch b teilbar ist, kann k/b aufgerundet und alle verbleibenden Bits verworfen werden.
  • Das Verfahren 400 umfasst das Erzeugen von k-Längenvektoren, die allen Benutzerkennungen in der Vielzahl von in Schritt 402 abgerufenen Benutzerkennungen entsprechen. Beispielsweise kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 bestimmen, ob der aktuell erzeugte k-Längenvektor der n-te k-längengenerierte Vektor 410 ist. Wenn nein, kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 den Zähler i 312 inkrementieren und die nächste Benutzerkennung aus der Vielzahl von in Schritt 402 abgerufenen Benutzerkennungen auswählen und einen k-Längenvektor wie oben erörtert erzeugen. Auf diese Weise kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 n k-Längenvektoren erzeugen, wobei jeder der n k-Längenvektoren einer Benutzerkennung in der Vielzahl von in Schritt 402 abgerufenen Benutzerkennungen entspricht.
  • Das Verfahren 400 umfasst das Summieren der n k-Längenvektoren, um einen Interaktionsvektor 414 zu erzeugen. Dies kann als Binomialvektormethode bezeichnet werden. Die zweite Datenverarbeitung 104 und das dritte Datenverarbeitungssystem 106 können die n k-Längenvektoren, die den n Benutzerkennungen in der Vielzahl von in Schritt 402 abgerufenen Benutzerkennungen entsprechen, summieren. Das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 können eine numerische Addition der „0“ und „1“ an einer Bitposition der n k-Längenvektoren V1k bis Vnk durchführen, um eine k-Länge erste Zxk zu erzeugen. In einem nicht einschränkenden Beispiel, wenn es Vektoren mit 10 k-Länge gab, bei denen sechs der Vektoren mit k-Länge eine „1“ in der ersten Bitposition hatten und die verbleibenden vier der Vektoren mit k Länge eine „0“ in der ersten Bitposition, der erste Vektor Zxk mit k-Länge kann an der ersten Position einen Wert 6 haben. Typischerweise wäre für eine große Anzahl von Vektoren mit k-Länge (d.h. für große Werte von n) der Wert an jeder k-ten Position des ersten Vektors Zxk ungefähr gleich n/2, wie in 6 gezeigt.
  • Das Verfahren 400 umfasst das Übertragen des Interaktionsvektors über ein Netzwerk 416. In einigen Ausführungsformen überträgt das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 den in Schritt 414 erzeugten Interaktionsvektor an das erste Datenverarbeitungssystem 102. In einigen Ausführungsformen umfasst das Übertragen des Interaktionsvektors das Übertragen des Vektors über einen verschlüsselten Kommunikationskanal, beispielsweise HTTPS. In einigen Ausführungsformen wird vor dem Übertragen des Interaktionsvektors n/2 von jeder Koordinate im Interaktionsvektor subtrahiert. In einigen Ausführungsformen wird die Anzahl der Benutzerinteraktionen n zusammen mit dem Interaktionsvektor übertragen. In einigen Ausführungsformen umfasst das Übertragen des Interaktionsvektors das Übertragen einer Vielzahl von Vektoren von Zählungen. In solchen Ausführungsformen wird vor dem Übertragen der Vielzahl von Vektoren von Zählungen n/2 von jeder Koordinate in jeder der mehreren der Vektoren von Zählungen subtrahiert.
  • 5A zeigt ein Flussdiagramm des Verfahrens 500, das eine beispielhafte Ausführungsform eines Verfahrens zum Erzeugen eines Vektors darstellt, der Benutzerinteraktionen mit einem Satz von Inhaltselementen darstellt. Das Vektor-Zählverfahren 500 kann beispielsweise von dem zweiten Datenverarbeitungssystem 104 oder dem dritten Datenverarbeitungssystem 106 ausgeführt werden. Das Verfahren 500 kann beispielsweise ausgeführt werden, um einen Benutzervektor 520 für jeden Gegenstand eines Satzes zu erzeugen, wie in 5B gezeigt. Zum Beispiel könnte der Satz von Benutzerkennungen 302 oder der Satz von Benutzerkennungen 304 eingestellt sein, wie in 3 gezeigt. In einigen Ausführungsformen kann das Empfangen von Daten zum Identifizieren eines Satzes von Hash-Funktionen das Empfangen eines Satzes von Hash-Funktionen umfassen, die eine einzelne Hash-Funktion enthalten. In einigen Ausführungsformen können die Daten zum Identifizieren eines Satzes von Hash-Funktionen eine Binärdatei sein, die ausführbare Computeranweisungen, die einen Hash basierend auf einem Eingabewert erzeugen, enthält. Das Verfahren 500 umfasst das Abrufen mehrerer Benutzerkennungen 502. In einigen Implementierungen kann die Vielzahl von Benutzerkennungen vom lokalen Speicher zum zweiten Datenverarbeitungssystem 104 oder vom lokalen Speicher zum dritten Datenverarbeitungssystem 106 abgerufen werden. In einigen Implementierungen kann die Vielzahl von Benutzerkennungen über das Netzwerk 110 von einem entfernten Speicher abgerufen werden. In einigen Implementierungen können mehrere Benutzerkennungen aus einer Datenbank oder einem Datencenter abgerufen werden.
  • Das Verfahren 500 umfasst das Auswählen der i-ten Benutzerkennung 504. Dieser Schritt kann beispielsweise von dem zweiten Datenverarbeitungssystem 104 oder dem dritten Datenverarbeitungssystem 106 ausgeführt werden, um den ersten Satz von Benutzerkennungen 302 oder den zweiten Satz von Benutzerkennungen 304 zu verarbeiten. 5B zeigt eine schematische Darstellung der Verarbeitung eines Teils des Verfahrens 500. Insbesondere zeigt 5B eine Auswahl der ersten Benutzerkennung x1 (i, i = 1) durch das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106. Während 5B die Auswahl der ersten Kennung in dem ersten Satz von Benutzerkennungen 302 zeigt, es versteht sich, dass die Benutzerkennungen in beliebiger Reihenfolge ausgewählt werden können und die Benutzerkennungen dieselben Benutzerkennungen sind, die in Schritt 502 abgerufen wurden.
  • Das Verfahren 500 umfasst das Erzeugen eines Hash der ausgewählten Benutzerkennung 506. Das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 können einen Hash unter Verwendung einer Hash-Funktion erzeugen. In einigen Ausführungsformen basiert die Hash-Funktion auf den Daten, die einen Satz von Hash-Funktionen in Schritt 501 identifizieren. In einigen Ausführungsformen kann das Verfahren, wenn es mehr als eine Hash-Funktion in dem Satz von Hash-Funktionen gibt, die in Schritt 501 empfangen wurden, eine der Hash-Funktionen in dem Satz von Hash-Funktionen auswählen, um die Hash-Berechnung durchzuführen. In einem nicht einschränkenden Beispiel kann das Verfahren die erste Hash-Funktion in dem Satz von Hash-Funktionen auswählen. Zum Beispiel, wie in 5B erzeugt das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 einen Hash h(x1) basierend auf der Hash-Funktion h(). In einigen Ausführungsformen können das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 bekannte Hash-Funktionen wie SHA (1, 2 oder 3), MD5 usw. verwenden.
  • In einigen Ausführungsformen kann jedem der ausgewählten Benutzerkennungen ein Salz hinzugefügt werden, um die Privatsphäre des Benutzers zu verbessern. In einigen Ausführungsformen ist der Salt eine zufällig erzeugte Folge von Bits, die mit der Datenstruktur, die die ausgewählte Benutzerkennung enthält, verkettet sind. In einigen Ausführungsformen kann der Salt vorbestimmt werden. In einigen Ausführungsformen kann der Salt von einem Dritten, der über das Netzwerk 110 mit dem System 100 verbunden ist, vorbestimmt werden. In einigen Ausführungsformen wird jede durch das Verfahren 500 ausgewählte Benutzerkennung mit demselben Salt verkettet. In einigen Ausführungsformen wird jede durch das Verfahren 500 ausgewählte Benutzerkennung mit einem anderen Salt verkettet. In einigen Ausführungsformen können die Datenverarbeitungssysteme, die das Verfahren 500 ausführen, beispielsweise 104 oder 106, jede Benutzerkennung mit demselben Salt verketten. In einigen Ausführungsformen können die zwei Datenverarbeitungssysteme, die das Verfahren 400 ausführen, unterschiedliche Sätze verwenden.
  • In einigen Ausführungsformen wird der Salt von dem Datenverarbeitungssystem, das das Verfahren 500 von einem Drittanbieter ausführt, empfangen. In einigen Ausführungsformen wird der Salt vor dem Verketten des Satzes mit jeder Benutzerkennung unter Verwendung einer vorbestimmten Hash-Funktion gehasht. In solchen Ausführungsformen kann die vorbestimmte Hash-Funktion von dem Dritten, der der Salt bereitstellt, bestimmt werden. In einigen Ausführungsformen kann der Dritte, der der Salt bereitstellt, ein neuer Salt basierend auf einem festgelegten Zeitraum bereitstellen. Beispielsweise kann der Salt-Anbieter eines Drittanbieters nach einer Stunde, zwei Stunden, einem Tag, zwei Tagen, einer Woche, zwei Wochen, einem Monat, zwei Monaten oder einem Jahr einen neuen Salt bereitstellen. In einigen Ausführungsformen kann der Salt-Anbieter eines Drittanbieters den Salt mit einem öffentlichen Schlüssel signieren, der zu dem Datenverarbeitungssystem, das das Verfahren 500 ausführt, gehört.
  • Das Verfahren 500 umfasst das Inkrementieren der Anzahl eines Registers, das m-Bits des Hashwerts 508 entspricht. Das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 können einen Satz von Bits des Hashwerts auswählen, um das geeignete zu inkrementierende Register zu bestimmen. Zum Beispiel, wie in 5B gezeigt, kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 die ersten 3 Bits der Hashwerte auswählen, um das Register zu bestimmen. Obwohl in einigen anderen Ausführungsformen das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 einen beliebigen anderen Satz von Bits des Hashwerts auswählen können, um den Registerwert zu bestimmen. Da die ersten drei Bits des Hash der ersten Benutzerkennung x1 „010“ ist, kann das Datenverarbeitungssystem, das das Verfahren ausführt, das zweite Register in dem Satz von Registern 520 inkrementieren. Die Gesamtzahl der Register k in dem Satz von Registern 520 kann gleich 2^m sein, wobei m die Anzahl von Bits des Hashwerts darstellt, den das Datenverarbeitungssystem, das das Verfahren ausführt, zur Auswahl des Registers verwendet. In einigen Ausführungsformen kann die Anzahl der Register k unabhängig von der Anzahl der Bits m des Hashwerts, den das Datenverarbeitungssystem, das das Verfahren ausführt, zur Auswahl des Registers verwendet, sein. Beispielsweise kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 einen bestimmten Wert k auswählen und die m Bits entsprechend den k-Registern abbilden. Der Satz von Registern 520 kann Koordinaten eines Interaktionsvektors Vxk darstellen.
  • Das Verfahren 500 umfasst das Erzeugen von Hashes und das Inkrementieren von Zählungen oder Registern für alle Benutzerkennungen in dem ersten Satz von Benutzerkennungen. Dies wird als Vektor der Zählmethode bezeichnet. Beispielsweise kann das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 bestimmen, ob der aktuell erzeugte Hashwert für die n-te Benutzerkennung 510 ist. Wenn nein, kann das Datenverarbeitungssystem, das das Verfahren ausführt, einen Zähler i 512 inkrementieren und die nächste Benutzerkennung aus der Vielzahl von in Schritt 502 abgerufenen Benutzerkennungen auswählen. Zum Beispiel kann, unter Bezugnahme auf 5B, das Datenverarbeitungssystem, welches das Verfahren ausführt, das dritte Register basierend auf den ersten drei Bits des Hashwerts für die dritte Benutzerkennung x3 inkrementieren und das sechste Register basierend auf den ersten drei Bits des Hashwerts der zweiten Benutzerkennung x2 inkrementieren. Auf diese Weise kann das Datenverarbeitungssystem, das das Verfahren ausführt, die Anzahl in jedem Register des Registersatzes 520 erhöhen. Das Datenverarbeitungssystem, das das Verfahren ausführt, kann den Satz von Registern 520 in einer Datenstruktur im Speicher speichern. Beispielsweise kann die Datenstruktur ein eindimensionales Array oder ein mehrdimensionales Array sein. In einigen Ausführungsformen kann der Satz von Registern 520 als ein Vektor gespeichert werden, der Benutzerinteraktionen darstellt. In einigen Ausführungsformen kann die Datenstruktur, die den Satz von Registern 520 enthält, in eine Vektordarstellung geändert werden, wobei jede Koordinate des Vektors gleich einem der Sätze von Registern 520 ist.
  • In einigen Ausführungsformen kann das Verfahren 500 einem oder mehreren der Register im Registersatz 520 Rauschen hinzufügen. In einigen Ausführungsformen kann das Verfahren 500 einer oder mehreren Koordinaten der Vektordarstellung basierend auf dem Registersatz 520 Rauschen hinzufügen. In diesen Ausführungsformen kann das Verfahren 500 einem oder mehreren der Register im Registersatz 520 Laplace-Rauschen hinzufügen. In einigen Ausführungsformen kann das Verfahren 500 allen Registern im Registersatz 520 Laplace-Rauschen hinzufügen. In einigen Ausführungsformen kann das Verfahren 500 dem Interaktionsvektor basierend auf dem Satz von Registern 520 einen Vektor von Laplace-Rauschen hinzufügen. In diesen Ausführungsformen kann der Vektor des Laplace-Rauschens die gleiche Kardinalität wie der Interaktionsvektor haben, der auf dem Satz von Registern 520 basiert. In bestimmten Ausführungsformen kann das Verfahren 500 den erwarteten Wert jedes der Register vom Inhalt jedes Registers subtrahieren. In solchen Ausführungsformen könnte der erwartete Wert jedes Registers gleich der Gesamtzahl des Registersatzes 520 geteilt durch die Anzahl der Register im Registersatz 520, die in 5B als k bezeichnet sind, sein.
  • In einer nicht einschränkenden beispielhaften Ausführungsform kann der Code zum Implementieren von Teilen des Verfahrens 500 wie folgt aussehen:
  •        def ComputeVectorOfCounts(k, b, user_set):
    
            """
            Args:
              k: Size of the vector to be returned.
              b: Scale factor of the Laplacian noise.
              user_set: Deduplicated set of user IDs. 
    
    
    
            Returns:
              The vector of counts of size k for the given user
              set, with Laplacian noise of scale b added.
            """
            hashed_user_set = get_hashed_user_set(user_set)
            user_buckets = [get_last_k_digits(id, k) for id in hashed_user_set]
            voc = []
            for i in range(k):
              voc.append(user_buckets.count(i) + generate_laplace_noise(b))
            return voc
  • In einigen Ausführungsformen kann das Verfahren 500 einen Hybridansatz verwenden, um mehrere Interaktionsvektoren zu erzeugen. Insbesondere kann bei dem Hybridansatz das Datenverarbeitungssystem, das das Verfahren 500 ausführt, einen Zählvektor unter Verwendung nicht nur einer Hash-Funktion wie beim Vektor-Zähl-Ansatz erzeugen, sondern p-Zählvektoren unter Verwendung von p-Hash-Funktionen erzeugen. In einigen Ausführungsformen werden die mehreren Hash-Funktionen durch die in Schritt 501 empfangenen Daten identifiziert. 9 zeigt p Vektoren der Zählungen V1xk, V2xk, . .., Vpxk, 902, erzeugt durch das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106, das einen in Schritt 502 abgerufenen Satz von Benutzerkennungen ausführt, beispielsweise den ersten Satz von Benutzerkennungen 302 oder den zweiten Satz von Benutzerkennungen 304. Jeder Vektor der Zählung Vpxk kann basierend auf einer unabhängigen Hash-Funktion erzeugt werden. Somit kann der erste Vektor der Zählung V1xk unter Verwendung einer ersten Hash-Funktion erzeugt werden, und der zweite Vektor der Zählung V2xk kann unter Verwendung einer zweiten unabhängigen Hash-Funktion erzeugt werden, und so weiter. Somit erzeugt das Datenverarbeitungssystem, das das Verfahren 500 ausführt, Hashes aller Benutzeridentitäten in dem Satz von Benutzeridentitäten, die in Schritt 502 abgerufen wurden, unter Verwendung einer ersten Hash-Funktion, um den Vektor der Zählungen V1xk auf eine Weise zu erzeugen, die in ähnlicher Weise wie oben in Bezug auf die 5A und 5B diskutiert ist.
  • Das Verfahren 500 umfasst das Erzeugen eines k-Längen-Interaktionsvektors basierend auf den Registerwerten 514. Wie oben erwähnt, kann der Wert der Zählungen der Register 520 die Koordinaten eines k-Längenvektors Vxk darstellen. Das Verfahren 500 umfasst das Übertragen des Interaktionsvektors über ein Netzwerk 516. In einigen Ausführungsformen überträgt das zweite Datenverarbeitungssystem 104 oder das dritte Datenverarbeitungssystem 106 den in Schritt 514 erzeugten Interaktionsvektor an das erste Datenverarbeitungssystem 102. In einigen Ausführungsformen umfasst das Übertragen des Interaktionsvektors das Übertragen des Vektors über einen verschlüsselten Kommunikationskanal, beispielsweise HTTPS. In einigen Ausführungsformen wird die Anzahl der Benutzerinteraktionen n zusammen mit dem Interaktionsvektor übertragen. In einigen Ausführungsformen umfasst das Übertragen des Interaktionsvektors das Übertragen einer Vielzahl von Vektoren von Zählungen. In einigen Ausführungsformen wird vor dem Übertragen des Interaktionsvektors n/k von jeder Koordinate im Interaktionsvektor subtrahiert.
  • 6 zeigt eine schematische Darstellung eines Binomialvektor-Zählansatzes zum Erzeugen eines Interaktionsvektors aus k Hash-Funktionen und n Benutzerkennungen. In einigen Ausführungsformen kann der in dem Schema umrissene Prozess von einem Datenverarbeitungssystem, das das Verfahren 400 ausführt, ausgeführt werden. Jeder der Vektoren 602, die Hash-Benutzerinteraktionsinformationen darstellen, kann eine Kardinalität k, die k Hash-Funktionen darstellt, aufweisen. Jeder der Vektoren 602 kann eine einzelne Benutzerkennung in dem Satz von Benutzerkennungen darstellen. Die Vektoren 602 können beispielsweise in Verfahren 400 summiert werden, um einen Interaktionsvektor 604 mit der Kardinalität k zu erzeugen. In einigen Ausführungsformen kann jede Koordinate des Interaktionsvektors 604 ungefähr gleich n/2 sein, wobei n die Anzahl von Benutzerkennungen ist.
  • 7 zeigt ein Schema eines Hybridansatzes zum Bestimmen einer Schätzung eines Schnittpunkts zweier Sätze von Benutzerkennungen, der in einigen Ausführungsformen von einem Datenverarbeitungssystem ausgeführt wird, das Schritt 214 des Verfahrens 200 ausführt. Der Hybridansatz kombiniert die Merkmale des Binomialvektoransatzes und des oben diskutierten Vektorzählungsansatzes. Insbesondere kann bei dem Hybridansatz das Datenverarbeitungssystem, das das Verfahren 200 ausführt, einen Zählvektor unter Verwendung nicht nur einer Hash-Funktion wie beim Vektor-Zähl-Ansatz erzeugen, sondern p-Zählvektoren unter Verwendung von p-Hash-Funktionen erzeugen.
  • In einigen Ausführungsformen kann das System 100 zusätzliche Techniken anwenden, um die Privatsphäre der oben diskutierten Ansätze zu verbessern. Beispielsweise können in einigen Ausführungsformen das zweite Datenverarbeitungssystem 104 und das dritte Datenverarbeitungssystem 106 den Zählwerten Rauschen hinzufügen, wenn ein Vektor von Zählwerten, die oben in Bezug auf die 5-7 diskutiert wurden, erzeugt wird. Das Hinzufügen von Rauschen zum Zählvektor kann das Hinzufügen von Zufallszahlen zu jedem Element der Zählvektoren umfassen. Das zweite Datenverarbeitungssystem 104 und das dritte Datenverarbeitungssystem 106 können jeweils Rauschen zu ihren jeweiligen Zählvektoren hinzufügen, bevor die Zählvektoren an das erste Datenverarbeitungssystem 102, das eine Schätzung des Schnittpunkts bestimmt, gesendet werden. In einigen Ausführungsformen können das zweite Datenverarbeitungssystem 104 und das dritte Datenverarbeitungssystem 106 verschiedene Arten von Rauschen, wie beispielsweise Gausssches Rauschen, geometrisches Rauschen usw., zu dem durch den Binomialvektoransatz erzeugten Vektor hinzufügen. In einigen Ausführungsformen können das zweite Datenverarbeitungssystem 104 und das dritte Datenverarbeitungssystem 106 beispielsweise Laplace-Rauschen zu den Vektoren hinzufügen, die durch den Vektor-of-Count-Ansatz erzeugt werden. Das Hinzufügen von Rauschen zu den Vektoren, unabhängig davon, ob sie durch den Binomialvektor oder den Vektor der Zählung erzeugt werden, kann die unterschiedliche Privatsphäre der Benutzerkennungen verbessern. Die unterschiedliche Privatsphäre des Binomialvektoransatzes und des oben diskutierten Vektorzählungsansatzes kann erreicht werden, während weniger Genauigkeit als bei zuvor existierenden differentiell privaten Kardinalitäts-Schätzern geopfert wird.
  • In einem weiteren Ansatz können die Benutzerkennungen verschlüsselt oder gehasht werden, bevor die oben in Bezug auf die 3-4B diskutierten Vektoren erzeugt werden. Beispielsweise können das zweite Datenverarbeitungssystem 104 und das dritte Datenverarbeitungssystem 106 einen Hash jeder der Benutzeridentitäten in dem ersten Satz von Benutzeridentitäten 302 und dem zweiten Satz von Benutzeridentitäten 304 verschlüsseln oder berechnen. Das zweite Datenverarbeitungssystem 104 und das dritte Datenverarbeitungssystem 106 können dann die Vektoren (die Binomialvektoren oder die Vektoren der Zählungen) basierend auf dem verschlüsselten Satz von Benutzeridentitäten erzeugen. Das Verschlüsseln der Benutzerkennungen vor dem Generieren der Vektoren kann die Privatsphäre der Benutzeridentitäten verbessern. In einigen Fällen, in denen Vektoren aus denselben Benutzeridentitäten gebildet werden, kann der Schnittpunkt der Vektoren noch einige Informationen enthalten, die sich auf die Benutzeridentitäten beziehen. Durch Verschlüsseln oder Hashing der Benutzeridentitäten vor dem Erzeugen der Vektoren kann das Risiko eines Informationsverlusts verringert werden.
  • In einigen Ausführungsformen können die Zählungen in einem Zählvektor permutiert werden, bevor die Vektoren an das erste Datenverarbeitungssystem 102 übertragen werden. Beispielsweise kann das zweite Datenverarbeitungssystem 104 die Zählwerte in den Vektoren Vxk oder V1xk permutieren oder neu anordnen, bevor die Vektoren an das erste Datenverarbeitungssystem 102 übertragen werden. Das dritte Datenverarbeitungssystem 106 kann in ähnlicher Weise auch seine jeweiligen Zählvektoren permutieren, bevor die Vektoren an das erste Datenverarbeitungssystem gesendet werden. Sowohl das erste als auch das zweite Datenverarbeitungssystem 104 und 106 können sich auf ein Permutationsschema einigen und die Permutation geheim halten. In einigen Ausführungsformen kann das erste Datenverarbeitungssystem 102 das gewünschte Permutationsschema auswählen und an das zweite und das dritte Datenverarbeitungssystem 104 und 106 übertragen, so dass beide Systeme übereinstimmende Permutationsschemata verwenden. Das Zulassen der Vektoren in den Vektoren der Zählungen kann die Privatsphäre der Benutzeridentitäten in Fällen, in denen Vektoren aus denselben Benutzeridentitäten gebildet werden, verbessern und der Schnittpunkt der Vektoren kann noch einige Informationen, die sich auf die Benutzeridentitäten beziehen, enthalten.
  • 8 zeigt die allgemeine Architektur eines veranschaulichenden Computersystems 800, das verwendet werden kann, um eines der hier diskutierten Computersysteme zu implementieren (einschließlich des Systems 100 und seiner Komponenten wie des ersten Datenverarbeitungssystems 102, des zweiten Datenverarbeitungssystems 104, des dritten Datenverarbeitungssystem 106 und die Benutzervorrichtungen 108 gemäß einigen Implementierungen. Das Computersystem 800 kann verwendet werden, um Informationen über das Netzwerk 110 zur Anzeige bereitzustellen. Das Computersystem 800 von 8 umfasst einen oder mehrere Prozessoren 820, die kommunikativ mit dem Speicher 825 verbunden sind, eine oder mehrere Kommunikationsschnittstellen 805 und eine oder mehrere Ausgabegeräte 810 (z.B. eine oder mehrere Anzeigeeinheiten) und eine oder mehrere Eingabegeräte 815. Die Prozessoren 820 können in dem Datenverarbeitungssystem 100 oder den anderen Komponenten des Systems 100 enthalten sein, wie beispielsweise dem ersten Datenverarbeitungssystem 102, dem zweiten Datenverarbeitungssystem 104, dem dritten Datenverarbeitungssystem 106 und den Benutzervorrichtungen 108.
  • In dem Computersystem 800 von 8 kann der Speicher 825 ein beliebiges computerlesbares Speichermedium umfassen und kann Computeranweisungen wie prozessorausführbare Anweisungen zum Implementieren der verschiedenen hierin beschriebenen Funktionen für jeweilige Systeme sowie alle diesbezüglichen Daten, die dadurch erzeugt oder über die Kommunikationsschnittstelle(n) oder Eingabegerät(en) (falls vorhanden) empfangen werden, speichern. Unter erneuter Bezugnahme auf das System 100 von 1 können die Datenverarbeitungssysteme den Speicher 825 umfassen, um Informationen zu speichern, die sich unter anderem auf die Sätze von Benutzerkennungen, die erzeugten Vektoren beziehen. Die in 8 gezeigten Prozessor(en) 820, kann verwendet werden, um Anweisungen auszuführen, die in dem Speicher 825 gespeichert sind, und kann dabei auch verschiedene Informationen lesen oder in den Speicher schreiben, die gemäß der Ausführung der Anweisungen verarbeitet und/oder erzeugt werden.
  • Der Prozessor 820 des Computersystems 800, der in 8 gezeigt ist, kann auch kommunikativ an die Kommunikationsschnittstelle(n) 805 gekoppelt sein oder diese steuern, um verschiedene Informationen gemäß der Ausführung von Anweisungen zu senden oder zu empfangen. Beispielsweise können die Kommunikationsschnittstelle(n) 805 mit einem drahtgebundenen oder drahtlosen Netzwerk, Bus oder einem anderen Kommunikationsmittel verbunden sein und es dem Computersystem 800 daher ermöglichen, Informationen an andere Geräte (z.B. andere Computersysteme) zu senden oder Informationen von diesen zu empfangen). Während dies in dem System von 8 nicht explizit gezeigt ist, erleichtern eine oder mehrere Kommunikationsschnittstellen den Informationsfluss zwischen den Komponenten des Systems 800. In einigen Implementierungen können die Kommunikationsschnittstelle(n) konfiguriert sein (z.B. über verschiedene Hardwarekomponenten oder Softwarekomponenten), um eine Website als Zugriffsportal für mindestens einige Aspekte des Computersystems 800 bereitzustellen. Beispiele für Kommunikationsschnittstellen 805 umfassen Benutzerschnittstellen (z.B. Webseiten), über die der Benutzer mit dem Datenverarbeitungssystem 800 kommunizieren kann.
  • Die Ausgabevorrichtungen 810 des Computersystems 800, die in 8 gezeigt sind, kann beispielsweise bereitgestellt werden, um zu ermöglichen, dass verschiedene Informationen im Zusammenhang mit der Ausführung der Anweisungen angezeigt oder auf andere Weise wahrgenommen werden. Die Eingabegeräte 815 können beispielsweise bereitgestellt werden, um es einem Benutzer zu ermöglichen, manuelle Anpassungen vorzunehmen, Auswahlen zu treffen, Daten einzugeben oder auf verschiedene Arten mit dem Prozessor während der Ausführung der Anweisungen zu interagieren. Zusätzliche Informationen bezüglich einer allgemeinen Computersystemarchitektur, die für verschiedene hier diskutierte Systeme verwendet werden kann, werden hierin weiter bereitgestellt.
  • Implementierungen des Gegenstands und der in dieser Beschreibung beschriebenen Operationen können in digitalen elektronischen Schaltungen oder in Computersoftware implementiert werden, die auf einem materiellen Medium, einer Firmware oder Hardware ausgeführt ist, einschließlich der in dieser Beschreibung offenbarten Strukturen und ihrer strukturellen Äquivalente oder in Kombinationen von einer oder mehreren von ihnen. Implementierungen des in dieser Beschreibung beschriebenen Gegenstands können als ein oder mehrere Computerprogramme implementiert werden, d.h. eine oder mehrere Komponenten von Computerprogrammanweisungen, die auf einem Computerspeichermedium zur Ausführung durch oder zur Steuerung des Betriebs von Datenverarbeitungsvorrichtungen codiert sind. Die Programmanweisungen können auf einem künstlich erzeugten Ausbreitungssignal codiert werden, z.B. einem maschinengenerierten elektrischen, optischen oder elektromagnetischen Signal, das erzeugt wird, um Informationen zur Übertragung an eine geeignete Empfängervorrichtung zur Ausführung durch eine Datenverarbeitungsvorrichtung zu codieren. Ein Computerspeichermedium kann ein computerlesbares Speichermedium, ein computerlesbares Speichersubstrat, ein Speicherarray oder -gerät mit wahlfreiem oder seriellem Zugriff oder eine Kombination aus einem oder mehreren von ihnen sein oder in diesem enthalten sein. Während ein Computerspeichermedium kein propagiertes Signal ist, kann ein Computerspeichermedium darüber hinaus eine Quelle oder ein Ziel von Computerprogrammanweisungen enthalten, die in einem künstlich erzeugten, propagierten Signal codiert sind. Das Computerspeichermedium kann auch eine oder mehrere separate physische Komponenten oder Medien (z.B. mehrere CDs, Festplatten oder andere Speichervorrichtungen) sein oder in diesen enthalten sein.
  • Die hierin offenbarten Merkmale können auf einem intelligenten Fernsehmodul (oder einem verbundenen Fernsehmodul, einem hybriden Fernsehmodul usw.) implementiert sein, welches ein Verarbeitungsmodul enthalten kann, das konfiguriert ist, um die Internetverbindung mit herkömmlicheren Fernsehprogrammquellen (z.B. empfangen über Kabel, Satellit, Funk oder andere Signale) zu integrieren. Das intelligente Fernsehmodul kann physisch in ein Fernsehgerät eingebaut sein oder ein separates Gerät wie eine Set-Top-Box, einen Blu-ray- oder einen anderen digitalen Mediaplayer, eine Spielekonsole, ein Hotelfernsehsystem und ein anderes Begleitgerät enthalten. Ein intelligentes Fernsehmodul kann so konfiguriert sein, dass Zuschauer Videos, Filme, Fotos und andere Inhalte im Internet, auf einem lokalen Kabelfernsehkanal, auf einem Satellitenfernsehkanal oder auf einer lokalen Festplatte suchen und finden können. Eine Set-Top-Box (STB) oder Set-Top-Einheit (STU) kann ein Informationsgerät enthalten, das einen Tuner enthalten und mit einem Fernsehgerät und einer externen Signalquelle verbunden sein kann, wodurch das Signal in Inhalt umgewandelt wird, der dann auf dem Fernsehbildschirm oder einem anderen Anzeigegerät angezeigt wird. Ein intelligentes Fernsehmodul kann konfiguriert sein, um einen Startbildschirm oder einen Bildschirm der obersten Ebene bereitzustellen, der Symbole für eine Vielzahl verschiedener Anwendungen enthält, wie beispielsweise einen Webbrowser und mehrere Streaming-Mediendienste, eine angeschlossene Kabel- oder Satellitenmedienquelle und andere „Webkanäle“, usw. Das Smart-TV-Modul kann ferner konfiguriert sein, um dem Benutzer eine elektronische Programmieranleitung bereitzustellen. Eine Begleitanwendung für das Smart-TV-Modul kann auf einem mobilen Computergerät ausgeführt werden, um einem Benutzer zusätzliche Informationen über verfügbare Programme bereitzustellen, damit der Benutzer das Smart-TV-Modul steuern kann usw. In alternativen Implementierungen können die Funktionen auf einem Laptop oder einem anderen Personal Computer, einem Smartphone, einem anderen Mobiltelefon, einem Handheld-Computer, einem Tablet PC oder einem anderen Computergerät implementiert werden.
  • Die in dieser Beschreibung beschriebenen Operationen können als Operationen implementiert werden, die von einer Datenverarbeitungsvorrichtung an Daten ausgeführt werden, die auf einer oder mehreren computerlesbaren Speichervorrichtungen gespeichert sind oder von anderen Quellen empfangen werden.
  • Die Begriffe „Datenverarbeitungsvorrichtung“, „Datenverarbeitungssystem“, „Benutzervorrichtung“ oder „Rechenvorrichtung“ umfassen alle Arten von Geräten, Vorrichtungen und Maschinen zum Verarbeiten von Daten, einschließlich beispielsweise eines programmierbaren Prozessors, eines Computers, ein System auf einem Chip oder mehrere oder Kombinationen der oben genannten. Die Vorrichtung kann eine spezielle Logikschaltung enthalten, z.B. ein FPGA (feldprogrammierbares Gate-Array) oder einen ASIC (anwendungsspezifische integrierte Schaltung). Die Vorrichtung kann zusätzlich zur Hardware auch Code enthalten, der eine Ausführungsumgebung für das betreffende Computerprogramm erstellt, z.B. Code, der eine Prozessor-Firmware, einen Protokollstapel, ein Datenbankverwaltungssystem, ein Betriebssystem und eine plattformübergreifende Laufzeitumgebung, eine virtuelle Maschine oder eine Kombination aus einer oder mehreren von ihnen darstellt. Die Geräte- und Ausführungsumgebung kann verschiedene unterschiedliche Computermodellinfrastrukturen wie Webdienste, verteilte Computer- und Grid-Computing-Infrastrukturen realisieren.
  • Ein Computerprogramm (auch als Programm, Software, Softwareanwendung, Skript oder Code bekannt) kann in jeder Form von Programmiersprache geschrieben werden, einschließlich kompilierter oder interpretierter Sprachen, deklarativer oder prozeduraler Sprachen, und es kann in jeder Form bereitgestellt werden, einschließlich als eigenständiges Programm oder als Modul, Komponente, Unterprogramm, Objekt oder andere Einheit, die zur Verwendung in einer Computerumgebung geeignet ist. Ein Computerprogramm kann, muss aber nicht einer Datei in einem Dateisystem entsprechen. Ein Programm kann in einem Teil einer Datei gespeichert werden, der andere Programme oder Daten enthält (z.B. ein oder mehrere Skripte, die in einem Dokument in einer Markup-Sprache gespeichert sind), in einer einzelnen Datei, die dem betreffenden Programm gewidmet ist, oder in mehreren koordinierten Dateien (z.B., Dateien, in denen ein oder mehrere Module, Unterprogramme oder Codeteile gespeichert sind). Ein Computerprogramm kann bereitgestellt werden, um auf einem Computer oder auf mehreren Computern ausgeführt zu werden, die sich an einem Standort befinden oder auf mehrere Standorte verteilt und durch ein Kommunikationsnetzwerk miteinander verbunden sind.
  • Die in dieser Beschreibung beschriebenen Prozesse und Logikflüsse können von einem oder mehreren programmierbaren Prozessoren ausgeführt werden, die ein oder mehrere Computerprogramme ausführen, um Aktionen auszuführen, indem Eingabedaten bearbeitet und Ausgabe erzeugt werden. Die Prozesse und Logikflüsse können auch von speziellen Logikschaltungen ausgeführt werden, und Vorrichtungen können auch als spezielle Logikschaltungen implementiert werden, z.B. ein FPGA (feldprogrammierbares Gate-Array) oder ein ASIC (anwendungsspezifische integrierte Schaltung).
  • Prozessoren, die zur Ausführung eines Computerprogramms geeignet sind, umfassen beispielsweise sowohl allgemeine als auch spezielle Mikroprozessoren und einen oder mehrere Prozessoren irgendeiner Art von digitalem Computer. Im Allgemeinen empfängt ein Prozessor Anweisungen und Daten von einem Nur-Lese-Speicher oder einem Direktzugriffsspeicher oder beiden. Die wesentlichen Elemente eines Computers sind ein Prozessor zum Ausführen von Aktionen gemäß Anweisungen und eine oder mehrere Speichervorrichtungen zum Speichern von Anweisungen und Daten. Im Allgemeinen wird ein Computer auch eine oder mehrere Massenspeichervorrichtungen zum Speichern von Daten, z.B. magnetische, magnetooptische Platten oder optische Platten, enthalten oder betriebsmäßig gekoppelt sein, um Daten von einer oder mehreren Massenspeichervorrichtungen zu empfangen oder an diese zu übertragen. Ein Computer muss jedoch nicht über solche Geräte verfügen. Darüber hinaus kann ein Computer in ein anderes Gerät eingebettet sein, z.B. ein Mobiltelefon, einen persönlichen digitalen Assistenten (PDA), einen mobilen Audio- oder Videoplayer, eine Spielekonsole, einen GPS-Empfänger (Global Positioning System) oder ein tragbares Speichergerät (z.B. ein USB-Flash-Laufwerk (Universal Serial Bus)).Vorrichtungen, die zum Speichern von Computerprogrammanweisungen und -daten geeignet sind, umfassen alle Formen von nichtflüchtigen Speichern, Medien und Speichervorrichtungen, einschließlich beispielsweise Halbleiterspeichervorrichtungen, z. B. EPROM, EEPROM und Flash-Speichervorrichtungen; Magnetplatten, z.B. interne Festplatten oder Wechselplatten; magnetooptische Scheiben; und CD-ROM- und DVD-ROM-Festplatten. Der Prozessor und der Speicher können durch spezielle Logikschaltungen ergänzt oder in diese integriert werden.
  • Um eine Interaktion mit einem Benutzer bereitzustellen, können Implementierungen des in dieser Beschreibung beschriebenen Gegenstands auf einem Computer mit einer Anzeigevorrichtung implementiert werden, z.B. einer CRT (Kathodenstrahlröhre), einem Plasma oder einem LCD (Flüssigkristallanzeige) Monitor zum Anzeigen von Informationen für den Benutzer und eine Tastatur und ein Zeigegerät, z.B. eine Maus oder einen Trackball, über die der Benutzer Eingaben in den Computer bereitstellen kann. Andere Arten von Geräten können auch verwendet werden, um die Interaktion mit einem Benutzer zu ermöglichen. Beispielsweise kann dem Benutzer zur Verfügung gestelltes Feedback jede Form von sensorischem Feedback umfassen, z.B. visuelles Feedback, akustisches Feedback oder taktiles Feedback; und Eingaben vom Benutzer können in jeder Form empfangen werden, einschließlich akustischer, sprachlicher oder taktiler Eingaben. Darüber hinaus kann ein Computer mit einem Benutzer interagieren, indem er Dokumente an ein vom Benutzer verwendetes Gerät sendet und von diesem empfängt; z.B. durch Senden von Webseiten an einen Webbrowser auf dem Clientgerät eines Benutzers als Antwort auf vom Webbrowser empfangene Anforderungen.
  • Implementierungen des in dieser Beschreibung beschriebenen Gegenstands können in einem Computersystem implementiert werden, das eine Back-End-Komponente enthält, z.B. als Datenserver, oder das eine Middleware-Komponente enthält, z.B. einen Anwendungsserver oder das eine Front-End-Komponente umfasst, z.B. ein Client-Computer mit einer grafischen Benutzeroberfläche oder einem Webbrowser, über den ein Benutzer mit einer Implementierung des in dieser Beschreibung beschriebenen Themas interagieren kann, oder eine beliebige Kombination aus einem oder mehreren solcher Back-End-, Middleware- oder Front-End-Anwendungen Komponenten. Die Komponenten des Systems können durch irgendeine Form oder ein Medium der digitalen Datenkommunikation, z.B. ein Kommunikationsnetzwerk, miteinander verbunden sein. Beispiele für Kommunikationsnetzwerke umfassen ein lokales Netzwerk („LAN“) und ein Weitverkehrsnetzwerk („WAN“), ein Inter-Netzwerk (z.B. das Internet) und Peer-to-Peer-Netzwerke (z.B. Ad-hoc-Peer-Netzwerke).
  • Das Computersystem wie die Datenverarbeitungssysteme 102, 104, 106 und 108 kann Clients und Server umfassen. Beispielsweise können die Datenverarbeitungssysteme 102, 104, 106 und 108 einen oder mehrere Server in einem oder mehreren Rechenzentren oder Serverfarmen enthalten. Ein Client und ein Server sind im Allgemeinen voneinander entfernt und interagieren normalerweise über ein Kommunikationsnetzwerk. Die Beziehung zwischen Client und Server entsteht durch Computerprogramme, die auf den jeweiligen Computern ausgeführt werden und eine Client-Server-Beziehung zueinander haben. In einigen Implementierungen überträgt ein Server Daten (z.B. eine HTML-Seite) an ein Clientgerät (z.B. zum Anzeigen von Daten und zum Empfangen von Benutzereingaben von einem Benutzer, der mit dem Clientgerät interagiert). Auf dem Clientgerät erzeugte Daten (z.B. ein Ergebnis der Benutzerinteraktion) können vom Clientgerät auf dem Server empfangen werden.
  • Während diese Beschreibung viele spezifische Implementierungsdetails enthält, sollten diese nicht als Einschränkungen des Umfangs von Erfindungen oder dessen, was beansprucht werden kann, ausgelegt werden, sondern als Beschreibungen von Merkmalen, die für bestimmte Implementierungen der hierin beschriebenen Systeme und Verfahren spezifisch sind. Bestimmte Merkmale, die in dieser Beschreibung im Zusammenhang mit separaten Implementierungen beschrieben werden, können auch in Kombination in einer einzigen Implementierung implementiert werden. Umgekehrt können verschiedene Merkmale, die im Zusammenhang mit einer einzelnen Implementierung beschrieben werden, auch in mehreren Implementierungen separat oder in einer beliebigen geeigneten Subkombination implementiert werden. Obwohl Merkmale oben als in bestimmten Kombinationen wirkend beschrieben und sogar anfänglich als solche beansprucht werden können, können darüber hinaus in einigen Fällen ein oder mehrere Merkmale aus einer beanspruchten Kombination aus der Kombination herausgeschnitten werden, und die beanspruchte Kombination kann auf eine Subkombination oder Variation einer Subkombination gerichtet sein.
  • Während Operationen in den Zeichnungen in einer bestimmten Reihenfolge dargestellt sind, sollte dies nicht so verstanden werden, dass dies erfordert, dass solche Operationen in der bestimmten gezeigten Reihenfolge oder in sequentieller Reihenfolge ausgeführt werden oder dass alle dargestellten Operationen durchgeführt werden, um wünschenswerte Ergebnisse zu erzielen. In einigen Fällen können die in den Ansprüchen aufgeführten Maßnahmen in einer anderen Reihenfolge durchgeführt werden und dennoch wünschenswerte Ergebnisse erzielen. Zusätzlich erfordern die in den beigefügten Figuren dargestellten Prozesse nicht notwendigerweise die bestimmte gezeigte Reihenfolge oder sequentielle Reihenfolge, um wünschenswerte Ergebnisse zu erzielen.
  • Unter bestimmten Umständen können Multitasking und Parallelverarbeitung vorteilhaft sein. Darüber hinaus sollte die Trennung verschiedener Systemkomponenten in den oben beschriebenen Implementierungen nicht so verstanden werden, dass eine solche Trennung in allen Implementierungen erforderlich ist, und es sollte verstanden werden, dass die beschriebenen Programmkomponenten und -systeme im Allgemeinen zusammen in ein einzelnes Softwareprodukt integriert oder in mehrere Softwareprodukte verpackt werden können. Beispielsweise könnten die Datenverarbeitungssysteme 102, 104 und/oder 106 ein einzelnes Modul, eine Logikvorrichtung mit einem oder mehreren Verarbeitungsmodulen, einem oder mehreren Servern oder einem Teil einer Suchmaschine sein.
  • Nachdem nun einige veranschaulichende Implementierungen und Implementierungen beschrieben wurden, ist es offensichtlich, dass das Vorstehende veranschaulichend und nicht einschränkend ist, da es beispielhaft dargestellt wurde. Insbesondere, obwohl viele der hier vorgestellten Beispiele spezifische Kombinationen von Verfahrenshandlungen oder Systemelementen beinhalten, können diese Handlungen und diese Elemente auf andere Weise kombiniert werden, um die gleichen Ziele zu erreichen. Handlungen, Elemente und Merkmale, die nur im Zusammenhang mit einer Implementierung erörtert werden, sollen nicht von einer ähnlichen Rolle in anderen Implementierungen oder Implementierungen ausgeschlossen werden.
  • Die hier verwendete Ausdrucksweise und Terminologie dient dem Zweck der Beschreibung und sollte nicht als einschränkend angesehen werden. Die Verwendung von „einschließlich“ „umfassend“ „mit“ „enthaltend“ „involvierend“ „gekennzeichnet durch“ „dadurch gekennzeichnet, dass“ und Variationen davon hierin soll die danach aufgeführten Elemente, Äquivalente davon und zusätzliche Elemente sowie alternative Implementierungen umfassen, die ausschließlich aus den danach aufgeführten Elementen bestehen. In einer Implementierung bestehen die hier beschriebenen Systeme und Verfahren aus einem, jeder Kombination von mehr als einem oder allen beschriebenen Elementen, Handlungen oder Komponenten.
  • Alle Verweise auf Implementierungen oder Elemente oder Handlungen der Systeme und Verfahren, auf die hier im Singular Bezug genommen wird, können auch Implementierungen umfassen, die eine Vielzahl dieser Elemente enthalten, und alle Verweise im Plural auf eine Implementierung oder ein Element oder eine Handlung hierin können auch Implementierungen umfassen, die nur ein einziges Element enthalten. Referenzen in der Singular- oder Pluralform sollen die gegenwärtig offenbarten Systeme oder Verfahren, ihre Komponenten, Handlungen oder Elemente nicht auf Einzel- oder Pluralkonfigurationen beschränken. Verweise auf eine Handlung oder ein Element, die auf Informationen, Handlungen oder Elementen basieren, können Implementierungen umfassen, bei denen die Handlung oder das Element zumindest teilweise auf Informationen, Handlungen oder Elementen basiert.
  • Jede hierin offenbarte Implementierung kann mit jeder anderen Implementierung kombiniert werden, und Verweise auf „eine Implementierung“, „einige Implementierungen“, „eine alternative Implementierung“, „verschiedene Implementierungen“, „eine Implementierung“ oder dergleichen sind nicht notwendigerweise gegenseitig exklusiv und sollen darauf hinweisen, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes Merkmal, das im Zusammenhang mit der Implementierung beschrieben wurde, in mindestens einer Implementierung enthalten sein kann. Solche Begriffe, wie sie hier verwendet werden, beziehen sich nicht notwendigerweise alle auf dieselbe Implementierung. Jede Implementierung kann mit jeder anderen Implementierung, einschließlich oder ausschließlich, in einer Weise kombiniert werden, die mit den hierin offenbarten Aspekten und Implementierungen übereinstimmt.
  • Verweise auf „oder“ können als inklusiv ausgelegt werden, so dass alle Begriffe, die unter Verwendung von „oder“ beschrieben werden, einen einzelnen, mehr als einen und alle beschriebenen Begriffe anzeigen können.
  • Wenn auf technische Merkmale in den Zeichnungen, die detaillierte Beschreibung oder einen Anspruch Bezugszeichen folgen, wurden die Bezugszeichen nur zum Zweck der Verbesserung der Verständlichkeit der Zeichnungen, der detaillierten Beschreibung und der Ansprüche aufgenommen. Dementsprechend haben weder die Bezugszeichen noch deren Fehlen eine einschränkende Wirkung auf den Umfang von Anspruchselementen.
  • Die hier beschriebenen Systeme und Verfahren können in anderen spezifischen Formen ausgeführt werden, ohne von deren Eigenschaften abzuweichen. Obwohl sich die hier bereitgestellten Beispiele auf die Steuerung der Anzeige des Inhalts von Informationsressourcen beziehen, können die hier beschriebenen Systeme und Verfahren auch auf andere Umgebungen angewendet werden. Die vorstehenden Implementierungen dienen eher der Veranschaulichung als der Einschränkung der beschriebenen Systeme und Verfahren. Der Umfang der hier beschriebenen Systeme und Verfahren wird daher eher durch die beigefügten Ansprüche als durch die vorstehende Beschreibung angegeben, und Änderungen, die in die Bedeutung und den Bereich der Äquivalenz der Ansprüche fallen, werden darin berücksichtigt.
  • Ferner kann ein Benutzer mit Steuerungen versehen sein, die es dem Benutzer ermöglichen, eine Wahl zu treffen, ob und wann Systeme, Programme oder Merkmale, die hierin beschrieben sind, das Sammeln von Benutzerinformationen (z.B. Informationen über das soziale Netzwerk eines Benutzers, soziale Aktionen oder Aktivitäten, den Beruf, die Vorlieben eines Benutzers oder den aktuellen Standort eines Benutzers) und ob dem Benutzer Inhalte oder Mitteilungen von einem Server gesendet werden. Darüber hinaus können bestimmte Daten auf eine oder mehrere Arten behandelt werden, bevor sie gespeichert oder verwendet werden, sodass personenbezogene Daten entfernt werden. Beispielsweise kann die Identität eines Benutzers so behandelt werden, dass keine persönlich identifizierbaren Informationen für den Benutzer bestimmt werden können, oder der geografische Standort eines Benutzers kann verallgemeinert werden, wenn Standortinformationen erhalten werden (z.B. auf Stadt-, Postleitzahl- oder Staatsebene). so dass ein bestimmter Standort eines Benutzers nicht bestimmt werden kann. Somit kann der Benutzer die Kontrolle darüber haben, welche Informationen über den Benutzer gesammelt werden, wie diese Informationen verwendet werden und welche Informationen dem Benutzer bereitgestellt werden.
  • Im Detail und als Beispiel können hier Ergebnisse aus dem Vergleich zwischen verschiedenen Architekturen und Modellparametern beschrieben werden. Die hier beschriebenen Ergebnisse sollen den Umfang der Erfindung nicht einschränken. Alle hier implementierten Architekturen können aus den Elementen bestehen, aus denen das System 100 besteht. In den hier beschriebenen nicht einschränkenden beispielhaften Ausführungsformen ist das Datenverarbeitungssystem 102 dafür verantwortlich, die Vereinigung zwischen den zwei Sätzen von Benutzerdaten 302 und 304 zu schätzen. Das Datenverarbeitungssystem 104 ist dafür verantwortlich, den ersten Interaktionsvektor unter Verwendung beispielsweise des Verfahrens 500 und des Satzes 302 zu erzeugen. Das Datenverarbeitungssystem 106 ist dafür verantwortlich, den zweiten Interaktionsvektor unter Verwendung beispielsweise des Verfahrens 500 und des Satzes 304 zu erzeugen. In dieser beispielhaften Ausführungsform können die Datenverarbeitungssysteme 102, 104 und 106 über das Netzwerk 110 kommunizieren. Die hier beschriebenen nicht einschränkenden beispielhaften Ausführungsformen verwenden den Vektor-of-Count-Ansatz.
  • In einer beispielhaften Ausführungsform könnte die Genauigkeit zum Schätzen der Größe der Vereinigung von zwei Sätzen von Benutzerkennungen, zum Beispiel 302 und 304, von eingestellten Kardinalitäten und der Größe ihres Schnittpunkts abhängen. In einigen beispielhaften Ausführungsformen könnte die Genauigkeit zum Schätzen der Größe der Vereinigung zweier Sätze von Benutzerkennungen von der Größe des Interaktionsvektors abhängen, der beispielsweise in Verfahren 400 oder Verfahren 500 erzeugt wird. In einigen beispielhaften Ausführungsformen könnte die Genauigkeit zum Schätzen der Größe der Vereinigung zweier Sätze von Benutzerkennungen von der Skala des Rauschens abhängen, das den Interaktionsvektoren hinzugefügt wird.
  • In einer nicht einschränkenden beispielhaften Ausführungsform zum Implementieren und Testen verschiedener Architekturen, die den Umfang der Erfindung nicht einschränkt, wird die Genauigkeit der Implementierung getestet, während die Kardinalität des Interaktionsvektors und die Größe der Benutzerkennungen 302 und der Sätze variiert werden 304. Die Daten aus diesem Beispielexperiment sind in 9 dargestellt. In dieser nicht einschränkenden beispielhaften Ausführungsform war die Größe des Schnittpunkts 306 der beiden Sätze ein Zehntel der Größe des ersten Satzes von Benutzerkennungen 302. Es wird angenommen, dass beide Sätze von Benutzerkennungen dieselbe Kardinalität haben. Die Skala des Laplace-Rauschens, die in dieser beispielhaften Ausführungsform angewendet wird, ist auf ε = In(3) festgelegt, wobei die Skala des Laplace-Rauschens gleich b = 1/ ε ist. 9 zeigt ein Diagramm, das Konturkurven eines konstanten gebrochenen Standardfehlers der Schätzung der Vereinigungs-Kardinalität (306) beider Sätze von Benutzerkennungen 302 und 304 enthält. Wie in 9 hat die Kontur 912 einen Standardfehler von 10%, die Kontur 910 hat einen Standardfehler von 5%, die Kontur 908 hat einen Standardfehler von 3%, die Kontur 906 hat einen Standardfehler von 2% und die Kontur 904 hat einen Standardfehler von 1%. Die Konturen in 9 zeigen, dass diese beispielhafte Ausführungsform mit einer eingestellten Kardinalität N1 = N2 = 216 eine Genauigkeit von 1% bei einer Schätzung der Vereinigung für Vektorgrößen (k) zwischen 213 und 217 erreichen kann.
  • Der in 9 enthaltene Plot zeigt, dass die nicht einschränkende beispielhafte Ausführungsform bei der richtigen Wahl der Vektorgröße k Genauigkeiten in der Größenordnung von 1 bis 5% sicherstellen kann. Die Darstellung in 9 zeigt auch, dass die Genauigkeitskonturen in der Vektorgröße k mit variierender eingestellter Größe N1 = N2 relativ flach sind. Basierend auf diesen Daten kann man annehmen, dass eine minimale Vektorgröße von k = 210 = 1024 eine Fehlerschwelle von 2% sicherstellen könnte.
  • In einer anderen nicht einschränkenden beispielhaften Ausführungsform, die den Umfang der Erfindung nicht einschränkt, wird die Genauigkeit der Implementierung getestet, während das eingestellte Kardinalitäts-Verhältnis von N1 (302) und N2 (304) variiert wird. In dieser nicht einschränkenden beispielhaften Ausführungsform sind alle anderen Parameter auf die Werte im vorherigen Experiment festgelegt. 10 zeigt eine Auftragung von Daten, die aus dieser nicht einschränkenden beispielhaften Ausführungsform erhalten wurden. Die Konturen 1002, 1004, 1006 und 1008 zeigen jeweils einen 2%igen Fehler bei der Schätzung der Vereinigungs-Kardinalität der beiden Sätze, während die Kardinalität eines der Sätze relativ zum anderen erhöht wird. Wie in 10 dargestellt, zeigt die Kontur 1002 den Schwellenwert von 2% Standardfehler, wenn beide Sätze gleich groß sind. Die Kontur 1004 zeigt den Schwellenwert von 2% Standardfehler, wenn der Satz N2 (304) doppelt so groß ist wie der Satz N1 (302). Die Kontur 1006 zeigt die Schwelle von 2% Standardfehler, wenn der Satz N2 (304) viermal so groß ist wie der Satz N1 (302). Die Kontur 1008 zeigt die Schwelle von 2% Standardfehler, wenn der Satz N2 (304) achtmal so groß ist wie der Satz N1 (302).
  • Wie aus dem in 10 enthaltenen Diagramm hervorgeht, zeigt diese nicht einschränkende beispielhafte Ausführungsform, dass es erheblich einfacher wird, einen festen Standardfehler beizubehalten, wenn die Kardinalität der beiden Sätze (302 und 304) ungleicher wird. Dies liegt daran, dass in dieser nicht einschränkenden beispielhaften Ausführungsform der absolute Fehler eine Funktion der Schnittgröße ist und der Standardfehler relativ zur Vereinigungsgröße ist. Weitere Diskussion der aus dieser Ausführungsform erhaltenen Ergebnisse, wenn der Unterschied in der eingestellten Kardinalität zunimmt, nimmt die Schnittgröße relativ zur Vereinigungsgröße ab, da die Schnittgröße durch die Größe der kleineren Menge begrenzt ist.
  • In einer anderen nicht einschränkenden beispielhaften Ausführungsform, die den Umfang der Erfindung nicht einschränkt, wird die Genauigkeit der Implementierung getestet, während der Anteil der Benutzer variiert wird, die von N1 (302) und N2 (304) gemeinsam genutzt werden (306). In dieser nicht einschränkenden beispielhaften Ausführungsform wird angenommen, dass beide Sätze N1 (302) und N2 (304) die gleiche Kardinalität haben (N1 = N2). Die Skala des Laplace-Rauschens, die in dieser beispielhaften Ausführungsform angewendet wird, ist auf ε = In(3) festgelegt, wobei die Skala des Laplace-Rauschens gleich b = 1/ ε ist. 11 zeigt ein Datenplot, das aus dem unter Verwendung dieser beispielhaften Ausführungsform durchgeführten Experiment erhalten wurde. Die Konturen 1102, 1104, 1106 und 1108, die in der Darstellung in 11 gezeigt sind, zeigen einen konstanten Standardfehler von 2% für verschiedene Schnittgrößen 306. Die Kontur 1102 zeigt den Schwellenwert eines konstanten Fehlers von 2%, wenn der Überlappungsbereich N12 (306) 5% der Größe des ersten Satzes von Benutzerkennungen N1 (302) beträgt. Die Kontur 1104 zeigt den Schwellenwert eines konstanten Fehlers von 2%, wenn der Überlappungsbereich N12 (306) 10% der Größe des ersten Satzes von Benutzerkennungen N1 (302) beträgt. Die Kontur 1106 zeigt den Schwellenwert eines konstanten Fehlers von 2%, wenn der Überlappungsbereich N12 (306) 20% der Größe des ersten Satzes von Benutzerkennungen N1 (302) beträgt. Die Kontur 1108 zeigt den Schwellenwert eines konstanten Fehlers von 2%, wenn der Überlappungsbereich N12 (306) 30% der Größe des ersten Satzes von Benutzerkennungen N1 (302) beträgt.
  • Die Daten aus dieser nicht einschränkenden beispielhaften Ausführungsform, die in 11 dargestellt ist, zeigt, dass das Erhöhen der Schnittgröße zwischen den Sätzen N1 (302) und N2 (304) den Fehler für die gleiche Größe N1 (302) und die Interaktionsvektorgröße k erhöht. Die in 11 dargestellten Daten, zeigen auch, dass die optimale Vektorgröße unter Erhöhen des Schnittanteils (306) nahezu unveränderlich ist. Dies bedeutet in Bezug auf diese beispielhafte Ausführungsform, dass jedes Datenverarbeitungssystem 104 und 106 die optimalen Werte von k für ihren Wert von N auswählen kann, ohne die Genauigkeit der Schätzung in signifikanter Weise zu beeinflussen.
  • In einer anderen nicht einschränkenden beispielhaften Ausführungsform zum Implementieren und Testen verschiedener Architekturen, die den Umfang der Erfindung nicht einschränkt, wird die Genauigkeit der Implementierung getestet, während der Maßstab des Laplace-Rauschens (b = 1/ ε) variiert wird. In der hier beschriebenen beispielhaften Ausführungsform haben beide Benutzeridentifikationssätze N1 (302) und N2 (304) die gleiche Kardinalität (N1 = N2). Der Schnittpunkt beider Sätze (306) ist auf ein Zehntel der Größe von N1 festgelegt. 12 zeigt ein Datenplot, das aus dem unter Verwendung dieser beispielhaften Ausführungsform durchgeführten Experiment erhalten wurde. Die Konturen 1102, 1104, 1106 und 1108, die in der Darstellung in 11 gezeigt sind, zeigen einen konstanten Standardfehler von 2% für verschiedene Werte von ε. Die Kontur 1202 zeigt die Schwelle eines konstanten Fehlers von 2%, wenn ε = 2/n(3) ist. Die Kontur 1204 zeigt die Schwelle eines konstanten Fehlers von 2%, wenn ε = sqrt(2)In(3). Die Kontur 1206 zeigt die Schwelle eines konstanten Fehlers von 2%, wenn ε = In(3) ist. Die Kontur 1208 zeigt die Schwelle eines konstanten Fehlers von 2%, wenn ε = (1/sqrt(2))/n(3) ist. Die Kontur 1210 zeigt die Schwelle eines konstanten Fehlers von 2%, wenn ε = (1/2)/n(3) ist.
  • Die Daten aus dieser nicht einschränkenden beispielhaften Ausführungsform, die in 12 dargestellt ist, zeigen, dass die Untergrenze der Vektorgröße k zur Gewährleistung der Genauigkeit nahezu keine Abhängigkeit von der Rauschskala aufweist. Dies bedeutet in Bezug auf diese beispielhafte Ausführungsform, dass die Datenverarbeitungssysteme 104 und 106 die Untergrenze der Vektorgröße k ohne Berücksichtigung ihrer gewählten Rauschskala wählen können. Die Daten in 12 zeigen auch an, dass die optimale Vektorgröße k mit zunehmender Fehlerskala signifikant abnimmt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 16/592190 [0001]
    • US 16/564116 [0001]
    • US 62/877251 [0001]
    • US 62/870970 [0001]

    Claims (20)

    1. Verfahren zum Bereitstellen anonymer Daten über Benutzerinteraktionen mit einem Satz von Inhaltselementen, wobei das Verfahren umfasst: Empfangen von Daten über ein Netzwerk, um einen Satz von Hash-Funktionen zu identifizieren; Abrufen einer Vielzahl von Benutzerkennungen, wobei jede der Benutzerkennungen die Interaktion mit einem Satz von Inhaltselementen durch einen jeweiligen Benutzer der Vielzahl identifiziert; für jede der Vielzahl von Benutzerkennungen: Erzeugen eines Hash-Werts der Benutzerkennung unter Verwendung der in der Anfrage enthaltenen Hash-Funktion; Bestimmen eines Wertes von m-Bits des Hash-Wertes und Inkrementieren einer Anzahl eines Registers entsprechend dem Wert, wobei das Register eines von k-Registern ist; Erzeugen eines Interaktionsvektors, wobei jede Koordinate des Interaktionsvektors gleich einer Anzahl eines entsprechenden k-ten Registers ist; und Übertragen des erzeugten Interaktionsvektors über ein Netzwerk.
    2. Verfahren nach Anspruch 1, wobei das Empfangen von Daten über ein Netzwerk zum Identifizieren der Liste von Hash-Funktionen das Empfangen von Daten zum Identifizieren eines Satzes von Inhaltselementen umfasst.
    3. Verfahren nach Anspruch 2, wobei das Abrufen der Vielzahl von Benutzerkennungen, bei welchem jede der Benutzerkennungen die Interaktion mit dem Satz von Inhaltselementen durch einen jeweiligen Benutzer der Vielzahl identifiziert, nur das Abrufen der Vielzahl von Benutzerkennungen umfasst, die die Interaktion mit dem Satz von Inhaltselementen identifizieren, die durch die empfangenen Daten identifiziert werden.
    4. Verfahren nach Anspruch 1, umfassend: Erzeugen von p-Hash-Werten für jede der mehreren Benutzerkennungen, wobei die p-Hash-Werte einer jeweiligen Hash-Funktion in dem Satz von Hash-Funktionen entsprechen; Bestimmen des Wertes von m-Bits für jeden der p-Hash-Werte und Inkrementieren entsprechend dem Wert der Anzahl eines Registers, wobei das Register eines von k Registern ist, wobei k = 2^m ist, wobei jeder der p Hashwerte einem Satz von k Registern entspricht.
    5. Verfahren nach Anspruch 4, wobei das Erzeugen des Interaktionsvektors das Erzeugen von p Interaktionsvektoren umfasst, wobei jede Koordinate der p Interaktionsvektoren dem k-ten Register in dem p-ten Satz von Registern entspricht.
    6. Verfahren nach Anspruch 1, wobei das Bestimmen des Werts von m-Bits des Hash-Werts das Bestimmen der m niedrigstwertigen Bits des Hash-Werts umfasst.
    7. Verfahren nach Anspruch 1, wobei das Erzeugen des Interaktionsvektors, wobei jede Koordinate des Interaktionsvektors, die gleich der Anzahl des entsprechenden k-ten Registers ist, das Subtrahieren eines Werts von jeder Koordinate des Interaktionsvektors, der gleich der Anzahl der durch k geteilten Benutzerkennungen ist, umfasst.
    8. Verfahren nach Anspruch 1, wobei das Erzeugen des Interaktionsvektors, wobei jede Koordinate des Interaktionsvektors gleich der Anzahl eines entsprechenden k-ten Registers ist, das Hinzufügen einer Rauschfunktion zu jeder Koordinate des Interaktionsvektors basierend auf einem oder mehreren Parametern umfasst.
    9. Verfahren nach Anspruch 1, wobei das Übertragen des erzeugten Interaktionsvektors über ein Netzwerk das Übertragen der Anzahl von Benutzerkennungen, die die Interaktion mit dem Satz von Inhaltselementen identifizieren, umfasst.
    10. Verfahren nach Anspruch 5, wobei das Übertragen des erzeugten Interaktionsvektors über ein Netzwerk das Übertragen von p Interaktionsvektoren umfasst.
    11. System, das einen oder mehrere Prozessoren umfasst, wobei die Prozessoren konfiguriert sind, zum: Empfangen von Daten über ein Netzwerk, um einen Satz von Hash-Funktionen zu identifizieren; Abrufen einer Vielzahl von Benutzerkennungen, wobei jede der Benutzerkennungen die Interaktion mit einem Satz von Inhaltselementen durch einen jeweiligen Benutzer der Vielzahl identifiziert; für jede der mehreren Benutzerkennungen: Erzeugen eines Hash-Werts der Benutzerkennung unter Verwendung der in der Anforderung enthaltenen Hash-Funktion; Bestimmen eines Wertes eines ersten m-Bits des Hash-Werts, und Inkrementieren einer Anzahl eines Registers entsprechend dem Wert, wobei das Register eines von k Registern ist; Erzeugen eines Interaktionsvektors, wobei jede Koordinate des Interaktionsvektors gleich einer Anzahl eines entsprechenden k-ten Registers ist; und Übertragen über ein Netzwerk des erzeugten Interaktionsvektors.
    12. System nach Anspruch 11, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: über ein Netzwerk Daten zu empfangen, um die Liste von Hash-Funktionen zu identifizieren, und Daten zu empfangen, um den Satz von Inhaltselementen zu identifizieren.
    13. System nach Anspruch 12, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: nur die Vielzahl von Benutzerkennungen abzurufen, die die Interaktion mit dem Satz von Inhaltselementen, die durch die empfangenen Daten identifiziert werden, identifizieren.
    14. System nach Anspruch 11, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: p-Hash-Werte für jede der mehreren Benutzerkennungen zu erzeugen, wobei die p-Hash-Werte einer jeweiligen Hash-Funktion in dem Satz von Hash-Funktionen entsprechen, den Wert von m-Bits für jeden der p-Hash-Werte zu bestimmen, und die Anzahl eines Registers, das dem Wert entspricht, zu erhöhen, wobei das Register eines von k Registern ist, wobei k = 2^m ist, wobei jeder der p Hash-Werte einem Satz von k Registern entspricht.
    15. System nach Anspruch 14, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: p Interaktionsvektoren zu erzeugen, wobei jede Koordinate der p Interaktionsvektoren dem k-ten Register in dem p-ten Satz von Registern entspricht.
    16. System nach Anspruch 11, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: den Wert von m-Bits des Hash-Werts durch Bestimmen des m niedrigstwertigen Bits des Hash-Werts zu bestimmen.
    17. System nach Anspruch 11, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: einen Interaktionsvektor zu erzeugen, wobei jede Koordinate des Interaktionsvektors gleich der Anzahl des entsprechenden k-ten Registers ist, und von jeder Koordinate des Interaktionsvektors einen Wert zu subtrahieren, der der Anzahl der Benutzerkennungen geteilt durch k entspricht.
    18. System nach Anspruch 11, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: den Interaktionsvektor zu erzeugen, wobei jede Koordinate des Interaktionsvektors gleich der Anzahl des entsprechenden k-ten Registers ist, und zu jeder Koordinate des Interaktionsvektors eine Rauschfunktion, die auf einem oder mehreren Parametern basiert, hinzufügen.
    19. System nach Anspruch 11, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: über ein Netzwerk den erzeugten Interaktionsvektor und die Anzahl von Benutzerkennungen, die die Interaktion mit dem Satz von Inhaltselementen identifizieren, zu übertragen.
    20. System nach Anspruch 15, wobei der eine oder die mehreren Prozessoren konfiguriert sind, um: über ein Netzwerk die erzeugten p Interaktionsvektoren zu übertragen.
    DE112020000091.5T 2019-07-05 2020-05-29 Systeme und Verfahren zur Wahrung der Privatsphäre durch Bestimmung der Schnittstellen von Sätzen von Benutzererkennungen Pending DE112020000091T5 (de)

    Applications Claiming Priority (9)

    Application Number Priority Date Filing Date Title
    US201962870970P 2019-07-05 2019-07-05
    US62/870,970 2019-07-05
    US201962877251P 2019-07-22 2019-07-22
    US62/877,251 2019-07-22
    US201916564116A 2019-09-09 2019-09-09
    US16/564,116 2019-09-09
    US16/592,190 2019-10-03
    US16/592,190 US11790116B2 (en) 2019-07-05 2019-10-03 Systems and methods for privacy preserving determination of intersections of sets of user identifiers
    PCT/US2020/035276 WO2021006966A1 (en) 2019-07-05 2020-05-29 Systems and methods for privacy preserving determination of intersections of sets of user identifiers

    Publications (1)

    Publication Number Publication Date
    DE112020000091T5 true DE112020000091T5 (de) 2021-07-08

    Family

    ID=74065225

    Family Applications (2)

    Application Number Title Priority Date Filing Date
    DE112020000092.3T Pending DE112020000092T5 (de) 2019-07-05 2020-05-29 Systeme und verfahren zur wahrung der privatshpäre durch bestimmung der schnittstellen von sätzen von benutzererkennungen
    DE112020000091.5T Pending DE112020000091T5 (de) 2019-07-05 2020-05-29 Systeme und Verfahren zur Wahrung der Privatsphäre durch Bestimmung der Schnittstellen von Sätzen von Benutzererkennungen

    Family Applications Before (1)

    Application Number Title Priority Date Filing Date
    DE112020000092.3T Pending DE112020000092T5 (de) 2019-07-05 2020-05-29 Systeme und verfahren zur wahrung der privatshpäre durch bestimmung der schnittstellen von sätzen von benutzererkennungen

    Country Status (5)

    Country Link
    US (4) US20210004481A1 (de)
    CN (2) CN112789843A (de)
    DE (2) DE112020000092T5 (de)
    GB (2) GB2592142B (de)
    WO (2) WO2021006967A1 (de)

    Families Citing this family (7)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US11561942B1 (en) 2019-07-05 2023-01-24 The Nielsen Company (Us), Llc Methods and apparatus to estimate audience sizes of media using deduplication based on vector of counts sketch data
    US11416461B1 (en) 2019-07-05 2022-08-16 The Nielsen Company (Us), Llc Methods and apparatus to estimate audience sizes of media using deduplication based on binomial sketch data
    JP7411526B2 (ja) * 2020-09-25 2024-01-11 株式会社日立製作所 情報処理システム及び情報処理方法
    CN113591095B (zh) * 2021-08-04 2023-08-29 百度在线网络技术(北京)有限公司 一种标识信息处理方法、装置及电子设备
    CN113761570B (zh) * 2021-08-16 2024-01-30 高语澈 一种面向隐私求交的数据交互方法
    EP4164173A1 (de) * 2021-10-07 2023-04-12 Axis AB Signierte videodaten mit gesalzenen hashs
    US20230289466A1 (en) * 2022-03-09 2023-09-14 AVAST Software s.r.o. User data collection privacy using probabilistic data structures

    Family Cites Families (72)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US6134532A (en) * 1997-11-14 2000-10-17 Aptex Software, Inc. System and method for optimal adaptive matching of users to most relevant entity and information in real-time
    US6698013B1 (en) * 2000-10-04 2004-02-24 Mintaka Technology Group Real time monitoring system for tracking and documenting changes made by programmer's during maintenance or development of computer readable code on a line by line basis and/or by point of focus
    US8095589B2 (en) * 2002-03-07 2012-01-10 Compete, Inc. Clickstream analysis methods and systems
    WO2003079271A1 (en) * 2002-03-15 2003-09-25 Metatv System and method for construction, delivery and display of itv content
    US20040088730A1 (en) * 2002-11-01 2004-05-06 Srividya Gopalan System and method for maximizing license utilization and minimizing churn rate based on zero-reject policy for video distribution
    US20090006156A1 (en) * 2007-01-26 2009-01-01 Herbert Dennis Hunt Associating a granting matrix with an analytic platform
    US8700462B2 (en) * 2005-12-28 2014-04-15 Yahoo! Inc. System and method for optimizing advertisement campaigns using a limited budget
    US7774294B2 (en) 2006-03-06 2010-08-10 Veveo, Inc. Methods and systems for selecting and presenting content based on learned periodicity of user content selection
    US20080134043A1 (en) 2006-05-26 2008-06-05 Sony Corporation System and method of selective media content access through a recommednation engine
    US7984169B2 (en) * 2006-06-28 2011-07-19 Microsoft Corporation Anonymous and secure network-based interaction
    US8589233B2 (en) 2006-10-25 2013-11-19 Microsoft Corporation Arbitrage broker for online advertising exchange
    US7895121B2 (en) * 2006-10-31 2011-02-22 Hewlett-Packard Development Company, L.P. Method and system for tracking conversions in a system for targeted data delivery
    US7533130B2 (en) * 2006-12-19 2009-05-12 Yahoo! Inc. User behavior reporting based on pre-aggregated activity data
    US10621203B2 (en) * 2007-01-26 2020-04-14 Information Resources, Inc. Cross-category view of a dataset using an analytic platform
    US20080270363A1 (en) * 2007-01-26 2008-10-30 Herbert Dennis Hunt Cluster processing of a core information matrix
    US20080294996A1 (en) * 2007-01-31 2008-11-27 Herbert Dennis Hunt Customized retailer portal within an analytic platform
    US9596317B2 (en) * 2007-07-07 2017-03-14 Qualcomm Incorporated Method and system for delivery of targeted information based on a user profile in a mobile communication device
    CN102017550A (zh) * 2007-11-14 2011-04-13 高通股份有限公司 用于确定地理用户简档以基于所述简档确定有目标的内容消息的适宜性的方法和系统
    US9203912B2 (en) * 2007-11-14 2015-12-01 Qualcomm Incorporated Method and system for message value calculation in a mobile environment
    GB2455099A (en) * 2007-11-28 2009-06-03 Really Virtual Company Ltd Providing an anonymous interaction between a user and a service provider
    US20090157512A1 (en) * 2007-12-14 2009-06-18 Qualcomm Incorporated Near field communication transactions with user profile updates in a mobile environment
    US10269024B2 (en) * 2008-02-08 2019-04-23 Outbrain Inc. Systems and methods for identifying and measuring trends in consumer content demand within vertically associated websites and related content
    US8930818B2 (en) * 2009-03-31 2015-01-06 International Business Machines Corporation Visualization of website analytics
    US9342835B2 (en) * 2009-10-09 2016-05-17 Visa U.S.A Systems and methods to deliver targeted advertisements to audience
    US9031860B2 (en) * 2009-10-09 2015-05-12 Visa U.S.A. Inc. Systems and methods to aggregate demand
    US8626705B2 (en) * 2009-11-05 2014-01-07 Visa International Service Association Transaction aggregator for closed processing
    EP2531969A4 (de) * 2010-02-01 2013-12-04 Jumptap Inc Integriertes werbungssystem
    US8655695B1 (en) 2010-05-07 2014-02-18 Aol Advertising Inc. Systems and methods for generating expanded user segments
    US20120041817A1 (en) * 2010-08-11 2012-02-16 Apple Inc. Prioritizing population segment assignments to optimize campaign goals
    CN107194009A (zh) * 2011-04-12 2017-09-22 谷歌公司 确定网络位置的唯一访问者
    US9146909B2 (en) * 2011-07-27 2015-09-29 Qualcomm Incorporated Web browsing enhanced by cloud computing
    US20130194406A1 (en) * 2012-01-31 2013-08-01 Kai Liu Targeted Delivery of Content
    EP2820582B1 (de) * 2012-02-29 2018-08-22 EntIT Software LLC Netzwerkdienst-schnittstellenanalyse
    CN104603813A (zh) * 2012-06-11 2015-05-06 英特托拉斯技术公司 数据收集和分析的系统和方法
    US9189650B2 (en) * 2012-07-31 2015-11-17 J.D. Power And Associates Privacy preserving method for summarizing user data
    US9461876B2 (en) * 2012-08-29 2016-10-04 Loci System and method for fuzzy concept mapping, voting ontology crowd sourcing, and technology prediction
    US9070139B2 (en) 2012-09-19 2015-06-30 Hulu, LLC Estimating unique impressions in an online video distribution system
    US20140196151A1 (en) * 2013-01-10 2014-07-10 Microsoft Corporation Preserving geometric properties of datasets while protecting privacy
    US20140222561A1 (en) 2013-02-04 2014-08-07 Facebook, Inc. Cross-Platform Advertisement Targeting
    CN104219267B (zh) * 2013-06-04 2017-08-25 安徽大学 隐私保护的统计车辆数量的方法及装置
    US20150066636A1 (en) * 2013-08-29 2015-03-05 Tune, Inc. Systems and methods of attributing and compensating acquisition of influential users in a software application
    CN105940391B (zh) * 2013-12-04 2020-08-04 维克斯网有限公司 用于第三方应用活动数据收集的系统和方法
    US9529887B2 (en) * 2013-12-10 2016-12-27 Palo Alto Research Center Incorporated Efficient detection of information of interest using greedy-mode-based graph clustering
    CN104023044A (zh) * 2014-01-01 2014-09-03 电子科技大学 一种具有隐私保护的云存储数据轻量级公共审计的方法
    US10592914B2 (en) * 2015-03-24 2020-03-17 PlaceIQ, Inc. Device-dwell graphs
    US9691085B2 (en) * 2015-04-30 2017-06-27 Visa International Service Association Systems and methods of natural language processing and statistical analysis to identify matching categories
    US9716697B2 (en) * 2015-07-24 2017-07-25 Google Inc. Generating bridge match identifiers for linking identifiers from server logs
    WO2017019643A1 (en) 2015-07-24 2017-02-02 Videoamp, Inc. Targeting tv advertising slots based on consumer online behavior
    US10091076B2 (en) 2015-08-25 2018-10-02 Google Llc Systems and methods for configuring a resource for network traffic analysis
    CN105205406B (zh) * 2015-08-26 2017-11-07 中国地质大学(武汉) 一种隐私保护的交集计算方法
    US10313752B2 (en) * 2015-11-30 2019-06-04 The Nielsen Company (Us), Llc Methods and apparatus to estimate deduplicated total audiences in cross-platform media campaigns
    US10892968B2 (en) 2015-12-18 2021-01-12 Google Llc Systems and methods for latency reduction in content item interactions using client-generated click identifiers
    CN105763547B (zh) * 2016-02-04 2019-01-18 中国联合网络通信集团有限公司 第三方授权方法和第三方授权系统
    US10853362B2 (en) 2016-04-18 2020-12-01 Verizon Media Inc. Optimized full-spectrum loglog-based cardinality estimation
    US9799131B1 (en) * 2016-04-25 2017-10-24 Google Inc. Rendering interaction statistics data for content elements of an information resource by identifying client device segments
    US10176082B2 (en) 2016-06-30 2019-01-08 International Business Machines Corporation Z/OS SMF/RMF workload data playback with web dashboard visualization
    US10558817B2 (en) * 2017-01-30 2020-02-11 Foley & Lardner LLP Establishing a link between identifiers without disclosing specific identifying information
    US20180225682A1 (en) 2017-02-07 2018-08-09 Videology, Inc. Method and system for forecasting performance of persistent user accounts
    CN107124268B (zh) * 2017-04-01 2020-08-11 中国人民武装警察部队工程大学 一种可抵抗恶意攻击的隐私集合交集计算方法
    US11074237B2 (en) 2017-04-14 2021-07-27 Dynatrace Llc Method and system to estimate the cardinality of sets and set operation results from single and multiple HyperLogLog sketches
    CN111095332B (zh) * 2017-07-06 2023-12-08 罗伯特·博世有限公司 用于保护隐私的社交媒体广告的方法和系统
    US20190294642A1 (en) * 2017-08-24 2019-09-26 Bombora, Inc. Website fingerprinting
    US11551257B2 (en) * 2017-10-12 2023-01-10 Adobe Inc. Digital media environment for analysis of audience segments in a digital marketing campaign
    CN108307344A (zh) * 2018-01-29 2018-07-20 福建师范大学 一种基于联盟匹配的群智感知隐私保护方法及系统
    CN108400981B (zh) * 2018-02-08 2021-02-12 江苏谷德运维信息技术有限公司 智慧城市中轻量级和隐私保护的公共云审计系统和方法
    CN108737115B (zh) * 2018-06-20 2020-12-18 湖北工业大学 一种具有隐私保护的私有属性集交集求解方法
    WO2020037006A1 (en) * 2018-08-13 2020-02-20 Pebblepost, Inc. Associating anonymized identifiers with addressable endpoints
    CN109271806A (zh) * 2018-08-14 2019-01-25 同济大学 基于用户行为的隐私保护机制研究
    US11112132B2 (en) 2018-08-22 2021-09-07 Bao Tran Systems and methods for monitoring water in a building
    US11995688B2 (en) * 2018-11-20 2024-05-28 Sap Se Session identification metrics through bloom filters
    CN109886029B (zh) * 2019-01-28 2020-09-22 湖北工业大学 基于多项式表示的隐私保护集合交集计算方法与系统
    US20210110456A1 (en) 2019-10-15 2021-04-15 Reflektion, Inc. Email Content Selection System And Method

    Also Published As

    Publication number Publication date
    GB202104663D0 (en) 2021-05-12
    DE112020000092T5 (de) 2021-07-15
    GB2591931A (en) 2021-08-11
    US20210004487A1 (en) 2021-01-07
    US11334684B2 (en) 2022-05-17
    GB202104661D0 (en) 2021-05-12
    WO2021006967A1 (en) 2021-01-14
    US20210004864A1 (en) 2021-01-07
    US20210004481A1 (en) 2021-01-07
    GB2591931B (en) 2023-07-26
    WO2021006966A1 (en) 2021-01-14
    US20220261501A1 (en) 2022-08-18
    GB2592142B (en) 2023-11-01
    CN112789843A (zh) 2021-05-11
    US11790116B2 (en) 2023-10-17
    GB2592142A (en) 2021-08-18
    CN112789617A (zh) 2021-05-11

    Similar Documents

    Publication Publication Date Title
    DE112020000091T5 (de) Systeme und Verfahren zur Wahrung der Privatsphäre durch Bestimmung der Schnittstellen von Sätzen von Benutzererkennungen
    DE202017007517U1 (de) Aggregatmerkmale für maschinelles Lernen
    DE112016002395T5 (de) Zugriffskontrolle für Datenressourcen
    DE112013000865B4 (de) Konsolidieren von unterschiedlichen Cloud-Dienst-Daten und -Verhaltensweisen auf der Grundlage von Vertrauensbeziehungen zwischen Cloud-Diensten
    DE102018004974A1 (de) Globale Vektorempfehlungen auf der Basis von impliziten Interaktions- und Profildaten
    US8819038B1 (en) System and method for performing set operations with defined sketch accuracy distribution
    DE112017002971T5 (de) Effiziente Reduzierung von Ressourcen für die Simulation fermionischer Hamilton-Operatoren aufQuantenhardware
    DE202014011539U1 (de) System zum verteilten Verarbeiten in einer Nachrichtenübermittlungsplattform
    DE112016004178T5 (de) Ereignis-basierte Inhaltsverteilung
    DE202012013427U1 (de) Verknüpfung von Tabellen in einem MapReduce-Verfahren
    DE202017106604U1 (de) Benutzerdefinierte digitale Komponenten
    DE102017207686A1 (de) Einblicke in die belegschaftsstrategie
    DE112012006300T5 (de) Prädiktives verhaltensorientiertes Targeting
    DE112018005087T5 (de) Verbesserung von suchabfragen durch kontextanalyse
    DE202014011541U1 (de) System zum Herstellen einer Vertrauensverknüpfung
    DE202014010829U1 (de) Entfernungsabhängige Herabstufung von Suchrankings
    DE102017009505A1 (de) Erzeugen einer kompakten Videomerkmaldarstellung in einer digitalen Medienumgebung
    DE112021000338B4 (de) Auslagern der statistikerfassung
    DE202016107513U1 (de) Zuordnungsmodell für Inhaltselementumwandlungen
    DE112020000136T5 (de) Browserverlauf mit geringer Entropie für die Quasi-Personalisierung von Inhalten
    DE202015009292U1 (de) Erzeugung eines Aktivitätsflusses
    DE112016001596T5 (de) Systeme und verfahren für die automatische verwaltung der platzierung von content-slots in einer informationsressource
    DE112017000071T5 (de) Organisation von Inhalten auf Basis der Batterienutzung durch die Anzeige der Inhalte auf Geräten
    DE112020000545T5 (de) Deep-forest-modell-entwicklung und -training
    DE112018001711T5 (de) Generator von Unterrichtsnotizen auf Blickrichtungsgrundlage

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed