CN112189199B - 隐私保护数据收集和分析 - Google Patents

隐私保护数据收集和分析 Download PDF

Info

Publication number
CN112189199B
CN112189199B CN201980005181.8A CN201980005181A CN112189199B CN 112189199 B CN112189199 B CN 112189199B CN 201980005181 A CN201980005181 A CN 201980005181A CN 112189199 B CN112189199 B CN 112189199B
Authority
CN
China
Prior art keywords
users
data structure
user
data
value
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.)
Active
Application number
CN201980005181.8A
Other languages
English (en)
Other versions
CN112189199A (zh
Inventor
S.托贝
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 CN112189199A publication Critical patent/CN112189199A/zh
Application granted granted Critical
Publication of CN112189199B publication Critical patent/CN112189199B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

用于在收集和分析用户数据时保护用户隐私的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。方法包括在生成用户数据的隐私增强表示并将该隐私增强表示存储在概率数据结构中之后,丢弃用户数据。方法通过在概率数据结构中插入假阴性来进一步保护用户隐私。方法还包括在数据结构中存储连续值属性。方法包括存储与一个或多个用户属性相关联的日期值。日期值可以指定最后接收一个或多个用户属性的日期。

Description

隐私保护数据收集和分析
技术领域
本说明书涉及数据处理以及在收集和分析用户数据时保护用户隐私。
背景技术
互联网促进了遍布全球的用户和提供商之间的信息的交换和交易。提供商可以使用户可以访问和/或购买的内容(例如,新闻文章、音频等)、产品(例如,消费品)和/或服务(例如,广告服务)通过互联网可获得。通过这些交互,提供商可能会接收到大量的用户数据(假设用户同意这样的数据收集)。提供商可以收集的用户数据的类型的示例包括但不限于用户的位置、用户访问的内容的类型、用户购买的产品和/或服务的类型、用户最后访问提供商的网站的日期以及用户在提供商的产品上花费的金额。
收集和分析这样的用户数据对提供商可能是有益的。在某些情况下,提供商可以聚合多个用户的数据,例如,以改善提供商的运营和/或改善用户体验。例如,提供商可以聚合访问提供商的网站的多个用户的数据,以标识和丢掉从提供商的网站可获得的最少购买的产品。作为另一个示例,提供广告服务的提供商可以使用用户数据来确定特定广告活动的有效性或者选择用户最感兴趣的内容。
发明内容
一般来说,本说明书中描述的主题的一个创新方面可以体现在包括以下操作的方法中:由数据处理装置并从客户端设备接收指定用户的一个或多个属性的用户数据;由数据处理装置使用用户数据和对用户唯一的用户标识符为用户生成唯一条目;由数据处理装置将唯一条目的隐私增强表示插入包括多个用户的唯一条目的多个隐私增强表示的概率数据结构中,包括:由数据处理装置生成唯一条目的散列表示;由数据处理装置基于散列表示更新概率数据结构;在将唯一条目的隐私增强表示插入概率数据结构中之后,由数据处理装置丢弃用户数据;接收请求指定有多少用户具有与在查询中指定的给定属性相匹配的属性的响应的查询;由所述数据处理装置并使用所述概率数据结构获得用户的第一数量,该用户的第一数量包括从所述概率数据结构返回的假阳性(false positive)和与给定属性相匹配的用户的估计数量两者;以及由数据处理装置基于用户的第一数量和概率数据结构的假阳性率来确定用户的估计数量。该方面的其他实施例包括被配置为执行方法的动作的对应系统、设备、装置和计算机程序。计算机程序(例如,指令)可以在计算机存储设备上编码。这些和其他实施例可以各自可选地包括以下特征中的一个或多个。
方法可以包括由数据处理装置获得假阴性(false negative)率;由数据处理装置基于假阴性率确定唯一条目将被插入概率数据结构中;其中,由数据处理装置将唯一条目的隐私增强表示插入包括多个用户的唯一条目的多个隐私增强表示的概率数据结构中包括,仅响应于基于假阴性率确定唯一条目将被插入概率数据结构中,来生成唯一条目的散列表示,并且基于散列表示更新概率数据结构;并且其中,由数据处理装置基于用户的第一数量和概率数据结构的假阳性率来确定用户的估计数量包括,由数据处理装置基于假阴性率来缩放(scale)用户的估计数量,以获得经缩放的用户的估计数量。
方法可以包括随机并使用指定的百分比来标识概率数据结构的一个或多个位置;更新概率数据结构的一个或多个位置的值;以及基于一个或多个位置的数量来缩放经缩放的用户的估计数量。
方法可以包括由数据处理装置并从客户端设备接收指定用户的一个或多个属性的用户数据,其中该一个或多个属性包括连续值属性,该连续值属性包括范围从最小值到最大值的值;由数据处理装置生成与最大值成比例的连续值属性的值的归一化概率;由数据处理装置基于归一化概率确定唯一条目将被插入所述概率数据结构中;其中,由数据处理装置将唯一条目的隐私增强表示插入包括多个用户的唯一条目的多个隐私增强表示的概率数据结构中包括,仅响应于基于归一化概率确定唯一条目将被插入概率数据结构中,来生成唯一条目的散列表示,并且基于散列表示更新概率数据结构;以及接收请求查询中指定的连续值属性的聚合值的查询;由数据处理装置并使用概率数据结构,基于用户的估计数量和最大值来确定连续值属性的聚合值。
由数据处理装置并使用概率数据结构,基于插入用户的估计数量和最大值来确定连续值属性的聚合值包括,使用最大值来缩放插入用户的估计数量,以生成连续值属性的聚合值。
方法可以包括由数据处理装置确定指定用户的一个或多个属性的用户数据的接收日期;由数据处理装置使用指定用户数据的接收日期的数据来调整在概率数据结构中更新的数据;接收请求指定在指定时段内有多少用户具有与给定属性相匹配的属性的响应的查询;使用概率数据结构,对于用户的估计数量确定给定属性的接收日期;以及标识用户的估计数量当中相应的接收日期在指定时段内的用户的数量。
方法可以包括由数据处理装置丢弃概率数据结构中比预定时段更旧的数据。
方法可以包括随机并使用指定的百分比来标识概率数据结构的一个或多个位置;更新概率数据结构的一个或多个位置的值;以及基于一个或多个位置的数量来缩放经缩放的用户的估计数量。
如上所述,收集和分析用户数据对提供商可能是有益的。然而,提供商通常不能以足以执行其分析、同时提供足够的隐私保护的形式保留数据。本说明书讨论了各种技术和系统,以用于保护关于从用户收集的数据的用户隐私,同时仍然以允许提供商执行用于改进提供商的内容提供的分析的形式来维护数据和/或提供定制用户体验。
本说明书中描述的主题的特定实施例可以被实施以实现以下优点中的一个或多个。例如,本说明书中描述的创新减少与存储原始用户数据相关联的隐私风险(例如,数据泄漏或对用户数据的未授权访问)。传统地,提供商可以以用户数据的原始形式存储用户数据,但是这种原始数据存储容易受到未经授权的访问。例如,如果恶意方获得对提供商系统的访问权,则存储在这些系统中的原始用户数据可能很容易被访问。本说明书中描述的创新通过将用户数据的隐私增强表示(诸如用户数据的散列表示)插入到进一步掩饰(mask)用户数据的概率数据结构中来降低这种风险。更具体地说,结合使用用户数据的散列表示和概率数据结构不仅掩饰了数据本身(例如,使用散列表示而不是实际用户数据),还掩饰了具有特定用户数据集合的用户的数量。这是因为概率数据结构在被查询时可以标识实际匹配该查询的多个条目(即,真阳性)以及不匹配该查询的条目(即,假阳性)。因此,即使恶意方能够访问概率数据结构,恶意方也不能肯定地辨别存储在该数据结构中的用户数据,或者甚至也不能肯定地辨别具有指定用户属性组合的用户的实际数量。这是因为概率数据结构揭示了某些用户数据存在于概率数据结构中的可能性或概率。
另一方面,某些用户数据存在于概率数据结构中的可能性或概率可以足以使提供商执行其分析。例如,对于存储用户对特定商店的访问的概率数据结构,提供商不知道哪些条目对应于特定用户。但是,提供商可以使用概率数据结构来估计用户访问商店的次数。此外,因为概率数据结构允许提供商分析用户数据,所以提供商不需要以用户数据的原始格式存储用户数据,从而进一步降低暴露用户数据的数据泄漏的可能性。相关地,本说明书中描述的创新通过允许提供商丢弃原始用户数据(该用户数据可能消耗大量资源)并代替地在概率数据结构中存储该数据的隐私增强表示(这需要更少的资源),来允许显著的资源节约(例如,降低的数据处理资源和/或存储器资源的利用率)。
本说明书中描述的创新还允许在概率数据结构中插入假阴性。如贯穿本文档所使用的,概率数据结构上下文中的假阴性指的是不输出一个或多个匹配条目的概率数据结构的查询,而事实上概率数据结构确实包括这样的匹配条目。传统地,大多数类型的概率数据结构不会生成任何假阴性。结果,恶意方可以能够查询传统概率数据结构以肯定地确定特定用户不在具有某些属性的用户当中。这样,恶意方可以能够基于从传统概率数据结构获得的信息隐式地确定关于用户的信息。例如,恶意方可以查询传统概率数据结构,并且能够确定用户A没有从在特定地理区域销售安全系统的唯一商店(商店B)购买安全系统。本说明书中描述的创新使得能够将假阴性插入概率数据结构中,并且因此能够阻止恶意方试图确定原本可以从传统概率数据结构中获得的关于用户的信息。另一方面,提供商知道假阴性率,并且可以缩放概率数据结构的输出,以确定具有一个或多个特定属性的用户的实际数量,同时仍然提供通过假阴性的方式实现的增强隐私保护。
此外,尽管传统概率数据结构可以存储二进制数据(即,多个1和多个0),但是本说明书中描述的创新有助于在概率数据结构中存储非二进制信息。这使得能够在概率数据结构中存储比存储在传统概率数据结构中的数据更丰富的数据。可以存储在概率数据结构中的非二进制信息类型的示例包括连续值和日期。
本说明书中描述的技术允许存储器使用概率数据结构对连续值(这通常会占用大量存储空间)进行高效存储,从而减少存储连续值所要求的存储空间量。在概率数据结构中存储这样的连续值允许提供商执行比使用传统概率数据结构可能进行的分析更复杂的分析。例如,存储连续值可以允许提供商确定所有这些用户在特定商店花费了多少金钱,而不仅仅是确定有多少用户在特定商店购物。
本说明书中描述的技术还允许在概率数据结构中存储日期。当需要定期收集新的数据点同时用户的其他属性保持相对恒定时,这种技术是有利的。这种技术还能有效地管理概率数据结构的有限空间,这在传统上可能通过重复插入大量用户数据来完全占据。为了有效地管理概率数据结构的有限空间,概率数据结构可以存储用户数据最后更新的日期。因此,可以从数据结构中移除比某个预定义时段更旧的数据。此外,将日期信息存储在概率数据结构中允许提供商执行更复杂的分析,诸如确定当前的用户趋势和需求。例如,如果没有日期信息,提供商可能推断产品A非常受欢迎,因为它被100个用户购买。然而,有了日期信息,提供商可以进一步辨别产品A并不那么受欢迎,因为在过去的六个月中只有两个用户购买了产品A。
本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。本主题的其他特征、方面和优点将从描述、附图和权利要求中变得显而易见。
附图说明
图1是其中在客户端设备和提供商之间交换信息的示例环境的框图。
图2是使用概率数据结构存储和分析用户数据的示例过程的流程图。
图3是使用概率数据结构存储和分析包括连续值属性的用户数据的示例过程的流程图。
图4是在概率数据结构中存储和分析日期值的示例过程的流程图。
图5是示例计算机系统的框图。
各附图中相同的参考编号和名称表示相同的元件。
具体实施方式
本公开涉及在收集和分析用户数据时保护用户隐私的计算机实施的方法和系统。
通过用户和提供商之间的信息的交换和交易,提供商可以接收大量用户数据,诸如,例如,用户访问的内容的类型、用户最后访问提供商的网站的时间以及用户在提供商的产品上花费的金额。如果用户允许提供商收集这样的用户数据,则提供商可以分析该数据以改善提供商的操作和/或改善用户体验。例如,提供商可以使用用户数据来标识观看和/或购买最多的产品,同时丢掉不经常观看或不为提供商生成收入的产品。
如下所述,并且贯穿本说明书中更详细地描述的,提供商可以关于从用户收集的数据保护用户隐私,同时以允许提供商对用户数据执行分析的形式维护数据。
在接收到指定一个或多个属性的用户数据时,提供商使用例如一个或多个散列函数来生成用户数据的隐私增强表示。提供商将用户数据的隐私增强表示存储在概率数据结构中。然后,提供商可以丢弃用户数据,从而即使未经授权的第三方获得了对系统的访问,也防止对该数据的直接访问。
随后,提供商可以查询概率数据结构,以估计具有与在查询中指定的给定属性相匹配的属性的用户的实际数量。作为响应,概率数据结构标识与给定属性相匹配的用户的数量。该数量表示具有给定属性的用户的实际数量以及由概率数据结构标识的假阳性数量。为了标识具有给定属性的用户的实际数量,提供商可以使用概率数据结构的假阳性率来缩放用户的数量。如贯穿本文档所使用地,短语假阳性率是指标识与概率数据结构相关联的预期假阳性率或假阳性数量的值。例如,假阳性率可以是插入概率数据结构中的项的数量和概率数据结构的大小的函数。
在一些实施方式中,通过丢掉一些用户数据条目,可以将假阴性插入概率数据结构中。这可以通过建立假阴性率,然后基于假阴性率丢弃用户数据条目来实现。如贯穿本文档所使用地,短语假阴性率指的是标识与概率数据结构中的数据相关联的假阴性率的值。假阴性率可以被指定或确定(如下文进一步所述)。例如,如果假阴性率为40%,并且如果10个用户数据条目将被插入概率数据结构中,则10个条目中的40%(即,4个条目)被丢弃,同时剩余的条目(10-4=6个条目)被插入概率数据结构中。在随后的查询中,提供商可以能够通过基于假阳性率和假阴性率两者缩放由概率数据结构返回的用户的数量来确定具有给定属性的用户的实际数量。
在一些实施方式中,概率数据结构还可以不只是存储二进制信息(即,多个0和多个1),并且具体地,概率数据结构可以存储连续值。例如,概率数据可以存储特定商店StoreA范围从0美元到1000美元的每笔交易的收入。提供商可以接收用户数据,其中使用连续值来度量一个或多个属性(诸如上述示例中的交易收入)。提供商可以通过将连续值除以属性的最大可能值来生成该属性的归一化概率。在上面的示例中,如果在Store A有10笔交易,每笔400美元(总计4000美元),则归一化概率为400/1000,即0.4或40%。
如上所述(以及下面更详细的描述),提供商生成用户数据的隐私增强表示,并使用该隐私增强表示来更新概率数据结构。不是将10笔交易中的每一个插入概率数据结构中,而是通过归一化概率来缩放插入概率数据结构中的条目的数量。因此,使用上面的示例,十个条目中只有40%,即四个条目,被插入概率数据结构中。
在随后的查询中,提供商可以能够确定存储在概率数据结构中的所有隐私增强用户数据的连续值属性的总量。为了实现这一点,提供商首先通过获得由概率数据结构返回的具有给定属性的用户的数量并且然后使用假阳性率缩放该数量,来估计具有给定属性(例如,用户花钱的特定商店)的用户的实际数量。然后,提供商利用最大值来缩放用户的实际数量(例如,通过将用户的实际数量乘以最大值)。使用上面的示例,提供商可以查询概率数据结构以获得四个条目。然后将条目的数量(四)乘以最大值1000美元,以得到总量4000美元。
在一些实施方式中,提供商可以在概率数据结构中存储概率数据结构中的条目被最后更新的日期。如上所述(以及下面更详细的描述),提供商生成用户数据的隐私增强表示,并使用该隐私增强表示来更新概率数据结构。提供商不是在适当位置处将二进制值插入数据结构中,而是插入日期。随后,基于存储在概率数据结构中的日期,提供商可以通过从概率数据结构中移除比某时段更旧的数据来执行垃圾收集。提供商还可以查询概率数据结构,以标识在指定时段内具有一个或多个属性的用户的数量。
下面参考图1-5更详细地描述这些特征和附加特征。
除了贯穿本文档的描述之外,可以向用户提供控制,该控制允许用户对本文描述的系统、程序或特征是否以及何时能使能够收集用户信息(例如,关于用户的社交网络、社交行为或活动、职业、用户偏好或用户的当前位置的信息)两者,以及是否从服务器向用户发送内容或通信进行选择。此外,在存储或使用某数据之前,可以以一种或多种方式对其进行处理,使得个人可标识信息被移除。例如,可以处理用户的身份,使得不能为用户确定个人可标识信息,或者可以概括获得位置信息的用户的地理位置(诸如到城市、邮政编码或州级),使得不能确定用户的特定位置。因此,用户可以控制收集关于用户的什么信息、如何使用该信息以及向用户提供什么信息。
图1是其中在客户端设备和提供商之间交换信息的示例环境100的框图。示例环境100包括网络108,诸如局域网(local area network,LAN)、广域网(wide area network,WAN)、互联网或其组合。网络108连接提供商130和客户端设备102。示例环境100可以包括许多不同的提供商130和客户端设备102。
客户端设备102是能够通过网络108请求和接收内容和资源的电子设备。示例客户端设备102包括个人计算机、移动通信设备、数字助理设备以及能够通过网络108发送和接收数据的其他设备。客户端设备102通常包括诸如网络浏览器的用户应用,以促进通过网络108发送和接收数据,但是由客户端设备102运行的本地应用也可以促进通过网络108发送和接收内容。
客户端设备102可以与一个或多个提供商130交换信息。提供商130可以被实施为参考图5描述的数据处理装置或计算机系统,或者任何其他适当的处理系统。在一些实施方式中,提供商130包括请求处理器服务器110、一个或多个响应服务器、数据聚合引擎112、数据仓库122和查询服务器120。
如图1的框图所描绘,提供商130被描绘为具有各种子块的单个块。然而,虽然提供商130可以是单个设备或单个设备的集合,但是本说明书设想提供商130也可以是一组设备,或者甚至是进行通信以便向客户端设备提供内容、产品和/或服务以及收集和聚合信息的多个不同的系统。例如,提供商可以包括搜索系统、视频流服务、音频流服务、导航服务、广告服务或任何其他服务中的一个或多个。此外,提供商的一个或多个组件或者由这些组件执行的操作可以由客户端设备所包括的一个或多个组件来执行。例如,提供商130的组件,诸如数据条目生成器114和散列生成器116(将在下面进一步描述)可以位于客户端设备102,并且因此,它们相应的操作(也在下面描述)可以由客户端设备102而不是提供商130来执行。
提供商可以使内容、服务和/或产品在互联网上(例如在提供商的网站或第三方网站上)可获得。客户端设备102可以请求内容、服务和/或产品。提供商130可以在其网站上接收该请求,提供商130可以将该请求传输到提供商130的请求处理器服务器110。可替代地,该请求可以从自客户端设备102接收到该请求的一个或多个第三方直接路由到提供商130的请求处理器服务器110。
请求处理器服务器110分析接收的请求,以确定要提供给客户端设备102的响应的类型。例如,请求处理器服务器110可以从客户端设备102接收购买提供商的网站上列出的产品之一的用户请求。请求处理器服务器110可以解析用户请求以标识适当的属性,然后将这些属性发送给交易服务器124。
可以从用户请求中标识的属性的类型包括提供商为响应用户的请求而可能需要的关于用户的离散数据以及提供商可能想要分析和聚合的数据。除了其他之外,这些属性可以包括产品/服务名称、产品/服务标识符、分配给用户的唯一标识符、地理信息(例如,提交请求的区域、网络位置、用户地址、邮政编码)、请求设备(例如,客户端设备102)的名称(或网络位置)、购买的产品/服务/内容的成本、交易的日期、以及向其请求产品/服务的提供商的位置(例如,通过其接收请求的网站)。属性还可以包括可用于调试目的的信息,诸如进程名称、版本号等。
在上面的示例中,请求处理器服务器110标识属性,诸如用户标识符、产品标识符、运输(shipping)速度、运输信息、产品的购买价格、运输成本以及请求发起的网站(例如,在提供商可以运营多于一个网站的情况下)。
响应于从请求处理器服务器110接收到属性,交易服务器124可以基于接收的属性执行交易。在上述示例中,交易服务器124可以确定产品的总成本,包括产品的运输成本和购买价格。交易服务器124以接收的运输地址并且以期望的运输速度调度产品的运输。一旦被调度,交易服务器124可以向运输中心发送通知来拾取该产品。并行地,交易服务器124可以向用户发送通知,确认交易成功并且用户的订单被确认。
用户可以允许提供商130收集关于该交易的数据。用户可以通过选择加入提供商的数据收集策略来允许这样的数据收集,该提供商的数据收集策略可以在用户与提供商130的关系开始时,例如,在用户签约为提供商的网站的会员时提供给用户。可替代地,可以在交易期间明确请求用户允许这样的数据收集。例如,交易服务器124可以在给客户端设备102的用户的通知中包括收集特定于当前交易的用户数据的请求。用户可以确认提供商130可以收集交易特定信息。
如果用户允许提供商130收集其关于该交易的数据,则请求处理器服务器110将来自用户请求的标识的属性发送到数据聚合引擎112。数据聚合引擎112在存储在数据仓库122中的一个或多个数据结构(例如,122-A、122-B)中生成并存储用户数据的隐私增强表示(如参考图2至4进一步描述的)。
随后,查询服务器120可以接收请求关于存储在数据仓库122中的数据的某信息的查询。例如,该查询可以请求从特定网站(网站B)购买特定产品(产品A)的用户的数量。查询服务器120可以使用属性<产品A>和<网站B>来查询数据仓库中的适当数据结构,以确定查询响应。该响应然后经由查询服务器120被提供给请求者。参考图2至图4进一步描述关于查询的处理的附加细节。
图2是描述使用概率数据结构存储和分析用户数据的示例过程200的流程图。过程200的操作仅出于说明的目的在下面描述。过程200的操作可以由任何适当的设备或系统来执行,例如可以由任何适当的数据处理装置来执行。过程200的操作也可以被实施为存储在计算机可读介质上的指令,当由一个或多个数据处理装置执行该指令时,使得一个或多个数据处理装置执行过程200的操作。下面参考提供商130的组件描述过程200的操作。此外,图2中引用的概率数据结构可以是布隆(Bloom)过滤器,但它也可以是其他类型的概率数据结构,诸如,例如基数统计(HyperLogLog)和计数最小略图(Count-Min sketch)。
提供商130从客户端设备接收指定一个或多个用户属性的用户数据(在202处)。例如,请求处理器服务器110可以从客户端设备102接收购买在提供商的网站之一(网站B)上列出的产品之一(产品A)的用户请求。请求处理器服务器110可以解析用户请求以标识用户请求中的属性。在一些实施方式中,请求处理器服务器110可以使用其维护的现有属性列表来标识用户请求中的相同属性。在本例中,属性包括产品销售(具有产品A的值)和商店(具有网站B的值)。
在上述示例中,请求处理器服务器110标识属性,诸如用户标识符(例如,分配给作为提供商的网站的会员的每个用户的唯一标识符)、产品标识符(例如,分配给提供商的每个产品的唯一标识符)、支付信息、运输速度、运输信息、产品的购买价格、运输成本、以及请求发起的网站(例如,在提供商可以运营多于一个网站的情况下)。如参考图1所描述的,请求处理器服务器110可以标识几个其他类型的属性。请求处理器服务器110向数据聚合引擎112发送标识的属性。
在接收到属性时,数据聚合引擎112可以选择仅存储当前存储在数据仓库122中的一个或多个属性的数据。可替代地,数据聚合引擎112可以选择在用户请求中接收的所有属性用于存储。如果属性还没有包括用户标识符(例如,在用户是提供商的网站上的第一次购物者的情况下),则数据聚合引擎为用户生成唯一标识符。在上面的示例中,数据聚合引擎可以标识以下属性用于存储:用户标识符(943215)、产品标识符(产品A)和发起请求的网站(网站B)。请注意,在此示例中,用户已经具有现有的唯一用户标识符。可替代地,数据聚合引擎112可以使用例如随机数生成器为用户生成唯一标识符。
提供商130使用用户数据和唯一用户标识符为用户生成唯一条目(在204处)。在一些实施方式中,数据条目生成器114以如下形式生成作为元组的唯一条目:<用户ID,属性1,属性2,……,属性n>。在上面的示例中,数据条目生成器114生成以下属性的元组:用户标识符(943215)、产品标识符(产品A)和发起请求的网站(网站B)。因此,生成的元组将是:<943215,产品A,网站B>。生成元组是连接(concatenate)用户标识符和一个或多个属性的多种方式之一。例如,连接该信息的另一种方式包括为用户标识符和为属性中的每一个属性生成散列表示,然后连接用户标识符和属性中的每一个属性的散列表示。
如果提供商130期望在概率数据结构中插入假阴性,则它获得假阴性率(在206处)。例如,数据聚合引擎112可以维护概率数据结构的设计信息,该设计信息可以包括存储在数据仓库122中的每个数据结构的个体的假阴性率。可替代地,提供商130可以为存储在数据仓库122中的所有概率数据结构分配相同的假阴性率。在上面的示例中,假阴性率可以是25%。
提供商130基于假阴性率丢弃用户条目(在208处)。例如,如果假阴性率为25%,并且提供商正在插入100个用户条目,则提供商130可以为用户条目中的每一个用户条目生成唯一条目(例如,以上述方式),然后丢掉这100个用户条目中的25%(即,25个条目)。提供商130保留(例如,在临时存储装置中)剩余的用户条目,即,未被丢弃的用户条目。
提供商130确定在操作204处生成的唯一条目是否在未被丢弃的用户条目当中(在210处)。在一些实施方式中,提供商130可以将在操作204处生成的唯一条目与(在操作208处)对应于未被丢弃的用户条目的唯一条目进行比较。如果提供商130基于该比较没有找到匹配(在212处),则它确定在操作204处生成的唯一条目在被丢弃的条目当中,并且在操作220处丢弃该唯一条目和对应的用户数据(如下所述)。另一方面,如果提供商130找到匹配,则提供商130可以向数据聚合引擎112发送命令,以将元组的隐私增强表示插入到存储在数据仓库122中的概率数据结构中,如下面参考操作214进一步描述的。
可选地,或者除了使用假阴性率来丢弃某些用户条目之外,概率数据结构的某百分比(或数量)的位置也可以被随机设置为值1。
数据聚合引擎112通过生成唯一条目的散列表示(在216处)并基于散列表示更新概率数据结构(在218处),来将唯一条目的隐私增强表示插入概率数据结构中(在214处)。
在一些实施方式中,数据聚合引擎112可以将命令连同(在204处生成的)唯一条目一起发送到散列生成器116,以生成唯一条目的散列表示。散列生成器116可以向一个或多个散列函数输入唯一条目,该一个或多个散列函数中的每一个散列函数输出唯一条目的散列表示。散列生成器可以使用任何可用的散列函数,诸如,例如SuperFastHash、CityHash、MurmurHash、SHA-256和SpookyHash。例如,散列生成器116可以使用三个散列函数(例如,SuperFastHash、CityHash和MurmurHash),这三个散列函数中的每一个散列函数可以生成不同的散列值。
在一些实施方式中,散列生成器116可以向数据接口118发送消息,该消息包括唯一标识符(例如,元组<943215,产品A,网站B>)以及对应于该唯一标识符的三个散列值。数据接口118可以维护存储在数据仓库122中的所有数据结构的列表。数据仓库122可以例行地与数据接口118通信,以向数据接口118提供存储在数据仓库122中的概率数据结构的更新列表。数据接口118使用该列表以及从散列生成器116接收的消息来标识需要更新的适当数据结构。在一些实施方式中,数据接口118解析唯一条目的属性以标识适当的数据结构。例如,对于元组<943215,产品A,网站B>,数据接口可以评估属性(产品A和网站B),以在其维护的数据结构列表中标识存储这些属性的适当数据结构。
在一些实施方式中,数据接口118可以发送消息,该消息包括唯一条目的散列表示以及对应于要更新的数据结构122-A的数据结构标识符。在接收到该消息时,数据仓库122使用消息中的散列值更新概率数据结构122-A。在上述示例中,数据仓库122使用散列值来标识数据结构122-A中的适当位置,以及然后数据仓库将这些位置处的值从0更新为1。
在将唯一条目的隐私增强表示插入概率数据结构中之后,提供商130丢弃用户数据(在220处)。例如,在数据仓库122确认数据结构122-A被成功更新(例如,通过向数据接口118发送确认消息)之后,数据聚合引擎112删除用户数据和唯一条目(即,包括用户标识符和一个或多个属性的元组),从而防止对用户数据本身的进一步访问。数据聚合引擎112还向请求处理器服务器110发送消息,以删除请求处理器服务器110最初发送给数据聚合引擎112的用户数据的任何实例。替代地或附加地,数据聚合引擎112可以重新分配当前存储用户数据的存储器,使得重新分配的存储器位置可以用其他数据来更新。
提供商130生成或接收请求响应的查询,该响应指定有多少用户具有与在查询中指定的给定属性相匹配的属性(在222处)。在一些实施方式中,提供商130的管理员或操作员可以向查询服务器120发送查询。使用上面的示例,查询可以为请求指定用户集合中有多少用户购买了特定产品,产品A的响应。在一些实施方式中,查询可以指定该用户集合及其对应的唯一标识符。在该示例中,由查询服务器120接收的查询可以具有以下格式:gettot_users(product_sales→Product A;store→Website B;user_set={1231,1232,1233,……,1299)。如该查询所示,tot_users指的是用户的总数,“product_sales→Product A”指的是具有期望值Product A的属性“product_sales”,“store→Website B”指的是具有期望值“Website B”的store属性,以及user_set标识作为查询的一部分包括的用户集合,在这种情况下,该用户集合包括具有范围从1231到1299的唯一标识符的用户。可替代地,查询可以不指定用户集合,在这种情况下,查询服务器120包括所有(或一些子集,取决于由适当数据结构中的数据表示的用户标识符)存储的用户标识符(例如,其可以被存储在数据仓库122中的单独的数据结构中)作为查询的一部分。
查询不需要受限于具有特定属性的用户的数量。例如,查询还可以基于存储在概率数据结构中的数据请求关于用户的特定属性或行为的信息。例如,查询可以请求普通用户在特定商店进行购买的数量。在该示例中,可以运行与前面段落中引用的相同的查询,并且可以通过概率数据结构中存储了其数据的用户的数量来缩放响应(例如,将该响应除以概率数据结构中存储了其数据的用户的数量),以获得每个用户的平均购买。作为另一个示例,查询可以请求在特定商店购买的黄色裤子的数量。在本例中,查询将指定集合中的所有用户以及产品类型=裤子和颜色=黄色的属性。
查询服务器120估计与给定属性相匹配的用户的实际数量(在224处)。为了实现这一点,查询服务器120首先使用适当的概率数据结构获得与给定属性相匹配的用户的数量(在226处)。在一些实施方式中,查询服务器120与数据仓库122通信,以获得在查询中请求的数据。数据仓库122可以例行地与查询服务器120通信,以向查询服务器120提供存储在数据仓库122中的概率数据结构的当前列表。查询服务器120使用该列表以及接收的查询来标识需要更新的适当数据结构。在一些实施方式中,查询服务器120可以解析在查询中指定的属性,以标识适当的数据结构。在上面的示例中,查询服务器120使用<product_sales>属性来标识包括该属性的数据结构,在这个示例中,该数据结构是数据结构122-A。
在一些实施方式中,查询服务器120为用户集合中的每个唯一用户标识符生成元组(或其他适当的连接的数据,如上所述)。出于查询目的在元组中的用户标识符和属性的顺序与最初用于将用户条目输入概率数据结构的顺序相同。例如,对于用户标识符1231,适当的元组将是<1231,产品A,网站B>。然后,查询服务器120为元组中的每一个元组生成散列表示(如上所述),并使用所得到的散列值作为数据结构122-A的索引。在该示例中,查询服务器120检查由所得到的散列值指定的索引或位位置中存储的值,并维护对应位值为“1”的所有位置的计数。具有位值“1”的位置的总数表示使用适当的概率数据结构的、与给定属性相匹配的用户的数量。这样,在上述示例中,查询服务器120可以获得从网站B购买产品A的用户的总数40。
查询服务器120基于概率数据结构的假阳性率来缩放在步骤226处确定的用户的数量,以估计用户的实际数量(即,概率数据结构中的真阳性)(在228处)。在一些实施方式中,可以使用以下公式来估计真阳性:P-(FPR*TN)/(1-FPR),其中P表示从查询概率数据结构返回的值(如前面的段落中的),FPR表示概率数据结构的假阳性率,并且TN表示真阴性(也可以由用户的数量减去P来表示)。在上面的示例中,如果其数据被存储在概率数据结构中的用户的数量是100,那么真阴性TN是60,即100(用户的总数)-40(通过查询数据结构返回的用户的总数)。使用上述公式,假设假阳性率为20%,真阳性的数量=40-(20%*60)/(1–20%)=40-(12)/0.8=25。因此,如果该示例中的概率数据结构不包括任何假阴性,则提供商130确定具有与给定属性(例如,“产品A”和“网站B”)相匹配的属性的用户的实际数量的估计是25。
然而,如果概率数据结构包括假阴性,则需要基于先前在步骤206处获得的假阴性率进一步缩放在操作228处确定的缩放值。在上面的示例中,在步骤228处确定的经缩放的用户数量是25,并且假阴性率是12%。使用假阴性率12%,查询服务器120丢掉12%的用户并存储剩余的88%(即100%-12%)的用户。为了实现这一点,查询服务器120通过25个用户(在228处确定)的该数量按88%来调整这25个用户,以获得28.4个用户。因此,28.4表示具有与在查询中标识的属性(在本例中为“产品A”)相匹配的指定属性的用户的实际数量的估计。
如果除了使用假阴性率来丢弃某些用户条目之外,概率数据结构的某百分比的位置被设置为值1,则相同的百分比可以被用于使用该百分比来进一步缩放在先前段落中确定的用户的实际数量,以获得用户的实际数量。
图3是描述使用概率数据结构存储和分析包括连续值属性的用户数据的示例过程300的流程图。过程300的操作仅出于说明的目的在下面描述。过程300的操作可以由任何适当的设备或系统来执行,例如可以由任何适当的数据处理装置来执行。过程300的操作也可以被实施为存储在计算机可读介质上的指令,当由一个或多个数据处理装置运行该指令时,使得一个或多个数据处理装置执行过程300的操作。下面参考提供商130的组件描述过程300的操作。此外,图3中引用的概率数据结构可以是布隆过滤器,但它也可以是其他类型的概率数据结构,诸如,例如基数统计和计数最小略图。
提供商130从客户端设备接收指定一个或多个用户属性的用户数据,该一个或多个用户属性包括连续值属性(在302处)。例如,请求处理器服务器110可以从一个或多个客户端设备102接收购买在提供商的网站之一(网站B)上以400美元列出的特定产品(产品A)的10个用户请求。请求处理器服务器110可以解析用户请求以标识用户请求中的属性。在一些实施方式中,请求处理器服务器110可以使用其维护的现有属性列表来标识用户请求中的相同属性。在此示例中,属性包括产品销售(具有产品A的值)、产品价格(其是具有值300的连续值属性)和商店(具有网站B的值)。
提供商130使用属性的最大值为连续值属性的值生成归一化概率(在304处)。例如,提供商130可以通过评估网站B上列出的所有产品的产品价格来确定产品价格范围从0美元到1000美元。在本例中,产品价格属性的最大值为1000。提供商130通过将400除以1000,使用最大值1000来归一化连续值400。得到的归一化概率为40%或0.4(即,400/1000)。
提供商130使用用户数据和唯一用户标识符为用户生成唯一条目(在306处)。在一些实施方式中,数据条目生成器114生成具有以下形式的唯一条目作为元组(或如上所述的其他形式的连接的信息):<用户ID,属性1,属性2,……,属性n>。在上面的示例中,数据条目生成器114生成以下属性的元组:用户标识符(943215)、产品标识符(产品A)和发起请求的网站(网站B)。因此,元组将为如下:<943215,产品A,网站B>。注意,数据条目生成器114不包括连续值属性(其在上述示例中是产品价格)作为元组的一部分。
提供商130将唯一条目的隐私增强表示插入概率数据结构中(在308处)。在一些实施方式中,这可以以四个步骤来执行。
第一,提供商130基于归一化概率标识用户条目(在310处)。在上面的示例中,归一化概率是40%,要插入的条目的数量是10。因此,提供商130可以为用户条目中的每一个用户条目生成唯一条目(如上所述并参考图2),然后标识10个用户条目中的40%(即4个条目)以插入概率数据结构中。标识的用户条目可以被存储在临时存储装置(例如,高速缓存)中。
第二,提供商130确定在操作306处生成的唯一条目是否在(310处)标识的用户条目当中。在一些实施方式中,提供商130可以将在操作306处生成的唯一条目与在310处标识的唯一条目进行比较。如果提供商130基于该比较没有找到匹配(在314处),则它确定在操作306处生成的唯一条目不在所标识的条目中,并且在操作316处丢弃该唯一条目和对应的用户数据(如下所述)。另一方面,如果提供商130找到匹配,则提供商130可以向数据聚合引擎112发送命令,以将元组的隐私增强表示插入到存储在数据仓库122中的概率数据结构中,如下面参考操作330进一步描述的。
第三,提供商130生成唯一条目的散列表示(在330处),例如,如参考过程200的对应步骤所述。接下来,提供商130基于散列表示更新概率数据结构(在332处),例如,如参考过程200的对应步骤所述。在上述示例中,如参考过程200所述,散列函数为元组<943215,产品A,网站B>生成三个散列值,这随后导致基于散列值来从0到1设置数据结构122-A的适当位置。
在将唯一条目的隐私增强表示插入概率数据结构中之后,提供商130以与参考过程200的对应步骤所描述的相同方式丢弃用户数据(在316处)。
查询服务器120接收请求连续值属性的聚合值的查询(在318处)。在一些实施方式中,提供商130的网站管理员或操作员可以向查询服务器120发送查询。使用上面的示例,查询可以请求指定用户在网站B处在产品A上花费的总金钱的响应。在该示例中,由查询服务器120接收的查询可以具有以下格式:get tot_revenue(product→Product A,store→Website B,user_set→{1231,1232,1233,……,1299})。如该查询所示,tot_revenue指的是总收入或花费的金钱,“product→Product A”指的是具有期望值Product A的属性“product”,“store→Website B”指的是具有期望值“Website B”的属性“store”,以及user_set={1231,1232,1233,……,1299}标识作为查询的一部分包括的用户集合,在这种情况下,该用户集合包括具有范围从1231到1299的唯一标识符的用户。可替代地,查询可以不指定用户集合,在这种情况下,查询服务器120包括所有(或一些子集,取决于由适当数据结构中的数据表示的用户标识符)存储的用户标识符(例如,其可以被存储在数据仓库122中的单独的数据结构中)作为查询的一部分。
提供商130确定连续值属性的聚合值(在320处)。在一些实施方式中,该操作可以包括三个步骤。第一,提供商130使用概率数据结构获得与给定属性相匹配的用户的数量(在322处)。该操作可以以类似于参考过程200的对应步骤所描述的方式来执行。
第二,提供商130以类似于参考过程200中的对应步骤描述的方式,基于概率数据结构的假阳性率(以及可选的假阴性率)来缩放用户的数量(在324处)。
第三,提供商130使用最大值来缩放插入的用户的实际数量(在328处)。在上面的示例中,提供商130将插入的用户的实际数量的估计(即,通过查询数据结构并使用假阳性率进行缩放而获得的真阳性)乘以最大值。在上面的示例中,插入的用户的实际数量是4,当乘以最大值1000时,得到总值4000(即4*1000)。因此,4000美元表示连续价值属性的聚合值,在这种情况下,它是网站B处的产品A的总收入或用户在网站B处在产品A上花费的总金额。
图4是描述在概率数据结构中存储和分析日期值的示例过程400的流程图。过程400的操作仅出于说明的目的在下面描述。过程400的操作可以由任何适当的设备或系统来执行,例如可以由任何适当的数据处理装置来执行。过程400的操作也可以被实施为存储在计算机可读介质上的指令,当由一个或多个数据处理装置运行该指令时,使得一个或多个数据处理装置执行过程400的操作。下面参考提供商130的组件描述过程400的操作。此外,图4中引用的概率数据结构可以是布隆过滤器,但它也可以是其他类型的概率数据结构,诸如,例如基数统计和计数最小略图。
提供商130以类似于参考过程200的对应步骤描述的方式从客户端设备接收指定一个或多个用户属性的用户数据(在402处)。
提供商130确定用户数据的接收日期(在404处)。数据聚合引擎112可以例如从请求处理器服务器的时间戳获得当前日期。数据聚合引擎112还可以从其他来源获得当前日期,诸如,例如从可以与从客户端设备102接收的请求一起发送的日期字段。
提供商130使用用户数据和唯一用户标识符为用户生成唯一条目(在406处)。该操作可以以类似于参考过程200的对应步骤所描述的方式来执行。
提供商130将唯一条目的隐私增强表示插入概率数据结构中(在408处)。除了一个例外,该操作可以以类似于参考过程200的对应步骤所描述的方式来执行。代替将概率数据结构的位置更新为“1”,该位置被更新为在步骤404处确定的日期值。
在将唯一条目的隐私增强表示插入概率数据结构中之后,提供商130丢弃用户数据(在410处)。该操作与上面参考过程200的对应步骤描述的方式相同。
提供商130调整概率数据结构中比预定时段更旧的数据(在412处)。在一些实施方式中,提供商130丢弃比预定时段(例如,一天、一周、一年或一些其他指定的时段)更旧的用户数据(在412处)。例如,提供商130可以具有代理(agent),该代理例行地(例如,以指定的时间间隔)检查存储在数据仓库122中的概率数据结构中的值是否超过七天。提供商130可以使用当前日期来标识七天前的日期,然后查找日期早于该日期的所有条目。对于这些条目,代理可以将值改变为0。
查询服务器120接收请求响应的查询,所述响应指定在指定时段内有多少用户具有与在查询中指定的给定属性相匹配的属性(在414处)。在一些实施方式中,提供商130的管理员或操作员可以向查询服务器120发送查询。使用上面的示例,查询可以请求指定在过去6个月中购买产品A的用户的数量的响应。在该示例中,由查询服务器120接收的查询可以具有以下格式:get tot_users(product→Product A,time=<6,user_set={1231,1232,……,12xx})。如该查询所示,tot_users指的是用户的总数,“product→Product A”指的是具有期望值“Product A”的属性“购买的产品”,“time=<6”指的是具有小于或等于“6”(在本例中为6个月)的值的属性“时间”,以及user_set标识包括在该查询中的用户。
提供商130估计具有与在查询中指定的属性相匹配的属性的用户的实际数量(在416处)。该操作可以以类似于过程200的对应步骤的方式来执行。
提供商130确定在指定时段内与给定属性相匹配的用户的实际数量的估计(在418处)。在一些实施方式中,对于在步骤416处估计的每个用户的实际数量,提供商130首先查找存储在概率数据结构中的对应日期值。在查询请求在过去6个月中购买产品A的用户的数量的上面示例中,查询服务器120查找在步骤416中标识的所有实际用户的日期值。查询服务器120可以使用当前日期来标识在当前日期之前6个月的日期。因此,如果当前日期是2019年1月1日,则查询服务器120可以将2018年7月1日确定为6个月前的日期。然后,查询服务器120评估实际用户的日期值是否超过2018年7月1日,并保持具有2018年7月1日之后的对应日期值的条目的计数。查询服务器120调整该计数以考虑假阳性率(以及可选的假阴性率),从而估计在过去6个月中购买产品A的用户的数量。
图5是可用于执行上述操作的示例计算机系统500的框图。系统500包括处理器510、存储器520、存储设备530和输入/输出设备540。组件510、520、530和540中的每一个可以例如使用系统总线550互连。处理器510能够处理用于在系统500内运行的指令。在一个实施方式中,处理器510是单线程处理器。在另一实施方式中,处理器510是多线程处理器。处理器510能够处理存储在存储器520中或存储设备530上的指令。
存储器520存储系统500内的信息。在一个实施方式中,存储器520是计算机可读介质。在一个实施方式中,存储器520是易失性存储器单元。在另一实施方式中,存储器520是非易失性存储器单元。
存储设备530能够为系统500提供大容量存储。在一个实施方式中,存储设备530是计算机可读介质。在各种不同的实施方式中,存储设备530可以包括例如硬盘设备、光盘设备、由多个计算设备在网络上共享的存储设备(例如,云存储设备)、或者一些其他大容量存储设备。
输入/输出设备540为系统500提供输入/输出操作。在一个实施方式中,输入/输出设备540可以包括网络接口设备,例如以太网卡、串行通信设备,例如和RS-232端口,和/或无线接口设备,例如和802.11卡中的一个或多个。在另一实施方式中,输入/输出设备可以包括被配置为接收输入数据并将输出数据发送到其他输入/输出设备(例如键盘、打印机和显示设备560)的驱动器设备。然而,也可以使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管在图5中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式可以在其他类型的数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等效物,或者在它们中的一个或多个的组合中实施。
介质不一定对应于文件。介质可以存储在保存其他文档的文件的一部分中,存储在专用于所讨论的文档的单个文件中,或者存储在多个协调的文件中。
本说明书中描述的主题和操作的实施例可以在数字电子电路中实施,或者在计算机软件、固件或硬件中实施,包括本说明书中公开的结构及其结构等效物,或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以被实施为一个或多个计算机程序,即一个或多个计算机程序指令的模块,其被编码在计算机存储介质(或多个介质)上,以用于由数据处理装置执行或控制数据处理装置的操作。可替换地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息,用于传输到合适的接收器装置以由数据处理装置运行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)中。
本说明书中描述的操作可以被实施为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他来源接收的数据执行的操作。
术语“数据处理装置”包括用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。该装置可以包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建运行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时间环境、虚拟机或它们中的一个或多个的组合的代码。该装置和运行环境可以实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言、声明性或过程性语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适于在计算环境中使用的其他单元。计算机程序可以,但不是必须,对应于文件系统中的文件。程序可以被存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。计算机程序可以被部署为在一台计算机或位于一个站点或跨多个站点分布并通过通信网络互连的多台计算机上运行。
本说明书中描述的过程和逻辑流程可以由运行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也可以由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路))来执行,并且装置也可以被实施为该专用逻辑电路。
举例来说,适合于运行计算机程序的处理器包括通用和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。一般来说,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或者可操作地耦接到该一个或多个大容量存储设备,以从该一个或多个大容量存储设备接收数据或向该一个或多个大容量存储设备传递数据,或者两者。然而,计算机不需要这样的设备。此外,计算机可以嵌入到另一个设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如通用串行总线(USB)闪存驱动器),仅举几个示例。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入其中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实施,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及键盘和指示设备,例如鼠标或轨迹球,用户可以通过该键盘和指示设备向计算机提供输入。也可以使用其他种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式接收,包括声学、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如通过响应于从web浏览器接收的请求,将网页发送到用户的客户端设备上的web浏览器。
本说明书中描述的主题的实施例可以在计算系统中实施,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或Web浏览器的客户端计算机,用户可以通过该图形用户界面或Web浏览器与本说明书中描述的主题的实施方式进行交互,或者包括一个或多个这样的后端组件、中间件组件或前端组件的任意组合。系统的组件可以通过数字数据通信的任何形式或介质(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互连网络(例如互联网)和对等网络(例如自组织对等网络)。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由运行在相应的计算机上并且彼此具有客户端-服务器关系的计算机程序产生的。在一些实施例中,服务器将数据(例如,HTML页面)传输到客户端设备(例如,出于向与客户端设备交互的用户显示数据和从用户接收用户输入的目的)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
尽管本说明书包含许多具体的实施方式细节,但这些不应被解释为对任何发明或可能要求保护的范围的限制,而是对特定发明的特定实施例特定的特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实施。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合来实施。此外,尽管特征可以在上面被描述为在某些组合中起作用,甚至最初也是这样要求保护的,但是在某些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,尽管在附图中以特定的顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或相继顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都要求这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
因此,已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。在一些情况下,权利要求中记载的动作可以以不同的顺序执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。

Claims (21)

1.一种用于在接收和分析用户数据时保护用户隐私的计算机实施的方法,包括:
由数据处理装置从客户端设备接收指定用户的一个或多个属性的用户数据;
由所述数据处理装置使用所述用户数据和对所述用户唯一的用户标识符为所述用户生成唯一条目;
由所述数据处理装置基于以下中的至少一个确定所述唯一条目将被插入概率数据结构中:假阴性率或连续值属性的值的归一化概率,其中,连续值属性包括在一个或多个属性中;
响应于基于假阴性率或归一化概率确定唯一条目将被插入概率数据结构中,由所述数据处理装置将所述唯一条目的隐私增强表示插入包括多个用户的唯一条目的多个隐私增强表示的概率数据结构中,包括:
由所述数据处理装置生成所述唯一条目的散列表示;
由所述数据处理装置基于所述散列表示更新所述概率数据结构;
在将所述唯一条目的隐私增强表示插入所述概率数据结构中之后,由所述数据处理装置丢弃所述用户数据;
接收请求响应的查询,所述响应指定有多少用户具有与在查询中指定的给定属性相匹配的属性;
由所述数据处理装置使用所述概率数据结构获得用户的第一数量,所述用户的第一数量包括从所述概率数据结构返回的假阳性和与所述给定属性相匹配的用户的估计数量两者;以及
由所述数据处理装置基于所述用户的第一数量和所述概率数据结构的假阳性率来确定用户的估计数量。
2.根据权利要求1所述的计算机实施的方法,
其中,由所述数据处理装置基于所述用户的第一数量和所述概率数据结构的假阳性率来确定用户的估计数量包括,由所述数据处理装置基于所述假阴性率来缩放所述用户的估计数量,以获得经缩放的用户的估计数量。
3.根据权利要求1所述的计算机实施的方法,其中:连续值属性包括范围从最小值到最大值的值;
所述方法还包括:
由所述数据处理装置生成与所述最大值成比例的连续值属性的值的归一化概率;
接收查询,所述查询请求所述查询中指定的连续值属性的聚合值;
由所述数据处理装置使用所述概率数据结构,基于所述用户的估计数量和最大值来确定所述连续值属性的聚合值。
4.根据权利要求3所述的计算机实施的方法,其中:
由所述数据处理装置使用所述概率数据结构,基于插入用户的估计数量和最大值来确定所述连续值属性的聚合值包括,使用所述最大值来缩放插入用户的估计数量,以生成所述连续值属性的聚合值。
5.根据权利要求1所述的计算机实施的方法,还包括:
由所述数据处理装置确定指定用户的一个或多个属性的用户数据的接收日期;
由所述数据处理装置使用指定所述用户数据的接收日期的数据来调整在所述概率数据结构中更新的数据;
接收请求响应的查询,所述响应指定在指定时段内有多少用户具有与给定属性相匹配的属性;
使用所述概率数据结构,对于所述用户的估计数量确定所述给定属性的接收日期;以及
标识所述用户的估计数量当中相应的接收日期在所述指定时段内的用户的数量。
6.根据权利要求5所述的计算机实施的方法,还包括:
由所述数据处理装置丢弃所述概率数据结构中比预定时段更旧的数据。
7.根据权利要求2所述的计算机实施的方法,还包括:
随机并使用指定的百分比标识所述概率数据结构的一个或多个位置;
更新所述概率数据结构的所述一个或多个位置的值;以及
基于所述一个或多个位置的数量来缩放所述经缩放的用户的估计数量。
8.一种用于在接收和分析用户数据时保护用户隐私的系统,包括:
存储指令的一个或多个存储器设备;以及
一个或多个数据处理装置,被配置为与所述一个或多个存储器设备交互,并且在所述指令的运行时,执行操作,所述操作包括:
从客户端设备接收指定用户的一个或多个属性的用户数据;
使用所述用户数据和对所述用户唯一的用户标识符为所述用户生成唯一条目;
由所述数据处理装置基于以下中的至少一个确定所述唯一条目将被插入概率数据结构中:假阴性率或连续值属性的值的归一化概率,其中,连续值属性包括在一个或多个属性中;
响应于基于假阴性率或归一化概率确定唯一条目将被插入概率数据结构中,将所述唯一条目的隐私增强表示插入包括多个用户的唯一条目的多个隐私增强表示的概率数据结构中,包括:
生成所述唯一条目的散列表示;
基于所述散列表示更新所述概率数据结构;
在将所述唯一条目的隐私增强表示插入所述概率数据结构中之后,丢弃所述用户数据;
接收请求响应的查询,所述响应指定有多少用户具有与在查询中指定的给定属性相匹配的属性;
使用所述概率数据结构获得用户的第一数量,所述用户的第一数量包括从所述概率数据结构返回的假阳性和与所述给定属性相匹配的用户的估计数量两者;以及
基于所述用户的第一数量和所述概率数据结构的假阳性率来确定用户的估计数量。
9.根据权利要求8所述的系统,
其中,基于所述用户的第一数量和所述概率数据结构的假阳性率来确定用户的估计数量包括,由数据处理装置基于所述假阴性率来缩放用户的估计数量,以获得经缩放的用户的估计数量。
10.根据权利要求8所述的系统,其中:
连续值属性包括范围从最小值到最大值的值;
其中,所述一个或多个数据处理装置被配置为执行操作,所述操作还包括:
生成与所述最大值成比例的连续值属性的值的归一化概率;
接收查询,所述查询请求所述查询中指定的连续值属性的聚合值;
使用所述概率数据结构,基于所述用户的估计数量和最大值来确定所述连续值属性的聚合值。
11.根据权利要求10所述的系统,其中,使用所述概率数据结构,基于插入用户的估计数量和最大值来确定所述连续值属性的聚合值包括,使用所述最大值来缩放插入用户的估计数量,以生成所述连续值属性的聚合值。
12.根据权利要求8所述的系统,其中,所述一个或多个数据处理装置被配置为执行操作,所述操作还包括:
确定指定用户的一个或多个属性的用户数据的接收日期;
使用指定所述用户数据的接收日期的数据来调整在所述概率数据结构中更新的数据;
接收请求响应的查询,所述响应指定在指定时段内有多少用户具有与给定属性相匹配的属性;
使用所述概率数据结构,对于所述用户的估计数量确定所述给定属性的接收日期;以及
标识用户的估计数量当中相应的接收日期在所述指定时段内的用户的数量。
13.根据权利要求12所述的系统,其中,所述一个或多个数据处理装置被配置为执行操作,所述操作还包括:丢弃所述概率数据结构中比预定时段更旧的数据。
14.根据权利要求9所述的系统,其中,所述一个或多个数据处理装置被配置为执行操作,所述操作还包括:
随机并使用指定的百分比标识所述概率数据结构的一个或多个位置;
更新所述概率数据结构的所述一个或多个位置的值;以及
基于所述一个或多个位置的数量来缩放所述经缩放的用户的估计数量。
15.一种非暂时性计算机可读介质,其存储指令,当被一个或多个数据处理装置运行时,所述指令使得所述一个或多个数据处理装置执行操作,所述操作包括:
从客户端设备接收指定用户的一个或多个属性的用户数据;
使用所述用户数据和对所述用户唯一的用户标识符为所述用户生成唯一条目;
由所述数据处理装置基于以下中的至少一个确定所述唯一条目将被插入概率数据结构中:假阴性率或连续值属性的值的归一化概率,其中,连续值属性包括在一个或多个属性中;
响应于基于假阴性率或归一化概率确定唯一条目将被插入概率数据结构中,将所述唯一条目的隐私增强表示插入包括多个用户的唯一条目的多个隐私增强表示的概率数据结构中,包括:
生成所述唯一条目的散列表示;
基于所述散列表示更新所述概率数据结构;
在将所述唯一条目的隐私增强表示插入所述概率数据结构中之后,丢弃所述用户数据;
接收请求响应的查询,所述响应指定有多少用户具有与在查询中指定的给定属性相匹配的属性;
使用概率数据结构获得用户的第一数量,所述用户的第一数量包括从所述概率数据结构返回的假阳性和与所述给定属性相匹配的用户的估计数量两者;以及
基于所述用户的第一数量和所述概率数据结构的假阳性率来确定用户的估计数量。
16.根据权利要求15所述的非暂时性计算机可读介质,
其中,基于所述用户的第一数量和所述概率数据结构的假阳性率来确定用户的估计数量包括,由数据处理装置基于所述假阴性率来缩放用户的估计数量,以获得经缩放的用户的估计数量。
17.根据权利要求15所述的非暂时性计算机可读介质,
其中,连续值属性包括范围从最小值到最大值的值,
其中,所述指令使得所述一个或多个数据处理装置执行操作,所述操作包括:
生成与所述最大值成比例的连续值属性的值的归一化概率;
接收查询,所述查询请求所述查询中指定的连续值属性的聚合值;
使用所述概率数据结构,基于所述用户的估计数量和最大值来确定所述连续值属性的聚合值。
18.根据权利要求17所述的非暂时性计算机可读介质,其中,使用所述概率数据结构,基于插入用户的估计数量和最大值来确定所述连续值属性的聚合值包括,使用所述最大值来缩放插入用户的估计数量,以生成所述连续值属性的聚合值。
19.根据权利要求15所述的非暂时性计算机可读介质,其中,所述指令使得所述一个或多个数据处理装置执行操作,所述操作还包括:
确定指定用户的一个或多个属性的用户数据的接收日期;
使用指定所述用户数据的接收日期的数据来调整在所述概率数据结构中更新的数据;
接收请求响应的查询,所述响应指定在指定时段内有多少用户具有与给定属性相匹配的属性;
使用所述概率数据结构,对于用户的估计数量确定所述给定属性的接收日期;以及
标识用户的估计数量当中相应的接收日期在所述指定时段内的用户的数量。
20.根据权利要求19所述的非暂时性计算机可读介质,其中,所述指令使得所述一个或多个数据处理装置执行操作,所述操作还包括:丢弃所述概率数据结构中比预定时段更旧的数据。
21.根据权利要求16所述的非暂时性计算机可读介质,其中,所述指令使得所述一个或多个数据处理装置执行操作,所述操作还包括:
随机并使用指定的百分比标识所述概率数据结构的一个或多个位置;
更新所述概率数据结构的所述一个或多个位置的值;以及
基于所述一个或多个位置的数量来缩放所述经缩放的用户的估计数量。
CN201980005181.8A 2019-05-01 2019-05-01 隐私保护数据收集和分析 Active CN112189199B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/030234 WO2020222840A1 (en) 2019-05-01 2019-05-01 Privacy preserving data collection and analysis

Publications (2)

Publication Number Publication Date
CN112189199A CN112189199A (zh) 2021-01-05
CN112189199B true CN112189199B (zh) 2024-03-12

Family

ID=66542544

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980005181.8A Active CN112189199B (zh) 2019-05-01 2019-05-01 隐私保护数据收集和分析

Country Status (4)

Country Link
US (2) US11314895B2 (zh)
EP (2) EP3750098B1 (zh)
CN (1) CN112189199B (zh)
WO (1) WO2020222840A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11568078B2 (en) * 2020-07-21 2023-01-31 Constella Intelligence, Inc. Obfuscation of queries and responses in a security data search system
US20220414258A1 (en) * 2021-01-15 2022-12-29 Google Llc Cross-domain frequency filters for fraud detection
US11966878B2 (en) 2022-06-01 2024-04-23 VendEx Solutions, Inc. Multi-entity platform using uniform labeling of data products and services

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106471539A (zh) * 2014-08-14 2017-03-01 谷歌公司 用于混淆受众测量的系统和方法
CN107871130A (zh) * 2016-09-27 2018-04-03 顶级公司 图像处理

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021488A1 (en) 2003-07-21 2005-01-27 Rakesh Agrawal Mining association rules over privacy preserving data
WO2008121824A1 (en) * 2007-03-29 2008-10-09 Initiate Systems, Inc. Method and system for data exchange among data sources
US9256686B2 (en) * 2008-09-15 2016-02-09 International Business Machines Corporation Using a bloom filter in a web analytics application
US9189650B2 (en) * 2012-07-31 2015-11-17 J.D. Power And Associates Privacy preserving method for summarizing user data
US9298808B2 (en) * 2013-05-24 2016-03-29 Symantec Corporation Encrypted search acceleration
US10108817B2 (en) 2014-09-26 2018-10-23 Microsoft Technology Licensing, Llc Privacy-preserving cookies for personalization without user tracking
US10114900B2 (en) * 2015-03-23 2018-10-30 Virtru Corporation Methods and systems for generating probabilistically searchable messages
US11281639B2 (en) * 2015-06-23 2022-03-22 Microsoft Technology Licensing, Llc Match fix-up to remove matching documents

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106471539A (zh) * 2014-08-14 2017-03-01 谷歌公司 用于混淆受众测量的系统和方法
CN107871130A (zh) * 2016-09-27 2018-04-03 顶级公司 图像处理

Also Published As

Publication number Publication date
EP4047500A1 (en) 2022-08-24
EP3750098B1 (en) 2021-12-01
US11720708B2 (en) 2023-08-08
US11314895B2 (en) 2022-04-26
CN112189199A (zh) 2021-01-05
US20220207180A1 (en) 2022-06-30
EP4047500B1 (en) 2023-03-15
WO2020222840A1 (en) 2020-11-05
US20200349277A1 (en) 2020-11-05
EP3750098A1 (en) 2020-12-16

Similar Documents

Publication Publication Date Title
US20230098818A1 (en) Systems and methods for conducting more reliable assessments with connectivity statistics
US20210174440A1 (en) Providing virtual markers based upon network connectivity
US11720708B2 (en) Privacy preserving data collection and analysis
US9946897B2 (en) Data privacy management system and method
JP5587414B2 (ja) 視聴者セグメント推定
US8600921B2 (en) Predicting user navigation events in a browser using directed graphs
US8655819B1 (en) Predicting user navigation events based on chronological history data
US20170206269A1 (en) Trust scores and/or competence ratings of any entity
WO2015055067A1 (en) Method and apparatus for pushing messages
WO2019024496A1 (zh) 企业推荐方法及应用服务器
US11087309B2 (en) Location detection based on IP addresses and transactions
CN112037026A (zh) 自动化异常交易工单处理方法、装置和系统
US8135608B2 (en) Contact stream optimization considering FEC and CC constraints
US20140195487A1 (en) Request de-duplication for enterprise service bus
CN113761565A (zh) 数据脱敏方法和装置
EP4038532B1 (en) Secured management of data distribution restrictions
US20220374546A1 (en) Privacy preserving data collection and analysis
CN111143546A (zh) 一种获得推荐语的方法、装置及电子设备
US20220365974A1 (en) Computer-based systems and/or computing devices configured for assembling and executing directed acyclic graph recipes for assembling feature data for pattern recognition models
CN113743975A (zh) 一种广告效果处理方法和装置
US20200279278A1 (en) Method and system for combining offline and online identities with associated purchasing intention indicators in view of a geographic location

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant