大型结构化数据集的统计指纹识别的制作方法

文档序号:20889306发布日期:2020-05-26 17:47阅读:359来源:国知局
本发明的领域是数据水印和指纹识别,尤其是结构化大数据集的统计指纹识别。
背景技术
::专有数据文件(例如,.csv、.sql、.txt等类型的文件)或以json或xml数据提要(feed)中的文本数据的有意或无意泄漏代表巨大的损坏潜在可能。现有的解决方案可用于防止当数据驻留在公司防火墙后时的丢失。像安全http或ssl协议之类的解决方案防止当数据(无论是作为文件还是作为数据提要)离开防火墙并穿越因特网到达合法接收者(此处描述为“受信任的第三方”或ttp)时丢失的风险。存在其他解决方案以当在原始源(数据所有者)的防火墙之外使用文件时声明并记录文件所有权。这些数据水印和指纹识别解决方案是合需的,因为在盗窃或其他损失的情况下它们提供了所有权证据。数据水印和指纹识别构成用于证明数据文件所有权的两类过程。这两种办法并不总是相互排斥的,但是获得一般区别。文件水印包括对数据进行更改(通常较小),以创建对于用户难以识别的唯一模式。根据指定规则更改数字(连续)变量的最低有效位是一个简单的示例。创建数据文件的指纹不涉及对数据的更改;相反,数据的特性被用于创建可以在事实之后被识别的签名。一个简单的指纹可能基于文件中变量的统计特性。指纹在技术上是水印的子集或替代,因此指纹方法也被称为基于内容的零水印技术。它们基于数据文件的内容,并且不涉及任何数据更改,因此引用了“零水印”。数据指纹识别是跨各种文件格式(包括文本文档、音频和视频)的科学工作的已知领域。数据库的数据指纹识别也是已知的工作领域。指纹识别尤其是学术研究中的活跃领域,像斯坦福大学等机构使用基于n元模型(n-gram)的指纹识别办法在文档指纹识别研究中发表了大量工作。在斯坦福大学的研究中,该技术涉及将文本和文档转换为较短的文本字符串,该文本字符串随后可被用作较大文本或文档的唯一标识符。这项工作也已经扩展到包含个人身份信息(pii)的形式,其中该算法可以编码和检索诸如社会安全号码之类的敏感信息。通过在网络文件传输期间检测敏感信息,增强了文档安全性。还已经报告了许多因域而异的扩展。在包含生物学数据的文档中,数据指纹识别的概率方法已被用于文件比较。尽管在该领域已经进行了工作,但是仍然需要改进文档指纹识别,特别是对于其中文本高度组织化的大型基于文本的数据集(诸如,数据库、数据提要等)而言。本背景部分中提到的参考不被承认是相对于本发明的现有技术。技术实现要素:本发明使用规范统计方法来定义数据集中的数据的内部结构,以提取存在的描述性统计模式。定义大型数据集或其组成子集的统计性质在此被称为统计指纹识别。统计指纹识别是统计上建立数据集的身份的方式。将统计身份建立为唯一表征该数据集的指纹度量集。具有不同固有特性的数据集将具有不同的统计模式。可以从由较小的数据集(此处称为子集)组成的大型结构化数据集中提取指纹。结构化数据集通常以表格形式显示,并且其最低原子组成是一列数据。因此,数据库中的数据列是子集的一个示例。可以添加或删除完整的列,并且可以添加或删除包含所有列的行的集合。定义指纹的度量构成唯一且经过压缩的签名,该签名可被用于标识数据集并将其与从另一个数据集类似地导出的指纹作比较。具有匹配的指纹度量的数据集对、或具有匹配的指纹度量的数据子集,可以在统计上被断言为相同的数据集或相同的子集,或者它们具有相同的谱系。可以计算出可能被怀疑存在泄漏的数据子集中的数据集(或其相关子集)的统计指纹,此类文件在本文中被称为wildfile,并将其与数据提供商的参考文件或与此相关的任何参考文件中的对应数据的统计指纹进行统计比较。尽管本文使用的示例涉及包含以习惯列状顺序排列的特定类型的数据元素的特定类型的数据库,但是本发明在其各种实现方式中并不限于这种数据库、这些特定数据元素或该特定结构。本发明的这些和其他特征、目标及优点将通过结合如以下描述的附图考虑以下对优选实施例和所附权利要求书的详细描述而变得更好理解:附图的简要说明图1是描绘根据本发明的实现的整个统计指纹识别过程的流程图。图2是描绘根据本发明的实现的单个数据集的处理的流程图。图3是描绘根据本发明的实现的比较指纹的过程的流程图。图4是描绘根据本发明的实现的数据指纹识别表征器的功能流程的流程图。图5是根据本发明的实现的列状数据的典型指纹表示的图示。图6是根据本发明的实现的一系列三个基于时间的统计指纹快照。图7是描绘根据本发明的实现的用于数据子集的收敛匹配的元数据比较的流程图。图8是根据本发明的实现的用于指纹的统计比较的决策树。图9是描绘了根据本发明的实现的用于对两个分类数据集和两个定量数据集进行指纹识别的过程的两个流程图的比较。图10是解说根据本发明的实现的实现统计指纹识别过程的计算机网络的示意图。具体实施方式下面将参考一种或多种具体实现来描述本发明;然而,应当理解,这些实现并不限于本发明,并且本发明的全部范围如将在针对本发明的本申请或后续申请中针对本发明的任何权利要求中所阐明的那样。结构化数据集的统计指纹识别是用于建立有价值数据的身份以及因此所有权的机制。在各种技术应用中,关键数据集遍历多个所有权服务器域,并且有时会留下安全的所有权防火墙区域。数据具有金钱和信息价值,并且一旦有价值的数据集离开了受监控的网络或物理边界,它们就可能受到有时是未经授权的和非法的复制和转售,并且转售的数据附带有新所有权的主张。在没有数据集指纹的情况下,数据资产的所有权无法被原始数据所有者权威性地断言,从而使授权所有者无法证明被盗数据集的所有权。在本文所述的各种实现中,本发明针对唯一的指纹识别算法,该算法采用任意大且结构化的数据集,并通过对数据进行规范的统计检验来对数据进行统计表征。大型结构化数据集通常由数据子集(例如,表中的各个列)组成,每个数据子集具有不同的特性。在大型结构化数据集中,这种唯一的指纹识别系统和方法将不同的规范统计测试应用于数据的每个子集,并生成因该数据而异的统计指纹集。如应用于大型数据集的指纹识别方法的整体输出或结果是子集数据度量的复合且唯一集合,其可共同对被测试的数据进行指纹识别。如应用于唯一可识别的数据集的此复合统计指纹等同于被用于唯一识别人员的人类指纹。每个数据子集都有自己的隐式统计指纹,并且整个数据集由子集打印内容进行统计描述。本文描述的方法在架构上和操作上能够被分为两个功能阶段,每个功能阶段具有其技术能力和测量。第一阶段是应用于单个数据集的表征功能阶段。该阶段在统计指纹识别主例程下生成指纹并捕获细节。第二阶段是比较功能阶段,当给定多个指纹时,可以比较这两个指纹并从统计角度报告它们在统计上是相似还是不同。这两个功能阶段在体系结构上被设计为独立存在,并且在此实际实现中被实现为单独的模块,并且彼此独立运行。在典型的实际部署中,两个数据集可被用于表征引擎,然后为每个引擎生成统计指纹。该阶段的输出是指纹集或指纹集合,每个数据集一个集合。一旦指纹可用,则由比较模块完成跨多个指纹的指纹比较,当给出对多个指纹数据集的访问时,比较模块比较并报告数据集之间的统计重叠。变量类型影响产生指纹的统计测试。要应用适当的统计方法,对数据类型的充分了解是必要的。将子集内的数据转换为标准格式对于表征算法的应用也是必要的。结构化数据集中的数据可以是:定量的度量、距离具有意义间隔(级别之间的有序和确切差异)比率,具有有意义的零分类(因子、定性)标称二元/二分法(例如,性别、是/否、0/1)定性(例如,头发的颜色、所讲的语言)无序多义词,也称为多个离散类别(例如,就业状况、就业、失业、退休等)序数(等级),距离没有意义二元/二分法有序多义词(例如,李克特量表、h/m/l)混合的、很少在结构化数据集中发现,并且因此在本文档中不再讨论在应用指纹识别算法之前,对要经受统计处理的数据集进行清理、处理、转换,并且使其均一并符合标准数据类型。在表征和比较数据集之前,一致的预处理(不更改基础数据或其统计特性)导致一致的数据表示是一个特别重要的要求。在不影响数据本身的情况下预处理以修复数据表示允许处理和解释的一致性。一致的数据允许在统计指纹识别过程内的自动化。确保符合参数统计度量的众所周知的假设允许应用大多数统计测试,而无需进行校正性调整和警告。在与指纹识别相关的数据集类型中,样本大小很大,通常超过10,000个观察。通过补充措施,不存在被认为统计上很小的现实世界样本。假设这些大样本,并且缺乏小的观察集,数据分布适合参数测试和非参数测试的应用和解释,而无需采取统计校正动作。其发明人相信参数测试是最有效的。尽管规范性的规范性概念可能并不总是适用于落入指纹识别权限的数据,但是典型的大数据集(诸如,在数据指纹识别域中处理的数据集)允许有效应用和解释统计检验,即使当数据是非参数的。结构化数据,无论它是分类数据还是定量数据,都展现对于其构成是唯一的统计属性。通过了解数据子集中的数据类型,可以将规范的统计方法应用于定量或分类子集以生成唯一的子集指纹。然后,子集指纹的集合是整个数据集的指纹。现在参考图1,可以讨论在非常高的级别处生成指纹所涉及的步骤。本文档的其余部分描述了所涉及的步骤和子步骤的详细信息。分析在步骤000处开始。在步骤001,选择一个数据子集,该数据子集可以是数据集中的第一个数据子集,或多个子集的数据集中的下一个数据子集。同样在此步骤中,确定数据子集对于统计处理是否有效。如果数据子集对统计指纹识别有效,则通过将列名保存在将被进一步处理的有效列名列表中,来将数据子集标记为供进一步处理。在步骤002,通过统计指纹识别例程来处理有效数据子集。在步骤003,统计指纹识别系统确定是否所有数据子集都已被处理。如果步骤003的答案为是,则处理进行至步骤004。如果否,则处理进行至步骤005并继续至下一个数据子集。在步骤004,已经处理了所有数据子集,因此系统结束了处理。在步骤205,系统读取保存的索引中的下一个条目,然后转到下一个数据子集。在步骤006处报告结果。数据指纹识别技术应用于在时间维度上或为静态或为动态的结构化数据集。时间维度上的静态暗示数据不会随时间变化或变化很小,称为静态数据。数据指纹识别可被应用于数据集,而不管其起源时间如何。由于数据不断变化,因此统计指纹识别算法必须期望结构化数据集中的属性内容将会随时间漂移。在各种实现中,本发明包括对数据集的基于时间漂移的分析。为了表征此数据漂移,将指纹识别应用于具有相同遗产的数据的连续周期性快照,以确定并表征数据集的不同快照之间的相关行为,并捕获基于时间的纵向变化视图。定量数据集可以从两个角度进行表征。一种是经由像数据分布的时刻等的特征从实际数据的统计特性角度出发。第二个观点是当将定量数据被分类为分类级别,并且分类级别随后被表征时,从应用于数据分布的定量度量的角度出发。卡方(chi-square)统计测试系列包括处理两种观点的能力。在如应用于定量数据集的这种唯一数据指纹识别系统和方法实现中,还将集中趋势和变异性的统计度量(诸如,均值、中位数、众数(mode)、最小值、最大值、标准偏差和方差(5m-sd-v))与发明的应用和解释方法连同使用,并且这些度量一起适用于定量变量。对于结构化数据,子集度量(像列填充率)也是重要度量。对于定量数据的数据集间比较,发明人已经发现pearson的r相关性系数是定量数据集之间简单线性关系的良好度量(使用标准z分数的等效值)。像定量数据集一样,分类数据集可以从两个角度进行表征。一种是从实际数据的统计表征的角度出发。第二个观点是从应用于分类数据分布的定量度量的角度出发。卡方统计测试系列包括处理两种观点的能力。分类数据集可使用数据中的各种因子如何分布的措施来比较。数据被排序,并且然后测量经排序数据的频率分布。在比较两个数据集时,并且为了确定观察到的样本频率是否与理论上预期的频率显著不同,卡方拟合优度(gof)测试是适合的。拟合优度测试是确定观察到的具有两个或多个类别的分类数据集的分布是否与参考总体中的(预期)分布相匹配的方式。卡方测试序列中存在用于比较细分类数据的替代措施。卡方“独立性测试”(toi)是确定类别变量在同一样本中是否彼此关联的方式。例如,人们可能会考虑教育程度和房屋所有权,并怀疑这些分类数据是相关的。建立在交叉比较表或列联表上的机制被用于粒度分析。toi测试是对双向列联表的卡方测试,其中期望值是边际总计的函数,表示为具有行总计和列总计的表。此交叉比较表或列联表是多维表,该表记录了跨两个样本的类别内每个观察到的因子的实际数量。当顺序使用两个测试时,toi测试结果增强了gof测试的测试结果。gof测试着眼于整个分布,并且可能会遗漏各个变量的统计显著性,而列联表突出显示了变量级别的统计变化。通过暗示,内部数据表征仅涉及一个数据同质样本,该样本正被统计表征。在这种一个样本的情况下,应用特定的一个样本卡方测试。主统计指纹识别引擎执行以下功能。由引擎执行的第一步骤采用三个输入变量。第一个输入变量是通用数据集名称列表。此列表中的条目包含以下组合之一,其中每个组合是一个数据集名称,其表示以表的形式存储在sql、hive或parquet数据库中的数据集。我们可以称它们为control(控制)和counterpart(对方),其中每一者可以代表一对:“data_owner(数据所有者)”和“wildfile(野生文件)”;“data_owner”、“data_owner”;或“wildfile”、“wildfile”。第二个变量是“表名”列表对,其包含保存包含两个传入数据集中的每一者的表名。例如,在对data_owner_wildfile组合进行指纹识别的情况下,该对可能是:[data_owner_data_06_2015,wildfile_data_lightning_09_2017]。这代表日期为2015年6月的数据所有者数据集,以及2017年9月暴露的可疑文件。第三个输入变量是访问相应数据存储服务器所需的数据存储位置和凭据(地址、用户名、密码)的列表。捕获control和counterpart数据的位置。请注意,数据不必位于单独的位置;它可以共处。数据指纹识别例程支持两种部署形式。在第二步骤中,在准备保存指纹识别结果中,引擎将创建两个数据目录。存在一个目录来保存control内的数据子集的指纹,而存在另一个目录来保存counterpart内的数据子集的指纹。在第三步骤,引擎使用提供的网络地址和验证信息连接到数据库服务器,该数据库服务器保存正在被处理的当前数据集(control或counterpart之一)。在第四步骤,统计指纹识别引擎连接到保存正在被处理的当前数据集的数据库,该数据集是control和counterpart数据集之一。然后,统计指纹识别引擎启动用于测量指纹识别时间的计时器,并且随后调用统计指纹识别例程并传入被指纹识别的数据集的名称。统计指纹识别例程对由统计识别指纹引擎发送给它的每个数据集名称执行一次。给定表名、数据存储的地址和访问凭据,统计指纹识别例程连接到数据存储服务器。前两个查询用于数据库中的列数(numcol)和行数(numrow)。典型的输出可能看起来如下:bbdirect_parq表中的列数为90bbdirect_parq表中的行数是:5160在上面的输出文本中,“列数”为90,“行数”为5,160。然后,统计指纹识别例程准备处理numcol列数以用于指纹识别,每列具有numrow行数。该例程使用numcol作为循环索引,然后收集数据集中所有numcol列的名称,并将这些名称存储在columnnames(列名)表中。典型的输出可能看起来如下:varchar前缀varchar个体名varchar名varchar中间名varchar姓varchar地址varchar地址2行varchar城市varchar州varchar邮政编码varchar邮政编码4然后,将列名表和连接参数传递到列处理引擎。在此示例中,每一列是原始数据集的数据子集。列处理例程管理循环中的所有合格列,对每一者进行相同处理。对于每个要被处理的列,例程首先使用sql查询读取该列中的数据,并且将其加载到本地存储器中。数据被分类为有效值,并被强制为未填充或具有默认数据的任何行保存“na”值。该数据然后被分类和计数,并且放入为每一者保存标签和计数的列表中。典型的经分类和计数的输出看起来如下:{'90011':16455,'90037':94,'90001':79,'90044':77,'90003':72,'90002':59,'90059':41,'90280':39,……列表中的每个条目具有a:b的形式。每个条目(a)中的第一项是代表名称或值的标签,并且第二项(b)是该标签在该数据子集中出现的次数。分类可以两种方式之一进行。对标签执行通常分类,以便按字母数字顺序列出标签。但是,在上面的示例中,使用计数值执行了分类,并且因此按计数递减的顺序列出了数据。任一分类可被调用和使用。然后,列中经分类和计数的数据被移交给数据分析器例程。数据分析器的功能是对数据进行统计分析。该例程依赖于python库例程以执行以下计算:均值、中值、众数、最小值和最大值。另外,“一个样本卡方”是使用观察到的频率作为理论上期望的频率的度量。数据标签有时遵循{“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“a”,“b”……},其中数字标签转换为字母标签;在这种情况下,标签将被重新编码为:{“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“11”,“12”,“13”,“14”,“15”,……}.将字母标签重新标记为数字导致分类问题。数字分类顺序变为:{“0”,“1”,“10”,“11”,“12,“13”,“14”,“15”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”……}。这将更改数据的顺序。然后,在例程中基于功能编程的实现将求助数据,以便强制顺序准确:{“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“11”,“12”,“13”,“14”,“15”,......}。然后将所有统计测试结果和重新映射的标签转换为json格式,并且然后写入指纹文件。然后,典型的指纹文件看起来如下:{“列名”:“sportstv”“总行数”:5160,“chisquaredgof”:0.0,“chisquaredprob”:1.0,“频率_均值”:2580,“频率_中值”:2580.0,“频率_众数”:“默认-0”,“频率_最大值”:4760,“频率_最小值”:400,“填充_率”:1.0,“源文件名”:“bbdirect_parq”,“时间戳”:"2017-09-1411:09:20.252550",“numfactors(因子数)”:2,“实际分布”:{"\"\"":0.9224806201550387,"\"1\"":0.07751937984496124},“经更新的卡方gof”:0.0,“经更新的卡方prob”:1.0}在上述步骤中迭代通过所有隐式循环后,统计指纹识别例程退出。在此描述的实例中,结果是一对结果目录,每个结果目录都填充有多个json文件,每个文件包含针对单个数据子集的指纹。每个文件具有“.json”后缀。这些文件看起来如下:在control目录中::bbdirect_parq_address2line_data.jsonbbdirect_parq_zipline_data.jsonbbdirect_parq_lastname_data.json:在counterpart目录中::bbdirect_address2line_data.jsonbbdirect_ageofindividual_data.jsonbbdirect_city_data.json:现在参考图2,这些步骤可被更简洁地描述。在步骤101,数据子集被读取。在步骤102,例程仅保留具有有效数据的行。在步骤103,对相似项目的行进行分类、排序和分组,如由因子所标识的。如果数据是定量的,则在步骤104处对数据进行捆绑(bin),以使数据的分类分组可用。在步骤105,通过计算均值、中值、众数、最小值和最大值来统计地表征数据。此测试组合称为5m测试。同样在此步骤处,计算填充率。记录源数据文件名称和当前时间戳,并捕获该数据子集中的数据分布;如果数据子集是定性的,则此步骤涉及计算每个因子在总数中所占的百分比。假设期望的数据分布是均匀的,则在步骤106处进行一个样本拟合优度测试。在步骤107,运行卡方独立性测试以捕获列联表,并提供针对每个因子的观察值和期望值。在步骤108,将结果分类并以json格式存储。xml格式也是一种替代可能性。在步骤109,将结果写到成为数据所有者记录的一部分的文件中。基于统计指纹识别的数据集或子集比较需要一对数据集或数据子集。在典型的使用情形中,一个数据集具有数据所有者的遗产,而另一个数据集(称为“wildfile”)是要针对数据所有者集进行测试的可疑文件。尽管出于示例目的,此数据所有者的使用情形是指特定的数据来源关系,但统计指纹识别的一般应用并不会对可比较的数据集施加任何限制。在此数据所有者的使用情形中,wildfile的起源和结构组成可能是未知的,并且由于它可能是从数据所有者的数据的超集或子集导出的,因此在统计比较可被应用之前将两个数据集的基准设置为通用数据和时间基础是必需的。当两个数据集具有未知遗产或具有未知基线时,必须用附加推理和合格测试来支持统计比较,以便将测试结果视为有效。为了使统计结果可靠地有效,数据集必须被预处理为共同的基础。在申请号为pct/us2017/01707、标题为“changefingerprintingfordatabasetables,textfiles,anddatafeeds(针对数据库表、文本文件和数据提要的更改指纹识别)”的国际专利申请中更详细地解释了预处理,其公开如同在此完全阐述一样通过引用被结合。首先,生成仅保留对于数据所有者已知的数据记录的wildfile数据的简化版本。数据所有者的已知记录是使用数据链接工具(诸如,acxiomcorporation的abilitec)识别的,该工具将名为cons-link(消费者链接)、household-link(hh)和address-link(al)的标签应用于人员数据以进行身份-链接(识别)目的。cons-link标签在本描述中被用作示例,但hh和al可以在其他版本中实现。通过预处理wildfile并仅保留与已知消费者链接匹配的行,wildfile成为可以与由数据所有者文件(data_owner)匹配的基础。除来自abilitec的cons-link以外的标签可以类似地应用于替代实现中。诸如行重复数据删除之类的辅助过程有助于将数据缩小为可比较的记录核心集。一旦wildfile已经通过识别过程称为具有数据所有者文件(data_owner)的共同基础,更改指纹识别过程将被用于在为wildfile数据集生成文件时建立数据范围。在申请号为pct/us2017/023104、标题为“datawatermarkingandfingerprintingsystemandmethod(数据水印和指纹识别系统和方法)”的国际专利中公开了整体指纹识别方法的更多细节,其公开内容以其整体被纳入于此。了解数据范围允许比较的共同基准。一旦已经标识了分发日期范围,就将从data_owner的内部数据档案中生成具有相同cons-links和数据最近日期范围的data_owner数据集。所得的data_owner数据集来自同一时间段,并且包含如与wildfile数据集相同的对应记录。通过暗示,数据子集间的表征涉及一个以上的数据样本,但通常局限于两个数据样本,一个将被用作基准,而另一个将与该基准进行统计比较。在这种两样本情况下,将应用特定的两样本测试,并将来自基准样本的一个样本结果用作计算两样本特性的参考。如应用于定量数据和分类数据的过程被描述如下。为了定量数据的数据集间比较,应用了诸如皮尔逊(pearson)相关性之类的技术。一旦已经通过上述技术表征了每个数据子集,就可以使用pearson的相关性测试来比较定量数据子集。pearson相关性系数是范围在-1到1之间的双变量统计量,它量化了两个变量之间的线性关联的强度。值为0指示两个变量之间没有关联。大于0的值指示正关联;也就是说,随着一个变量的值增加,另一个变量的值也增加。小于0的值指示负关联;即,随着一个变量的值增加,另一变量的值减小。接近1或-1的值被视为指示变量之间的非常显著的关联。对于分类数据的数据集间比较,与卡方测试系列相关的技术和分布的定量比较是合适的。这在图3中用图形描述。在步骤200,选择两个数据子集。在步骤202,选择数据子集a,并在步骤204,选择数据子集b。然后,系统在步骤204确定两个数据集是否具有相同数量的因子。如果不是,则返回步骤200,或者如果是,则移动前进到步骤205。在步骤205,应用两样本卡方gof度量。然后在步骤206,对两个样本应用卡方toi。在步骤207,运行两个数据子集的逐度量比较。可以经由5m、填充率、因子名、因子值、元数据重叠和/或列名重叠来执行比较。最后,在步骤208,报告测试结果。数据指纹比较引擎负责比较两个数据集的指纹并报告结果。数据集比较的过程分解为对构成数据集的多个数据子集(变量)的比较。数据子集的指纹可从作为针对每个数据集的一组文件的上一步获得。主要的统计指纹识别数据比较引擎对conrol集中的文件和counterpart集中的文件执行“全部-全部”比较。具体步骤如下所述。主要的统计指纹识别比较引擎采用两个变量:从control数据集至指纹的目录指针和从counterpart数据集至指纹的目录指针。通常,一个是基准,可能是data_owner导出的,另一个是要与该基准进行比较的变量。引擎遍历两个目录中的每个目录,并提取所有带有“.json”后缀的文件。来自两个目录中的每个目录的.json文件的每个列表都被单独维护。给定两个文件列表,引擎生成control目录中所有文件与counterpart目录中所有文件的点积配对。配对看起来如下::control/bbdirect_parq_address2line_data.json,counterpart/bbdirect_address2line_data.jsoncontrol/bbdirect_parq_address2line_data.json,counterpart/bbdirect_ageofindividual_data.json:引擎然后从上面的图3中的步骤200开始,处理列表中的每对文件,并执行步骤201和202。每个文件被打开并且数据被读取。在步骤203,将数据称为controldata(控制数据)和counterpartdata(对方数据)。步骤204询问两个数据集是否具有相同数量的因子级别。如果这样做,则他们就有资格用于比较。如果不符合,则它们没有资格用于比较。在后一种情况下,系统会选择其他两个数据子集。如果在每个数据子集中检测到的令牌数量匹配,则将文件对添加到“可比较”文件列表中。然后,引擎迭代地处理可比较文件的列表。如果controldata与counterpartdata之间的数字度量位于彼此的10%频带范围内,则这两者之间的特征度量比较被认为是匹配的。使用从低5%到高5%的频带,以便匹配更高和更低的边界。10%度量是准则。可以使用更高或更低的百分比度量,以便在替代实现中设置更高或更低的容差。为了比较特征名,在确定并记录在原始列名之间的重叠度量。名称的确切重叠被标记为命中。记录部分匹配,但不加权以供比较。通过使用nlp中常见的定量字符串匹配算法,可以加强部分匹配比较。为了比较列名,记录controldata与counterpartdata之间匹配的列名。列名匹配是可能的数据匹配的指示符。当两个数据子集具有相同数量的因子时,来自control样本中的一个样本卡方分布可被用作counterpart样本中的预期分布。(counterpart继续保留其单个样本gof结果)。引擎现在在controldata和counterpartdata中的特征数据之间运行两个样本卡方测试。controldata分布被用作counterpartdata数据的预期分布,并且计算并记录卡方度量和概率。卡方度量是对观察到的counterpartdata与预期的counterpartdata之间的偏差的度量。此数字的大小将基于基础数据的频率而变化。零值被认为是非常重要的,因为期望的数字与实际的数字完全匹配,这指示数据完全重叠。小于100的值是值得注意的。记录较大数字,因为它们指示预期的与观察的之间的偏差。卡方概率度量是数据重叠的快速指示符。如果值为1,则数据完全匹配。如果关联的概率为0,则两个数据集不匹配。0到1之间的值是可能的匹配程度的指示符,其中0.05或更大的值被记录为具有统计意义。卡方独立性测试在controldata与counterpartdata之间运行,记录来自该测试的概率度量,同样强调接近1的概率具有统计学意义。这些步骤的结果以表格和csv形式记录。显示高卡方概率的结果将在表格顶部被分类显示。仅显示最匹配项的过滤结果也是可用的。当一个或多个数据子集显示出卡方匹配的概率时,数据集之间的匹配就很重要。还比较了两个指纹文件之间的元数据。当指纹被读取时,将从json文件读取列名。如果controldata表示data_owner文件,则查询数据字典,并将针对data_owner列的详细字符串描述符附加到control列名。counterpart列名未更改。然后,control和counterpart列名被清理为不含特殊字符(例如,./$#@%^&*(“)[]),然后标记化为单个单词。对于counterpartdata列标题中的所有令牌而言,查询同义词词典,并将相应的同义词添加到controldata列令牌。此增强提供了两个列标题令牌之间匹配的显著更高的概率。这两个令牌列表在本文中将被称为controltoken(控制令牌)和counterparttoken(对方令牌)。常用词从controltoken和counterparttoken中被排除。这样确保在最常见的令牌上不会发生列之间的匹配,并且从而避免了失配。然后在controltoken与counterparttoken之间进行令牌比较。如果令牌比较得出的结果为null或为空结果,则这两列被认为不具有可比性,并且引擎继续进行下一个文件对。指纹识别模块的整体功能流程在图4的流程图中被捕获。该处理流程支持用于对单个数据子集进行指纹识别的模块化实现。当需要生成两个指纹进行比较时,将通过所述过程进行两次遍历。在步骤300开始,统计指纹识别引擎连接到数据驻留在其中的数据存储设备并检索数据的元数据。元数据是数据匹配算法的一部分。在步骤301,统计指纹识别引擎从数据存储设备读取每个数据子集,并且在步骤302,针对其特性来检查数据。在步骤303,统计指纹识别引擎寻找特定定义的标准,诸如数据类型和因子级别的数量。如果所检查的子集中的数据符合指纹识别条件,则在步骤304将其添加到需要被比较的子集的主列表中。如果在步骤305已经处理了所有已知数据子集,则合格子集的主列表可用,并且引擎进行到下一步。如果不是所有数据子集都已被处理,则在步骤306检查下一个数据子集,直到所有数据子集都已被处理为止。一旦已经检查了所有数据子集并且合格列的完整列表就位,就可以准备对所有数据进行分析了。使用上面生成的主列表,在步骤307,统计指纹识别引擎一次遍历所有有效子集(在这种情况下为列)。在某些情况下,分类因子在步骤308被聚合或分解,并且定量变量被捆绑和聚合为类别。在步骤309执行核心统计指纹识别分析并生成指纹。在步骤310,存储所生成的指纹结果。如果在查询步骤311已经处理了所有数据子集,则过程在步骤312退出。如果没有,则引擎通过返回到步骤307来处理下一个数据子集。指纹以可移植数据格式(诸如,json或xml)来表示。与xml相比,json是紧凑的;因此,为了尝试保持指纹的紧凑性和可移植性,可建议为某些应用程序选择json。尽管如此,也可以使用xml。图5的示例(以下讨论)是json格式。现在参考图5的示例json格式数据,属性列内的数据类别及其各自的归一化频率以每个文件为标题。401部分显示了数据子集中的数据元素总数以及一个样本卡方测试的结果。部分402显示了数据的基本统计度量。它包括5m数据以及附加的填充率。区域403显示了当运行统计指纹识别测试时的数据源和时间戳。部分404显示了在数据子集中识别的所有因子级别。即使原始数据可能具有“a”而不是“10”,“b”而不是“12”等,超出“9”的因子也会被编码为“10”和“11”,依此类推。进行这种转换,以便可以使用定量标签来比较分类数据。同样,遗漏或未归入众所周知类别的数据被分类为“na”。部分405是保留空间,一旦解决了两个样本的数据存储问题,就将使用该空间。因为两个样本的比较数据需要针对每个所比较的组合的更新,所以此数据因某个组合而异。统计指纹识别引擎在找到有意义的组合之前,先运行数百种组合。该字段当前并未被填充,而不是有多少次经测试的组合就将该数据保存多少次。指纹是通过保存指纹的文件的大小来度量的。代表复合数据集的指纹是数据子集的模块化指纹的集合。如果结构化数据集具有1500个属性列,并且其中有1000个属性列被确定为适合进行指纹识别,则数据子集的1000个json指纹文件表示数据集的指纹。因为指纹可以引用数据子集,所以指纹文件的集合表示数据集的复合指纹。每个文件的大小为几百个字节,最大约为4k。大数据集可能具有1000个子集,而完整的指纹集合可能约为4m大小。单个指纹不携带除了关于该指纹何时被生成的时间戳的时间维度。然而,可以使用在不同时刻测量的具有相同谱系的指纹集来测量数据随时间的统计漂移。从带有时间戳的数据快照的指纹识别开始,在多个带时间戳的实例上获取的一系列常规指纹可以提供数据集中增量统计变化的视图。通过这种收集带有时间戳记的指纹的办法,可以识别出在任何测量的时间间隔内变化的复合数据集中的数据子集。时间错开的测量指示时间的趋势。在图6中解说了本发明的实现的这一部分。在标题为“systemandmethodforrepresentingchangevalues(用于表示变化值的系统和方法)”的美国专利第9,535,933号和标题为“changevaluedatabasesystemandmethod(变化值数据库系统和方法)”的美国专利第9,529,827号中公开了用于处理随时间变化的值的特定方法,其每一者均如同在此完全阐述一样通过引用被结合。更具体地看在时间间隔上的比较,具有相同来源基础的示例数据的变体可被例示为数据改变编码、捆绑级别和其他属性。通过测量每个快照处的统计指纹,数据可随时间被表征。数据的时间表征是数据的时域指纹。如果在整个时间间隔内重复进行统计测量,则统计特性的漂移可被量化、报告和视觉绘制。如果在一系列重复测量中没有漂移模式是明显的,则可以将数据表征为在整个测量项或时间间隔上处于静止。现在转向统计指纹比较方法,一种办法是null假设。用于两个数据指纹的比较的null假设是这两个指纹来自相同的族群。然后,指纹比较测试确立是否可以拒绝null假设,或者测试是否无法拒绝null假设。针对统计指纹比较的另一种办法是允许指纹实现以将所有数据集视为不透明,并找到统计上匹配的所有数据子集。目标是拒绝所有统计上不匹配的数据子集对。然而,该例程的不透明应用将所有合格子集与其他合格匹配子集进行比较,却不了解类别中实际匹配的是哪个数据子集。在具有1000个子集的数据集中,这可能会导致近五十万的成对比较。即使这些组合中的某些组合不携带匹配的数据类别,它们也可能显示统计匹配。但是,这种办法的优点在于,不透明的例程将偏见排除在图片之外。通常,汇聚相似或相同类别数据的指纹的比较是有意义的。一个示例是“收入”对“收入”,以及“房屋所有权”对“房屋所有权”。尽管汇聚编码相同数据集的变量的比较是最理想的,但是对这一目标的自动汇聚是有挑战的。已经设计并实现了一种创新的新比较和匹配算法,以支持关注于可比较的数据子集。给定两个需要被比较的数据集,找到并配对具有匹配因子级别的所有指纹组合(即,用于匹配类别的json文件)。配对可包含或也可不包含可比较的数据,并且统计指纹识别算法稍后会做出过滤后的选择以仅保留适当的组合。配对的json指纹组合使用突出显示的单词或从列元数据导出的令牌进行过滤,以仅保留具有匹配令牌的配对,以便集中匹配的组合的数量。图8显示了使用列元数据汇聚具有相似类别数据的数据子集的分步办法。从较早的图3的步骤205开始建立子步骤,在步骤600,该过程针对数据所有者的原始数据文件(data_owner)和待测试的wildfile中的每个列标题开始。在步骤601,对于所有者文件中的每个数据子集,根据数据文件的元数据字典,具有相应描述性字符串的聚合列标题被包括。在步骤602,每个标题被独立地清理和标记化,并且为每个标记维护令牌的列表。然后,对于文件列标题中的特定单词,在步骤603,将同义词添加到令牌列表中。在步骤604,运行查找匹配项的过程,比较针对数据所有者的数据文件(data_owner)的令牌和wildfile令牌。最终子步骤是步骤605,其中保留最佳匹配以进行统计指纹识别进一步分析。请注意,尽管在此示例中使用了数据文件所有者的数据文件的元数据字典,但在其他实现中也可以使用其他元数据源和令牌源。图8的判定树被用于判定是否已经发现了两个文件之间的潜在数据重叠。在步骤1000,选择需要被比较的两个数据集。对于数据集中的每个数据子集,在步骤1001,检查两个样本拟合优度度量。如果结果是显著的或肯定的,则该过程通过以高置信度在步骤1003比较独立性测试度量来继续。如果gof结果不显著,则该过程将比较独立性测试结果,但这只是为了消除匹配的任何最后可能性。步骤1002是基于关于数据的直觉的关于继续处理还是退出的手动决策点。如果步骤1003的结果是否定的,则过程转到步骤1004处的下一个数据子集组合。在步骤1005处循环遍历所有数据子集之后,如果匹配的数据子集的总数超过10,则存在数据匹配。(注意,这里使用的数字属于一种实现,但是本发明不限于此,并且因此阈值可以是期望的任何其他数字。)如果在步骤1005处存在数据匹配,则在步骤1006,引擎馈送数据至更高级的例程(诸如举例而言,主成分分析)。在步骤1007,如果匹配的数据子集的数量大于5但小于10,则检查匹配的数据子集以查看任何之间的相关性是否足够高以保证进一步的分析。如果步骤1007处的答案为是,则在步骤1008,系统继续进行更高级的例程。如果这些数据集不匹配,则步骤1009是退出路径。现在参考图9,可以描述分类和定量数据集的指纹比较过程的差异。在步骤700,接收两个分类数据集的指纹。在步骤701,比较因子级别,并且在步骤702,比较因子名。然后在步骤703,比较分布的集中度和方差度量,并在步骤704,比较填充率。最后在步骤705,因子名中的重叠被接收。由于两种不同类型数据的参数不同,步骤800至805中定量数据集的处理大致类似,不同之处在于步骤801和802中的比较是变量级别和名称,而不是因子级别和名称。同样,在步骤805中,接收变量名而不是因子名中的重叠。统计指纹识别依靠完全集成的高性能服务器、网络和存储来使其功能可行。在图10中解说了用于本发明的特定系统的实现。对于指纹创建而言,客户端在步骤000经由sftp或网络存储将其文件拖放到某个位置以开始提取过程以从文件创建(诸)指纹。可以在步骤001处的单个群集技术(例如,hadoop)中执行清理、标准化、分组、分类和创建(诸)指纹的过程。当(诸)指纹变为可用时,请求存储(诸)指纹发生在步骤002,并在步骤003通过指纹存储api,而对主存储位置中的(诸)指纹的存储或检索请求发生在步骤004和步骤005。一旦将(诸)指纹放置在主存储中,在步骤006和步骤007中,系统请求新条目的副本并将其存储在api的高速缓存中,以供更快的查找。对于指纹检测而言,客户端在步骤008a处经由sftp或网络存储将其文件拖放到某位置,以开始提取过程以从文件中检测(诸)指纹。或者,可以直接从指纹创建过程将文件导入到指纹检测,如步骤008b中所示。处理指纹识别比较的过程可以在单个群集技术(例如hadoop)中进行。系统在步骤009中检测特定的文件特性,并在步骤010中请求特定的(诸)指纹。在步骤006和步骤007中,可以使用指纹存储api(003)在高速缓存中查找特定指纹。如果在高速缓存中找不到所请求的指纹(高速缓存“未命中”),则api被用于通过步骤004和005从存储中请求和检索(诸)指纹数据。如果文件没有(诸)指纹,则文件系统停止特定的文件处理,并报告文件需要创建(诸)指纹。在返回(诸)指纹以比较之后,在步骤009中,比较算法处理指纹之间的关系和统计分析。在分析完成之后,步骤009在步骤010中推送(诸)比较报告以供存储。在步骤004和步骤005处,指纹存储api(003)被用于请求并将(诸)比较报告存储在主存储器中。一旦将(诸)比较报告存储在主存储器中,就在步骤006和步骤007中将新的(诸)比较报告存储在api的高速缓存中,以供更快查找。外部api对于外部系统访问(诸)指纹和/或报告比较是必要的。这是经由在步骤01处向指纹api的请求来完成的。该api进而尝试在步骤012中经由对指纹存储api(003)的调用来检索数据。在步骤006和007中,该调用致使该系统首先检查api的高速缓存。然后,高速缓存未命中导致通过步骤004和005从存储中检索(诸)指纹和/或报告比较数据的请求。除非以其他方式说明,否则本文中所使用的所有技术和科学术语具有如本发明所属的本领域的普通技术人员共同理解的相同含义。本文中使用的所有术语应当以与上下文一致的尽可能最宽的方式来解释。当本文中使用编组时,该组中的所有个体成员以及该组中所有可能的组合和子组合均旨在被个体地包括在本公开中。本文中引用的所有参考都被通过援引纳入在此到不存在与本说明书的公开不一致的程度。如果在此表达范围,则该范围旨在涵盖和公开该范围内的所有子范围以及该范围内的所有特定点。本发明已参考某些优选和替换实施例来描述,这些实施例旨在仅为示例性的而非旨在限制如所附权利要求书中阐述的本发明的整个范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1