首页 / 专利库 / 动物学 / 访问 / 数据库访问

数据库访问

阅读:706发布:2020-05-13

专利汇可以提供数据库访问专利检索,专利查询,专利分析的服务。并且描述了 数据库 访问 ,例如,其中数据库中的数据由推断引擎来访问。在各个示例中,推断引擎执行推断 算法 来从数据库访问数据并且利用数据来执行推断。在示例中,推断算法是根据数据库的模式编译的,所述数据库的模式是用数据库中数据上的概率分布的表达式来注释的。在各个示例中,通过将一个或多个潜在列或潜在表添加到模式中以存储要由推断引擎推断的数据,来 修改 数据库的模式。在示例中,表达式是组合的,因此,例如用于注释数据库表的列的表达式可以用作注释该数据库的另一列的表达式的一部分。,下面是数据库访问专利的具体信息内容。

1.一种数据库访问的计算机实现方法,包括:
在处理器处接收数据库的标识符;
用描述所述数据库中的条目上的概率分布的多个表达式来注释所述数据库的模式;
利用所注释的模式来访问所述数据库,并且作为根据所注释的模式对所访问数据的推断的结果,获取单元的条目上的一个或多个预测概率分布。
2.如权利要求1所述的方法,包括:将至少一列添加到所述数据库的模式中,所述列被布置成存储通过应用于存储在所述数据库中的数据的推断算法而学习的数据。
3.如权利要求1所述的方法,其中,注释所述模式包括将所述数据库的所述模式的列注释为以下各项中的任意一项:输入列、输出可观察列、潜在输出列。
4.如权利要求1所述的方法,其中,注释所述模式包括将所述数据库的所述模式的列解释为具有以下各项中任意一项的类型的条目:整数型、实数型、双精度型、浮点型、布尔型、外来关键字、字符串、日期-时间、百分比。
5.如权利要求1所述的方法,其中,每个表达式描述了用于根据参数或超参数来生成关联列的条目的过程,其中,超参数描述了关于所述参数的知识。
6.如权利要求1所述的方法,其中,每个表达式描述了用于根据所述模式的一个或多个其他列或表来生成关联列的条目的过程。
7.如权利要求1所述的方法,包括:将所注释的模式或所注释的模式的编译版本以及所述数据库的标识符发送到推断引擎,以及从所述推断引擎接收所述预测概率分布。
8.如权利要求7所述的方法,包括:将所注释的模式编译成推断算法;以及执行所述推断算法以从所述数据库来访问数据,以及利用所访问的数据来执行推断以产生所述预测概率分布。
9.如权利要求3所述的方法,包括:将输出可观察列转换成所注释的模式中的潜在可观察列。
10.一种数据库访问组件,包括:
通信接口,其被布置成接收数据库的标识符;
处理器,其被布置成用描述所述数据库中的条目上的概率分布的多个表达式来注释所述数据库的模式;
通信接口,其被布置成使用所注释的模式来访问所述数据库,并且作为根据所注释的模式对所访问数据的推断的结果,获取单元的条目上的一个或多个预测概率分布。

说明书全文

数据库访问

背景技术

[0001] 数据库广泛用于许多应用领域中的数据存储。通过利用适当的查询语言将查询发送到数据库,可以从数据库中高效地访问数据。查询结果随后由用于所涉及的特定任务的下游进程来使用。然而,典型地,下游进程期望来自数据库的特定形式的查询结果。这意味着,典型地需要编写中间或链接软件来从现有的数据库导出数据并且在输入到下游进程之前操纵该数据。结果,由下游进程对来自数据库的数据访问可能是低效的。而且,中间或链接软件典型地需要针对特定下游进程专编写,而这样耗时且易于出错。在其中使用大量数据并且其中发生缺失值、异常值、错误值以及与数据相关的其他问题的应用领域中这些问题尤其严重。
[0002] 这些类型的应用领域包括机器学习应用,其中,使用大量的数据经常是有益的,因为这使得能够实现更佳的学习结果。然而,在要访问大量的数据的情况下,通过中间或链接软件进行数据库访问的任何低效都加剧。
[0003] 下述的实施例不限于用于解决已知数据库访问系统的任意或全部缺点的实现方式。发明内容
[0004] 下面呈现了对公开内容的简要概述,以便向读者提供基本的理解。该概述不是对公开内容的泛泛概述,并且其不识别关键/重要要素或描绘说明书的范围。其唯一目的是以简化形式提供对本文公开的构思的选择,以作为对之后呈现的更详细说明的前序。
[0005] 描述了数据库访问,例如,其中,数据库中的数据是由推断引擎来访问的。在各个示例中,推断引擎执行推断算法来从数据库访问数据并且利用所述数据来执行推断。在示例中,推断算法是根据数据库的模式来编译的,数据库的模式是由数据库中的数据上的概率分布的表达式来注释的。在各个示例中,通过将一个或多个潜在(latent)列或潜在表添加到模式中以存储要由推断引擎推断的数据,来修改数据库的模式。在示例中,表达式是组合的,因此,例如用于注释数据库表的列的表达式可以用作注释该数据库的另一列的表达式的一部分。
[0006] 由于通过参考下面结合附图考虑的详细描述而更好地理解许多伴随的特征,因此将更容易地意识到这些特征。

附图说明

[0007] 根据附图来阅读下面的详细描述,将更好地理解本描述,在附图中:
[0008] 图1是具有用于访问一个或多个数据库的数据库访问组件的数据库管理工具的示意图;
[0009] 图2是关系数据库模式以及添加到该关系数据库模式中的潜在表和注释的示意图;
[0010] 图3是图1的数据库访问组件处的方法的流程图
[0011] 图4是关系数据库的示例;
[0012] 图5是推断引擎处的方法的流程图;
[0013] 图6是关系数据库的示意图,该关系数据库的模式具有添加的潜在列和添加的潜在表;
[0014] 图7是另一关系数据库的示意图,该关系数据库的模式具有添加的潜在列和添加的潜在表;
[0015] 图8是在终端用户设备处用于访问图1的数据库管理工具的图形用户接口显示器的示意图;
[0016] 图9是在终端用户设备处用于访问图1的数据库管理工具的另一图形用户接口显示器的示意图;
[0017] 图10示出了示例性的基于计算的设备,其中可以实现数据库管理系统或数据库访问组件的实施例。
[0018] 在附图中,相似的附图标记用于指代相似的部件。

具体实施方式

[0019] 下面结合附图提供的发明详述旨在作为本示例的描述,而不旨在代表可以以其构造或使用本示例的唯一形式。该描述阐述了示例的功能和用于构造和操作示例的步骤序列。然而,可以通过不同的示例来实现相同或等同的功能和序列。
[0020] 虽然本示例在本文中被描述和图示为实现于桌面上计算系统,但是所描述的系统是作为示例而不是限制而提供的。如本领域技术人员将意识到的是,本示例适用于各种不同类型的计算设备中的应用,包括但不限于智能手机、台式计算机、游戏控制台、交互式娱乐系统、计算环境以及其他。
[0021] 图1是具有集成的数据库访问组件108的数据库管理工具106的示意图。数据库管理工具106是计算机实现的,例如,它可以是用于查询经由诸如互联网、内联网或其他通信网络等通信网络100与其通信的一个或多个数据库102的软件应用。数据库102可以是或者可以不是关系数据库。可以使用一个或多个关系数据库102和一个或多个非关系数据库的组合。非关系数据库的示例的非穷尽列表是:图形数据库、对象数据库、XML数据库、JSON数据库。XML(扩展标记语言)数据库或JSON(java脚本对象记法)数据库存储半结构化的数据。数据库管理工具106具有对其能够访问的各个数据库102的数据库模式的访问。在关系数据库的情况下,模式的示例将在本文件中稍后给出。在对象数据库的情况下,模式对应于类(class)声明。在下面的示例中,具有表的关系数据库中,列和行以及可选地外来关键字对应于对象数据库中的类、成员、对象和引用。在XML或JSON数据库的情况下,术语“标记”或“集合”、“属性”、“元素”或“文档”以及“名称”分别用于指代“表”、“列”、“行”和“外来关键字”。
[0022] 数据库管理工具106还可以实现创建、编辑或删除数据库。数据库管理工具106可以使得数据能够存储在一个或多个数据库中,所述数据库可以是或者可以不是关系数据库。关系数据库包括数据的多个表,其中所述表相互链接。下面将参考图2更详细地解释术语“关系数据库”。
[0023] 数据库访问组件108也是计算机实现的,例如,其实现为软件和/或硬件逻辑。数据库访问组件被布置成与推断引擎104一起工作,以高效的方式从至少一个数据库的全部或一部分来访问数据,从而推断引擎能够利用所访问的数据来执行机器学习。数据库访问组件用下面更详细描述的表达式来注释数据库的模式。数据库的模式是对数据库中如何组织数据的描述。模式可以描述诸如XML或JSON等半结构化的数据如何存储。
[0024] 表达式描述了数据库中的数据条目上的概率分布。每个表达式描述根据参数或超参数来生成关联列的条目的过程,其中超参数描述了关于参数的知识。表达式可以是组合的。例如,表达式可以描述用于根据模式的一个或多个其他列或表来生成其关联列的条目的过程。数据库访问组件还将一个或多个潜在列添加到数据库模式和数据库中并且可选地将一个或多个潜在表添加到数据库模式和数据库中。潜在列是被创建以存储要由推断引擎104推断的数据(而不是观察到的数据或输入数据)的表的列。潜在表是被创建以存储要由推断引擎104推断的数据(而不是观察到的数据或输入数据)的数据库的表。将参考图2更详细地解释输入列、可观察列和潜在列。
[0025] 数据库访问组件还具有用于数据库模式的每列的类型,其中类型可以是以下各项中的任意类型:整数型、布尔、实数型、字符串、链接(在关系数据库情况下)、日期-时间、百分比或其他。类型“链接”指示外来关键字。数据库访问组件可以自动推断或解释列的类型,如下文更详细描述的。数据库访问组件还具有用于数据库的每列的标签,所述标签用于指示其是输入列、输出可观察列还是输出潜在列。潜在列是那些由数据库访问组件添加的列并且是输出列。其他列可以根据用户输入和/或自动分析而被识别为输入或输出可观察的。
[0026] 数据库访问组件和推断引擎操作用于编译具有添加的潜在列和/或表的、注释的数据库模式,以形成推断算法。注释的模式还具有对于每个列指示其是输入列、输出潜在列、还是输出可观察列的标签。注释模式还具有用于每个列的类型(诸如整数型、实数型、浮点型、双精度型、布尔、字符串、外来关键字(在该文档中称为“链接”)。编译过程可以包括多于一个阶段。例如,注释可以用高级编程语言来编写,而高级编程语言被编译为在若干阶段中的连续的较低级编程语言。推断引擎能够执行推断算法来以推断算法规定的方式从数据库访问数据,以及利用所访问数据来执行推断。推断结果可被写入添加到数据库的潜在表和/或列。
[0027] 在一些示例中,数据库访问组件自动地添加潜在列和/或表并且在数据库管理工具中创建注释(表达式、输入/潜在/可观察标签、以及类型)。在其他示例中,终端用户添加潜在列和/或表,并且利用编程环境来创建注释。添加潜在列和/或表以及注释的过程可以是半自动的。
[0028] 图1所示的数据库访问组件108与数据库管理工具106集成,尽管这不是必要的。数据库访问组件108可以位于与数据库管理工具106通信的任何其他实体中。数据库访问组件108可以将其接收自推断引擎104的推断结果进行高速缓存。
[0029] 终端用户能够利用可从他或她的计算设备122(诸如手机116、平板计算机118或个人计算机120)访问的图形用户接口110来使用数据库管理工具106和数据库访问组件108。图形用户接口110可以是基于网络的,或者可以是任何其他适当的类型。之后参考图7至9来论述可提供的图形用户接口显示的示例。图形用户接口110可以由数据管理工具106来提供、由数据库访问组件108来提供、或者由任何其他与数据库管理工具106和数据库访问组件108通信的实体来提供。通过使用图形用户接口,终端用户能够利用概率推断的能,即使他或她具有极少或没有统计或机器学习方面的训练。现有的数据库可以在无需从现有数据库导出数据的情况下使用,并且在执行机器学习和推断之前操纵该数据。而且,终端用户无需预处理数据,例如,变换不同类型的变量或者去除具有缺失数据的实例。这简化了终端用户的操作。终端用户可以按照与之前对于数据库操作的类似方式来操作该数据库,这是因为推断发生在后台并且可以简单地将推断结果与数据库查询结果合并。
[0030] 终端用户可以利用图形用户接口110将查询112输入到数据库管理工具106,以便将查询发送给数据库102中的一个。数据库管理工具106返回查询结果,该查询结果是利用已知的数据库进程从数据库获取的。数据库管理工具106还能够返回带有推断114的查询结果。也即,其中查询的结果包括已经由数据库访问组件108与推断引擎104联合工作而计算出的值和信息。
[0031] 例如,带有推断的查询结果可以包括从已由推断引擎104推断的潜在列和/或潜在表中访问的数据。在下面描述的示例中,游戏的玩家的技能由推断引擎104来推断,并且技能是存储在添加到数据库模式的潜在列中的潜在变量。查询可以询问玩家的技能是怎样的并且带有推断的查询结果包括技能值。通过这种方式,终端用户接收关于玩家技能的推断数据。这仅是一个示例,可以根据应用领域而使用许多其他潜在列和潜在表。
[0032] 除了来自数据库的潜在列的推断数据之外或者作为其替代,带有推断的查询结果可以包括关于数据库的非潜在列的推断数据。关于数据库的非潜在列的推断数据的示例的非穷尽列表是:填充的缺失数据、识别的错误数据、错误校正建议、识别的异常值数据。例如,没有数据的单元可以通过数据库访问组件108来完成,并且填充的数据可以被返回作为带有推断的查询结果114的一部分。即使在完成的单元由外来关键字值完成的情况下,这也是可能的。外来关键字是引用另一表的行、元组或记录的表单元中的条目。例如,具有错误数据的单元可以由数据访问组件108来识别,并且错误和所建议的校正可被返回作为带推断的查询结果114的一部分。如下更详细论述的,带推断的查询结果114的许多其他示例是可能的。
[0033] 在添加潜在列和/或表以及注释的进程是半自动或手动的示例中,终端用户可以经由图形用户接口110或者通过计算设备122与数据库管理工具106之间的任何其他通信来访问数据库管理工具处的编程环境。在一些示例中,数据库管理工具106可以与计算设备122集成。终端用户可以将潜在列和/或表添加到数据库模式中并且通过在编程环境中以适当的概率(probabilistic)编程语言编写指令来创建注释。概率编程语言是一种利用概率分布来表示关于变量值的置信(belief)的编程语言。注释是概率编程语言中的表达式,其可以由数据库管理工具和/或推断引擎104编译成推断算法。
[0034] 通过使用注释,数据库访问组件和推断引擎不需要显式地使用因子图结构。这是有益的,尤其对于因子图由于手写而变得棘手的复杂任务而言。注释可被编译成概率编程语言代码,其中随机变量是程序变量、因子是基元操作、板是循环,而门是条件或开关
[0035] 通过使用在具体模式中编码的数据的建模,能够使用简洁的注释。每个表描述隐式地定义了在其行上的循环。给用户省去了编写用于在语言和数据库之间传输数据和结果的代码的麻烦。而且,各个列的注释可以组合地汇编,这使得数据库访问组件能够以简单且有效的方式构建复杂模型。
[0036] 由于数据库和推断引擎可位于云中,因此大量的数据可供推断引擎使用,其中那些量可以大于在终端用户设备处在图形用户接口中实际和/或有用地显示的数据量。通过在推断引擎处使用大量的数据,可以提高由推断引擎进行的预测的确定度和确定性。
[0037] 可选地,或者另外地,图1的任何实体的功能或者那些实体的任何部分的功能能够至少部分地由一个或多个硬件逻辑组件来执行。例如而非限制,能够使用的硬件逻辑组件的示例类型包括:现场可编程门阵列(FPGA)程序特定集成电路(ASIC)、程序特定标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑器件(CPLD)、图形处理单元(GPU)。
[0038] 在图2、图4、图6、图7、图8和图9的示例中,使用关系数据库。然而,还可以使用非关系数据库。
[0039] 图2是关系数据库的示意图,所述关系数据库可以是图1的数据库102中的一个。如上所述,关系数据库包括数据的多个表200,其中表彼此链接。每个表具有按列和行排布的数据单元。在该示例中,为清晰起见,仅显示了两个表,但是实际上可以存在更多的表。在该示例中的两个表包括玩家表202和比赛表204。例如,玩家表202包括针对每个用户的两个列(玩家关键字、名称)和一个行。例如,比赛表204包括四列(比赛关键字;玩家1外来关键字,其链接到玩家表的适当行;玩家2外来关键字,其链接到玩家表的适当行;以及存储布尔值的赢家1,如果玩家1赢得比赛,则其为真,而如果玩家1输掉比赛,则其为假),以及针对每场比赛的一行。在该示例中,比赛是两个玩家的比赛;对于具有其他数量的玩家和/或玩家团队的比赛,适当地扩展模式。数据库102的原始表可以称为具体(concrete)表,因为这些包括可能是经验数据的现成可用的数据。然而,在一些示例中,推断结果用于清理经验数据,经验数据可能包括推断结果。例如,填充缺失数据、错误校正等等。
[0040] 关系数据库具有模式,所述模式定义其存储的表以及那些表之间的链接(也称为外来关键字)。在图2的示例中,示出了关系数据库的模式206。针对每个表,该模式包括对列的描述,以及针对每个外来关键字,该模式包括该外来关键字如何链接两个或更多表的知识。在图2的示例中,模式206包括对玩家表208的列的描述以及对比赛表210的列的描述,以及关于比赛表中的外来关键字如何连接到玩家表的信息。
[0041] 如上所述,每个表具有以列和行排布的数据单元。单元中的数据值可以是数值或分类或自由文本(字符串),并且一些单元可能是空的。空的单元可以称为具有未观察数据值或者具有空数据值的单元。在本文描述的示例中,一行或多行中的数据表示独立的事件、对象或实体。列中的数据表示属性并且在各行之间具有一致的类型;也即,除了可被标记为空的、空白或由一些字符串(诸如“???”等)标记的缺失值之外,在一列内的数据值具有相同类型。数据值的类型示例的非穷尽列表是:实数型、浮点型、布尔、链接(其将外来关键字规定到指定表)、分类、整数型、百分比、字符串、日期、时间。数据库访问组件108根据用户输入或者根据类型推断进程的结果或者使用这些方法的组合来用类型给每列加标签。例如,要确定针对列的数据值类型,数据库访问组件108可以检查数据库。例如,列可以包含符号“0”、“1”、“2”、“3”,其可被解释为由数字表示的类别或者可以被解释为号码。推断引擎可以通过应用机器学习/统计建模来推断真正的基础类型。
[0042] 如上所述,数据库访问组件108将潜在列和/或潜在表添加到数据库的模式中。数据库访问组件108可以利用存储在数据库管理工具106处的规则和/或标准自动地将添加潜在列和/或潜在表。例如,可以通过试错(trial and error)的方式来添加潜在列,如下文参考图3更详细描述的。在一些示例中,由用户操作如上所述的编程环境来添加潜在列和/或表。这两种方法的组合是可能的。
[0043] 在图2的示例中,一个潜在列添加到玩家表,且两个潜在列添加到比赛表,如此处所述。
[0044] 将用于表示玩家技能的潜在列添加到玩家表中,使得描述208包含另一列220,该另一列220在图2中被圈出以指示其是潜在列。保存有玩家的名称的另一列是“字符串”类型并且是输入列。将用于表示玩家1在与玩家2的给定比赛中的表现的潜在列添加以模式206的比赛表的描述210中。这在图2中显示为表现1222并且被圈出以指示其是潜在列。以相同的方式,将用于表示玩家2在与玩家1的给定比赛中的表现的潜在列224添加到以模式206的比赛表的描述210中。比赛表的其他列是针对玩家1和玩家2的外来关键字列和赢家1列,针对玩家1和玩家2的外来关键字列都是类型“链接”的输入列,该赢家1列是类型布尔的可观察列。
[0045] 潜在列可以存储在与具体表202、204相同的存储中,其存储作为可与具体表202、204联合的玩家潜在表214和比赛潜在表216。下面将参考图4更详细描述玩家潜在表214和比赛潜在表216。
[0046] 关于模式206,在通过添加潜在列可以对其形式进行修改的情况下,给定表的列可以是以下各项中的任意项:输入、潜在以及可观察。输入列包括来自原始数据库102的、并且在数据库访问组件操作之前给出或可供使用的数据。例如,玩家的名称和玩家关键字。输入列包含不是要被推断的数据。潜在列是由数据库访问组件添加的列。潜在列包括由数据库访问组件与推断引擎104相结合而推断的数据。可观察列包括来自原始数据库102的数据。例如,数据是经验数据或观察数据,其可以或者可以不通过利用推断结果填充缺失值和错误校正而被清理。在一些示例中,例如在要做出对事件的预测的示例中,可观察列可以是潜在列。在该情况下,另一表(在该文档中称为查询表)可以添加到表212和模式206中,其中可观察列被表达为潜在列。这将参考图6和图7更详细地说描述。
[0047] 如图2所示,注释226添加到潜在列和可观察列中。数据库访问组件108可以利用存储在数据库管理工具106中的模板注释来自动添加注释。例如,可以按照如以下参考图3更详细描述的试错方式来添加注释。在一些示例中,可以由用户操作如上所述的编程环境来添加注释。这两种方法的组合是可能的。每个注释是以概率编程语言的表达式。每个注释表达了数据库的一列或多列的数据上的概率分布。关于注释的更多细节将在下文给出。
[0048] 图3是图1的数据库访问组件108处的示例性方法的流程图。数据库访问组件108接收300数据库模式以及使用该模式且要被访问的数据库的全部或部分的地址(或标识符)。例如,数据库管理工具106知道其管理的数据库102中的每一个的数据库模式。
[0049] 数据库访问组件108将一个或多个潜在列添加302到其接收到的数据库模式中。例如,这些是通过数据库访问组件108根据存储在(或由其访问的)数据库管理工具106中的规则和/或标准而自动添加的。可以根据用于规定要添加何种潜在列的用户输入来添加潜在列。可以使用用户输入和潜在列自动生成的组合。在该文档中描述的示例中,至少一个潜在列添加到数据库的每个表中。然而,这不是必要的。一些表可以仍为具体的,而不添加潜在列。
[0050] 数据库访问组件108建立针对潜在列的存储(合称为潜在数据库)。在潜在数据库要存储在与原始具体数据库相同的数据库中的情况下,数据库访问组件108创建与数据库中的具体表联合的适当的潜在表。在潜在数据库整体或者部分地存储在另一库中的情况下,数据库访问组件108创建适当的潜在表并且保存它们的地址。
[0051] 数据库访问组件108通过以概率编程语言创建指令来注释304模式的潜在列和可观察列。每个注释是用于描述关于所注释的列的数据的置信的概率分布的表达式。可以由数据库访问组件108利用存储的模板来自动地实现注释。注释可以是能够访问数据库访问组件108的编程环境的用户的输入。注释共同地定义概率模型以生成数据库(具有所添加的潜在列)。
[0052] 数据库访问组件108将注释,列类型,列是否是输入、潜在的或可观察的指示,以及数据库地址发送306到推断引擎。在一些示例中,数据库访问组件108执行注释的第一阶段编译并且将编译结果(而不是注释本身)发送到推断引擎。推断引擎然后执行第二阶段编译以生成其可以执行的推断算法。编译阶段和进程可以在数据库访问组件、推断引擎以及任何其他实体之间共享。
[0053] 推断引擎104根据概率表达式利用从数据库访问的数据来执行推断308。通过该方式,以高效的方式从数据库访问数据,而无需从数据库导出数据,且无需提前预处理或操纵该数据。
[0054] 在一些示例中,数据库访问组件108可以从推断引擎接收310推断结果。还可能的是,推断引擎和/或数据库访问组件将推断结果存储316在潜在数据库中,无论该潜在数据库位于何处(诸如与原始具体数据库相同的数据库中,或者其他地方)。数据库访问组件108能够访问所存储的推断结果。
[0055] 推断结果包括多个后验概率分布,包括:与单元相关联的值的后验预测概率分布,与潜在列相关联的、为未观察变量的潜在变量的预测概率分布,以及与潜在列或可观察列相关联的参数上的后验分布。针对潜在列或可观察列的每个数据库表单元可以存在预测概率分布,其中该概率分布表示关于该单元中数据项目的值的置信。(将输入列中的数据作为输入提供给推断过程,并且对于输入列中的单元没有可用的概率分布。)可以以任何适当的形式提供概率分布,例如,作为取自概率分布的样本,或者作为用于描述概率分布的均值和方差,作为直方图,或者其他方式。
[0056] 推断结果可以从两种不同形式的推断获取。第一形式的推断根据对于每行而言都是完整的观察数据来推断潜在列和参数。第二形式的推断根据部分观察数据来预测缺失值;例如,通过以实际存在于数据库中的观察值为条件,推断可观察列中的缺失值的后验概率分布。
[0057] 数据库访问组件108可以经由图1的图形用户接口或者以任何其他方式从用户接收312数据库查询。数据库访问组件108能够使用314推断结果来回应数据库查询。例如,在该数据库还保存了推断结果的情况下,查询被转送到数据库。对于查询的回答可以包括来自已经由推断引擎104推断的潜在列的数据。
[0058] 数据库访问组件还可以使用预测概率分布来进行以下各项中的一项或者多项:识别数据库中的极端值、识别数据库中的错误值、建议对数据库中的错误值的矫正、对数据库中的单元进行集群、识别影响规定单元的预测概率分布的单元或表、识别用于主动学习的单元。数据库访问组件还可以将注释和添加的潜在列导出为文件。例如,以在相同模式的另一数据库中做出预测。
[0059] 在一些示例中,数据库访问组件108能够评估318推断结果的准确度。例如,推断结果包括概率分布,并且这些概率分布的方差或相关统计可以指示推断结果的确定性的级别。方差或相关统计可以与阈值或先前值进行比较并且用作到图3的步骤320的反馈形式。这产生了用于对潜在列和可观察列进行注释和/或用于对潜在列添加进行决策的试错过程。
[0060] 图4是针对图2的场景的关系数据库的示例。在该示例中,玩家表400包括针对三个玩家Alice、Bob和Cynthia的数据。比赛表402包括针对两个比赛的数据:比赛0,其中Alice对Bob且Bob获胜;以及比赛1,其中Bob对Cynthia且Cynthia获胜。
[0061] 针对玩家表的潜在技能列的注释可以例如为:gen(Gaussian(25.0,0.01)),这意味着关于玩家技能的置信最初(学习发生之前)是由高斯概率分布描述的,其中均值为25.0,并且精度是0.01。例如,技能列的每个条目从均值为25.0且精度为0.01的高斯分布中抽取。25.0的均值是关于被表达为数值等级(rating)的玩家技能的置信,而精度指示该模型有多确定技能等级是正确的。
[0062] 针对比赛表的潜在表现1列的注释可以例如为:gen(Gaussian(Player1.s,1.0)),这意味着在特定比赛中关于玩家1的表现的置信被建模为高斯分布,其均值等于该玩家的当前技能(来自玩家表)且精度为1.0。这等同于向玩家的当前技能增加噪声来对玩家在特定比赛中的表现进行建模。
[0063] 针对比赛表的潜在表现2列的注释可以例如为:gen(Gaussian(Player2.s,1.0)),这意味着在特定比赛中关于玩家2的表现的置信被建模为高斯分布,其均值等于玩家的当前技能(来自玩家表)且精度为1.0。
[0064] 针对比赛表的Win1可观察列的注释可以例如为:gen(Performance1>Performance2),这意味着玩家1将在与玩家2的比赛中获胜的置信被建模为玩家1的表现大于玩家2的表现,其中它们的表现从比赛表的潜在列取得。
[0065] 在图4的特定示例中,这些注释被编译成推断算法且利用玩家表400和比赛表402中的数据来执行。推断结果填充玩家潜在表404和比赛潜在表406,如在潜在数据库上的分布的边际表示所示。在这些表中的每一个表中,条目Gaussian(x,y)指示均值为x且精度为y的高斯概率分布。
[0066] 一旦技能潜在列和玩家表现潜在列被填充,终端用户与对于具体列的方式相同的方式提交查询以从那些潜在列中取回数据是可能的。
[0067] 可观察列转换成潜在列也是可能的。例如,比赛表的win1列是可观察列,其在期望预测比赛的结果的情形下被转换成潜在列。在该情况下,查询可以是比赛表中的一行,该比赛表在win1列有缺失条目,如图4中的408处所指示的。改变针对win1列的注释以指示其是潜在的而不是可观察的。推断引擎将注释进行编译并且利用关系数据库表400、402中的数据执行推断并且产生图4的推断结果410,该推断结果410指示由伯努利分布表示的置信:玩家1有85%的几率在比赛3中获胜。推断结果410存储在如图4所示的比赛查询潜在表中并且这将参考图6进行更详细地描述。
[0068] 图5是在图1的推断引擎104处的示例方法的流程图。推断引擎接收500注释,它们一起形成数据库的概率模型(整体地或部分地)。推断引擎还接收要提供用于推断的数据的数据库(或数据库的一部分)的地址。
[0069] 推断引擎可以是任意软件架构,所述软件架构能够接收以本文所述的注释(或注释的第一阶段编译版本)的形式的概率模型且将其编译以生成可应用于数据库中的数据的推断算法。例如,用于实现确切推断的软件架构、用于实现采样的软件架构、Infer.NETTM软件架构或其它软件架构。软件架构包括使得概率模型的一部分能够基于选择器变量来打开或关闭的功能。例如,Infer.NETTM软件架构包括提供这种类型的切换能力的门功能。推断引擎还包括将概率图形模型的元素组在一起成为板的功能。
[0070] 推断引擎对注释(或第一阶段编译的注释)进行编译并且从而得出502推断算法。推断算法被执行从而在数据库上或数据库的一部分上执行504推断。推断过程可以包括训练阶段,其中,数据库表的行的第一集合被用作训练数据。数据库表的行的第二集合则可以用于测试阶段中以推断值。推断引擎输出506与数据库的列和/或单元相关联的概率分布。
这使得能够获取针对关系数据库的每个单元(除了省去推断的任意单元)的概率分布,该概率分布表达了关于对单元的数据的值的置信。
[0071] 图6是具有模式206的关系数据库102的示意图,模式206具有添加的潜在列220、222、224、606、608、610以及添加的潜在表600、612。该示例对应于图2和图4的示例。图4中的比赛查询潜在表等同于图6中的打赌潜在表612、600。关系数据库的模式按照上文参考图4所描述的被注释,并且打赌(bet)潜在表612用于保存推断结果。例如,推断引擎104或数据库访问组件108将推断结果写入打赌潜在表612。针对关系数据库的模式包括对打赌潜在表
612的描述600,该描述600包括针对玩家1的外来关键字602、针对玩家2的外来关键字604、针对玩家1表现的潜在列606、针对玩家2表现的潜在列608以及结果win1的潜在列610。通过将多个行放置在打赌表中,预测多个即将到来的比赛的结果是可能的。
[0072] 参考图7,考虑到存在大的玩家表的在线情形,相对少量的玩家排队以开始在线游戏。为了选择队列中的一个来与新的玩家玩,可以将类似技能查询表700添加到模式中,如图7所示。与打赌表的方式相同,类似查询表700具有针对玩家表的外来关键字。其填充有针对玩家(一个来自队列,以及新玩家)的每种组合的行。潜在列类似706指示两个玩家是否技能接近。推断将该列填入到具有伯努利分布的类似技能潜在表708,该类似技能潜在表708能够用于选择技能接近新玩家的对手。
[0073] 图8是可以在图1的图形用户接口110处实现的示例性图形用户接口显示。该示例示出了推断结果如何可用于填充潜在列的单元。该图形显示具有四个标签800、802、804、806来使用户能够在玩家潜在表、比赛潜在表、比赛查询潜在表和类似表的显示之间进行切换。在该示例中,显示玩家潜在表的一部分。用户已经选择了无线按钮来显示出所有数据;
其是具有来自推断的潜在数据(在该情况下为技能)的玩家具体表的原始数据。用户还具有仅查看缺失数据(即,空单元)的选项或者查看查询数据(即,作为查询的一部分提交给数据库的任意行和列)的选项。玩家潜在表的大小在该示例中示出为3列乘30行。用于显示预测的选项被选择,并且用于保存查询和删除行的按钮当前不可用。用户当前关心的行由行4处的黑色箭头指示,并且可选地由该行中单元的阴影指示。技能列填充有高斯分布的均值和精度的配对。这是推断结果如何显示给用户的一个示例。可以使用其它方式。例如,可以显示百分比以指示预测值的确定性。在其它示例中,可以显示诸如期望或方差等边际统计、MAP值(诸如前k个最可能的配置)、错误条、错误范围、绘图、直方图或用于传达关于预测概率分布的信息的其它类型的显示。
[0074] 图9是可以在图1的图形用户接口110处实现的另一示例性图形用户接口显示。该示例示出了推断结果如何可用于预测数据库上查询的概率分布。
[0075] 关于图8,图形显示具有四个标签900、902、904、906来使用户能够在对电影表、用户表、等级表和等级查询表的显示之间切换。在该示例中,显示了等级表的一部分。用户已经选择了无线按钮来显示查询数据(即,作为查询的一部分的、提供给数据库的任何行和列)。在该示例中,查询数据包括单行的等级表,其中,用户表的外来关键字值由用户输入,其例如为等级值(在该示例中为5),而电影ID被推断为电影ID的列表。
[0076] 该示例示出了终端用户可以如何提交查询,其是“如果用户是用户表的行3中规定的用户,且等级是5,则电影将是什么”。可以通过改变在行中提交的值,来进行其它类型的“what if(如果…什么)查询。例如,终端用户可以询问如果得分或另一外来关键字值是已知的则外来关键字值将是什么。
[0077] 图形用户接口还可以包括使用户能够实现以下各项的任意组合或以下各项中的一项或者多项的元素:根据推断来排除至少一列或表、规定列值之间的约束、规定列之间的潜在相依性、在接受数据库中的一个或多个单元的值变化之后重新运行推断。
[0078] 由推断引擎提供的预测概率分布可以用于其它任务以及参考图2、图4、图8和图9所描述的那些任务。例如,突出具有极端值的单元,识别潜在的错误,建议对潜在错误的校正,识别单元之间的相似性,识别单元之间的差异,对数据库的行进行集群,确定表的列之间的关系,识别现有的单元或针对其将提高预测准确度(主动学习)潜在的新行和列,以及其它任务。
[0079] 来自推断引擎的预测概率分布可以用于突出数据库中的关系和/或差异。例如,在识别出预测概率分布中的相似性或差异性的表的列或行之间。预测概率分布中的差异可以基于所推断的模型参数,诸如具有混合组成或其它潜在变量的关联概率。可以利用阴影、颜色或以任何其它方式将相似性和/或差异性显示在图形用户接口处的表中。在示例中,用户可以选择包含所推断的值(由数据库访问组件添加到单元的值)的单元,并且数据库访问组件可以突出那些最影响所推断的值的单元。在另一示例中,用户可以选择包含所观察的值的单元,并且数据库访问组件可以突出那些包含最影响所推断的值的单元。
[0080] 在示例中,数据库访问组件可以识别行的群集并且创建群集标签的新潜在列。在一些示例中,诸如当用户(在新的列中)标记他或她认为感兴趣的行时,可以接收用户指导(user guidance),并且数据库访问组件随后将该新列填充到空白单元中,从而根据与人类用户相同的标准将所有行标记为是否感兴趣。
[0081] 如上所述,对数据库模式的注释用本文称为TABULAR的高级编程语言来编写。例如,编程语言可以基于称为FUN的F#概率编程语言。在2012年10月8日递交的美国专利申请“Modeling data generating process”13/646739以及2013年1月公开的Gordon等人的“A Model-Learner Pattern for Bayesian Reasoning”中详细描述了FUN。
[0082] TABULAR利用FUN的具有确定性大小的阵列且在表达式内不具有条件(observe)的版本。现在给出TABULAR的句法和语义学的细节。
[0083] TABULAR使用基础类型bool,int和real,记录类型和阵列类型。使string=int[],以及vector=real[]以及matrix=vector[]。(类型real典型地利用浮点算数来实现,但是其还可以利用一些确切表示来实现。类型vector和matrix典型地利用阵列来实现,但是还可以利用稀疏表示来实现。)链接类型link(t)用于将表t的外来关键字表示为类型int{t}。令c在基础类型的恒定数据上取范围,并且写ty(c)=T,意指常数c具有类型T。这概述如下[0084] 类型和值:标量,记录,阵列,链接类型
[0085] T,U::=bool|int|real|{f1:T1;…;fn:Tn}|T[]|link(t)
[0086] V::=c|{f1=V1;…;fn=Vn}|[V1;…,Vn]
[0087] 上述记法意味着,T和U(它们是类型的可选元变量)可以是布尔、整数型、实数型、记录{f1:T1;…;fn:Tn}、阵列T[]或链接类型link(t)中的任一种。并且,值V是常数c,其在记录或阵列的数据上取范围。
[0088] 还可用于TABULAR的语言Fun中的可能的表达式包括
[0089] E,F::=表达式
[0090] x|c变量,常数
[0091] if E then F1 else F2 if-then-else
[0092] {f1=E1;…;fn=En}|E.f记录文字,投射
[0093] [E1;…;En]|E[F]阵列文字,查找
[0094] [for x
[0095] let x=E in F let(x的范围是F)
[0096] g(E1,…,En)具有元数n的基元g
[0097] D(E1,…,En)具有元数n的分布D
[0098] 在TABULAR表达式句法中,假设总确定性函数g的集合,其包括算数运算符和逻辑运算符。还假设基元概率分布的族D,其包括以下。(高斯函数取参数prec;标准差σ遵从恒等式σ2=1/prec。)
[0099] 分布:D:(x1:T1,…,xn:Tn)→T
[0100] Bernoulli:(bias:real)→bool
[0101] Gaussian:(mean:real,prec:real)→real
[0102] Beta:(a:real,b:real)→real
[0103] Gamma:(shape:real,scale:real)→real
[0104] 可以使用Tuples(E1,…,En)以及元组类型T1*...*Tn:它们代表具有数值字段名1,2,...,n的、对应的记录和记录类型。记法fst E用于E.1且snd E用于E.2。
[0105] 半观察模型
[0106] Tabular的语义是通过变换成使用Fun表达式编码的Bayesian模型来解释的。考虑Bayesian模型是从某输入到某输出的概率函数,其由参数控制,该参数本身被选为超参数的概率函数。
[0107] 输出是半观察的,也即,每个输出是一对,由可观察组件加上非观察潜在组件构成。
[0108] 例如,使用变量x用于输入、y用于可观察输出、z用于潜在输出、w用于参数、而h用于超参数。
[0109] 这些变量在Fun值上取范围,并因此可以是标量,但是还可以是由诸如行、表或整个数据库的记录和阵列构建而成的复合结构,或者实际上是空记录{},该空记录{}代表了唯一值,因此其是权标值。
[0110] 模型P的记法:
[0111] Hyper Eh缺省超参数(Eh确定性)
[0112] Prior(h)Ew参数上的分布(给定h)
[0113] Gen(w,x)Eyz输出上的分布(给定w和x)
[0114] 对数据库模式的注释一起形成数据库中的数据模型,其中利用上述记法来表达该模型。
[0115] 考虑数据库表R作为Fun值,该Fun值是行的阵列,每个行都是记录{c1=V1;...;cn=Vn},其中c1,...,cn是表的列,并且V1,...,Vn是列中针对该行的项目。(考虑表为阵列,使得主关键字简单地是阵列的索引,并省去来自行的主关键字。)整个数据库是记录{t1=R1;...;tn=Rn},其保存有命名为t1,...,tn的表R1,...,Rn。
[0116] Tabular的句法
[0117] 关系模式(或非关系模式)给出数据库上的结构。模式 是命名为t1,...,tn的表的有序列表,其中每个表都具有表描述符 所述表描述符 本身是命名为c1,...,cn的类型列的有序列表。Tabular将注释A放置在每列上,从而定义关系模式的概率模型。现将其总结如下:
[0118] Tabular:模式,表,和注释:
[0119] (数据库)模式
[0120] 表描述符
[0121] A::=Input|Latent(M)|Observable(M)注释
[0122] 注释A指示:列是针对整个模式的模型的输入、潜在输出或可观察输出的一部分。模型表达式M提供了可能根据参数或超参赛以及前面的列和表,用于每个输出列的生成过程。
[0123] TABULAR的模型表达式:
[0124]
[0125] Cgaussian模型从Gaussian分布输出样本,其均值和精度分别从Gaussina和Gamma分布采样。
[0126] 现在给出利用TABULAR表达的混合模型的示例。混合模型是两个或更多其它模型之间的概率选择。在该示例中,关系数据库模式包括用户表、电影表和等级表。
[0127] 用户表的模式注释如下:
[0128] z int latent CDiscrete with N=4
[0129] Name string input
[0130] IsMale bool observable Cbernoulli[z]
[0131] Age int observable(CDiscrete with N=100)[z]
[0132] 用户表具有添加用于存储潜在变量z(其为整数型)的潜在列。该列由来自模型表达式库的CDiscrete模型表达式来注释。CDiscrete模型从小于其超参数N的自然数上的离散分布采样,其中参数向量由Dirichlet分布给出。表的name(名称)列是字符串类型并且被标记为输入列。表的IsMale列是布尔类型且标记为可观察输出列并且具有注释,所述注释是来自模型表达式库的CBernoulli模型表达式。Age(年龄)列是整数类型并且被标记为可观察输出列。其由来自模型表达式库的Cdiscrete表达式来注释。N是100,指示存在100个可能的年龄值。
[0133] 电影表注释如下:
[0134] z int latent CDiscrete with N=4
[0135] Title string input
[0136] Genre int observable(CDiscrete with N=7)[z]
[0137] Year int observable(CDiscrete with N=100)[z]
[0138] 电影表具有针对潜在变量z(其为整数类型)的潜在列,并且该列被标记为潜在列。其由来自模型表达式库的模型表达式CDiscrete来注释。电影表具有标题列,该标题列具有字符串类型且被标记为输入列。电影表具有流派列,该流派列是整数类型且被标记为可观察输出列。其由来自模型表达式库的CDiscrete表达式注释。N是7,指示存在7个可能的流派。电影表具有整数类型的年份列且被标记为可观察输出列。其由来自库的CDiscrete表达式注释。N是100,指示存在100个可能的年份。
[0139] 等级表注释如下
[0140] u link(User)input
[0141] m link(Movie)input
[0142] Score int observable(CDiscrete with N=5)[u.z,m.z]
[0143] 等级表具有用于存储用户表的外来关键字的列u。其具有用于存储电影表的外来关键字的列m。其具有用于存储整数的得分列,并且该列被标记为可观察输出且由来自库的CDiscrete表达式注释。
[0144] 模式示出了关于索引模型的记法的耦合。首先,双重索引模型M[E1
[0145] 用户表中的每行具有IsMale属性和Age属性,它们是利用由潜在变量z索引的CBernoulli和CDiscrete建模的,潜在变量z取四个值。考虑用户的四个群集,以及对于每个群集,在性别和年龄上存在不同的分布。类似地,电影表中的每行通过与流派属性和年份属性的四向混合由来建模。最后,等级表中的每行具有到用户和电影以及得分属性的链接,所述得分属性是由用户和电影的群集索引的离散分布来建模的。
[0146] 接着,在四个步骤中解释了Tabular模式的语义,从模型表达式M开始,其是注释A的组成部分。
[0147] 模型表达式的语义
[0148] 针对列c的模型表达式M的语义是模型,该模型的输出y解释了如何生成针对表的每行中的c的条目的模型。用于gen(E)、static(M)和hyper(E)的模型给出如下;这些模型不具有输入(即,x={})并且没有潜在输出(也即,z={})。
[0149] 模型gen(E)通过评估E来产生其输出。
[0150] 用于gen(E)的模型:
[0151] Hyper  空记录{}。
[0152] Prior(h)  空记录{}。
[0153] Gen(W,{})  y其中~E。
[0154] 模型static(M)将其参数设定为M的输出。
[0155] 针对static(M)的模型,其中P是针对M的模型:
[0156] Hyper  P.Hyper。
[0157] Prior(h)  w其中w‘~P.Prior(h)且w~P.Gen(w‘;{})。
[0158] Gen(w,{})  w。
[0159] 模型hyper(E)通过评估E来设定其超参数。
[0160] 针对hyper(E)的模型:
[0161] Hyper  h其中h:=E。
[0162] Prior(h)  h。
[0163] Gen(w,{}) w。
[0164] 针对f=E的M的模型,其中P是针对M的模型:
[0165] Hyper  P.Hyper,其中字段f由E的值替代。
[0166] Prior(h)  P.Prior(h)。
[0167] Gen(w,{}) P.Gen(w,{})。
[0168] 针对M[E
[0169] Hyper  P.Hyper。
[0170] Prior(h)  [w0;...;wc-1]其中,针对每个i
[0171] Gen(w,{})  y~P.Gen(wi,{})且i=E
[0172] 表的行的语义
[0173] 当编写TABULAR语义时,便利的是将表的列分组成输入、潜在输出和可观察输出。为了这样做,将具有n列的表 视为以下级联,在所述级联中,索引集合I、L、O是1…n的分区(也即,集合是分离的且它们的联合是1…n)。
[0174]
[0175]
[0176]
[0177] 表的行的语义是如下模型,该模型的输入是具有行的输入字段的记录,而该模型的输出是针对潜在字段和可观察字段的一对记录。
[0178] 针对表 的行的模型,其中Pj对每个Mj建模:
[0179] Hyper  具有字段为cj:=Mj.Hyper(j∈L∪O)的记录。
[0180] Prior(h)  具有字段为cj Mj.Prior(h.c j)(j∈L∪O)的记录。
[0181] Gen(w,x)  一对记录(y,z),将y设定为具有字段co~Mo.Gen(w.co,{})(o∈O),并且z具有字段cl~Ml.Gen(w.cl,{})(l∈L),具有有界输入变量ci:=x.ci(i∈I)。
[0182] 作为记法便利,以多种方式使用每列名称cj:作为超参数记录的字段(如果列是输出,也即j∈L∪O);作为输入记录的字段(如果列是输入,也即j∈I),以及作为输出记录的字段(如果列是输出,也即j∈L∪O)。
[0183] 例如,此处是用于线性回归的单个表模式。
[0184] LinearRegression
[0185] muA real latent hyper(0)
[0186] muB real latent hyper(0)
[0187] A real latent static(gen(Gaussian(muA,l)))
[0188] B real latent static(gen(Gaussian(muB,l)))
[0189] X real input
[0190] Z real latent gen(A*X+B)
[0191] Y real observable gen(Gaussian(Z,l))
[0192] 该表的行语义如下。使用的一种记录记法,在该记录记法中诸如muA和muB等字段名称保持在有助于定义诸如A和B等后续字段的范围内。为实现可读性,内联(inline)一些变量定义。
[0193] 针对LinearRegression表的行的模型:
[0194] Hyper  {muA=0;muB=0;A={};B={};Z={};Y={}}
[0195] Prior(h)  {muA=h.muA;muB=h.muB;A=Gaussian(muA,l);B=Gaussian(muB,l);Z={};Y={}}
[0196] Gen(w,x)  (y,z)其中y=Gaussian(z.Z,l)且z={muA=w.muA;muB=w.muB;A=w.A;B=w.B;z=A*(x.X)+B}
[0197] 整个表的语义
[0198] 整个表的语义是一种模型,该模型的输入x是输入子表,记录的阵列保存该输入列,该模型的可观察输出y和潜在输出z分别是可观察子表和潜在子表,也即,用于保存该表的可观察列和潜在列的记录的阵列。整个表 的语义是Map2(P),其中P是针对 的行的模型,并且Map2是下面规定的模型组合器。
[0199] 针对Map2(P)的模型:
[0200] Hyper  P.Hyper
[0201] Prior(h)  P.Prior
[0202] Gen(w,x)  记录的阵列对(y,z),其中y=[y0;…;yn-1]且z=[z0;…;zn-1],并且对于i
[0203] 支持外来关键字,例如以变换模式。Fun类型link(t)用于表示外来关键字。使用Fun表达式内的记法(E:link(t)).c来代表由关键字E索引的表t中的行的列c。(在示例中,假设类型link(t)能够从上下文推断出,省去了类型link(t)。)特别地,当针对表tj构建模型Pj时,将类型link(ti)的外来关键字与之前的表ti解除关联是可能的,其中i
[0204] 模式的语义
[0205] 整个模式 的语义学是下面的模型,该模型的输入x是输入数据库,也即,用于保存该模式的输入子表的记录,该模型的可观察输出y是可观察数据库,也即用于保存该模式的可观察子表的记录,并且该模型的潜在输出z是潜在数据库,也即,用于保存该模式的潜在子表的记录。
[0206] 针对该模式的模型
[0207] 令Pi对 的行建模,并且令P’i=Map2(Pi),其中i∈1…n。
[0208] Hyper  具有字段ti:=P’i.Hyper的记录,其中i∈1…n。
[0209] Prior(h)  具有字段ti~P’i.Prior(h.ti)的记录,其中i∈1…n。
[0210] Gen(w;x)  一对记录(y,z),其中y具有字段ti=yi,且z具有字段ti=zi,其中i∈1…n,对于i∈1…n设定(yi,zi)~P’i.Gen(w.ti,xi),具有有界输入变量xi:=x.ti,其中i∈
1…n。
[0211] 为示出外来关键字的模式变换和处理,此处是图2的示例的变换,为实现可读性,重写了一点:首先,针对两个表的两个行模型,随后是整个模式的模型。由于Matches(比赛)中的p1和p2的模型将外来关键字与Players(玩家)非关联化且提取潜在字段,所以模型P2具有变量z1的自由出现,其期望保存t1的潜在子表。
[0212] 针对表t1=Players的行的模型P1:
[0213] Hyper{s={}}
[0214] Prior(h){s={}}
[0215] Gen(w,x)(y,z),其中y={}且z={s=Gaussian(25,0.01)}
[0216] 针对表t2=Matches的行的模型P2:
[0217] Hyper{Perf1={};Perf2={};Win1={}}
[0218] Prior(h){Perf1={};Perf2={};Win1={}}
[0219] Gen(w,x)(y,z),其中y={Win1=(z.Perf1>z.Perf2)}}且z={Perf1=Gaussian(z1[Player1].s,1)};Perf2=Gaussian(z1[Player2].s,1)}且Player1:=x.Player1且Player2:=x.Player2。
[0220] 针对图2示例的模式的模型:
[0221] Hyper{Players=P1.Hyper,Matches=P2.Hyper}
[0222] Prior(h){Players=P1.Prior(h),Matches=P2.Prior(h)}
[0223] Gen(w,x)一对记录(y,z),其中y={Players=y1;Matches=y2},且z={Players=z1;Matches=z2}且(y1,z1)~Map2(P1).Gen(w.t1,x1)且(y2,z2)~Map2(P2).Gen(w.t2,x2)具有边界x1:=x.Players以及x2:=x.Matches。
[0224] 针对Query-as-Latent-Columns的关联学习器
[0225] 为了执行查询,TABULAR可以将数据库和模式绑成学习器L。潜在查询学习器的抽象状态简单地为数据库以及注释的模式 其中Dx是用于保存输入表的记录且Dy是用于保存可观察输出表的记录。
[0226] TABULAR支持学习器上的以下函数API。
[0227] 令 是针对 的空学习器,也即,具有正确的模式但是在任何阵列中都没有数据的一对数据库。
[0228] 令train(L,D’x,D’y)为L’=(Dx+D’x,Dy+D’y),其中+是阵列记录的级联,并且L=(Dx,Dy)。
[0229] 令params(L)为p(w|L)的后验分布。
[0230] 令latents(L)为p(z|L)的后验潜在分布。
[0231] 该新的API能够学习潜在输出,这是因为它以半观察模型来工作。API允许递增的实现方式,其中抽象状态L是由参数和潜在变量上的分布来表示的,其在每次调用train之后被计算。该实现方式计算潜在变量和参数的近似边缘形式,并且将它们存储为数据库表。
[0232] 如上所述,第二形式的推断对来自部分观察的数据的缺失数据进行预测;例如,通过推断以实际上存在于数据库中的观察值为条件的、可观察列中的缺失值的后验概率分布。现在给出该第二形式推断的示例。
[0233] 给定针对整个总分析表的概率模型,图1的系统可以填充空单元的缺失值,并且还检测异常值:其值远离由模型所预测的值的单元。概率模型可以是如该文档中描述的注释数据库模式,其中每个总分析表列是可观察的并且可能具有缺失值,并且针对每行存在额外的潜在列,其用于针对每个可观察列的模型中。下面的Tabular模式对应于用于三列表的这种广义高斯模型。考虑实数值列;其它数据类型(如布尔和整数型)也能够被编码为与适当的链接函数组合的实数(的向量)。
[0234] 广义高斯
[0235]
[0236] (库模型CVectorGaussian类似于CGaussian,但是
[0237] 从多维高斯分布输出向量。)
[0238] 查询是包含总分析表数据的表,其中
[0239] 空的单元由例如符号“?”来替代:
[0240] GG
[0241]
[0242] 第二形式的推断的许多实例能够变换成第一形式的推断。这可以通过做出原表的副本来实现,但是其中每个可观察列变成潜在列,并且针对原表的每个可观察列来创建新表(称为查询表),该新表保存实际上存在的值。例如,上述GG模型变换成下面的表。
[0243] GG’
[0244]
[0245]
[0246] 上面,查询表(X0,X1,和X2)各自包含值列v和关联列r,其标示所述值所来自的行。由于GG’表不包含输入列,因此全部数据都在查询表中,如下:
[0247] 查询表X0
[0248]
[0249] 查询表X1
[0250]
[0251] 查询表X2
[0252]
[0253] 图10示出了可以实现为任何形式的计算设备和/或电子设备的示例性的基于计算的设备1000的各个组件,并且其中,可以实现用于数据库的数据库访问组件108的实施例。
[0254] 基于计算的设备1000包括一个或多个处理器1002,其可以是微处理器控制器或用于处理计算机可执行指令以控制设备操作从而例如通过如下操作来推断数据库的数据的任何其它适当类型的处理器:完成包含缺失外来关键字的数据库的缺失值;识别数据库中的异常值;识别数据库中的错误,以及建议校正值;突出数据库中的数据之间的差异和相似。在例如使用片上系统架构的一些示例中,处理器1002可以包括一个或多个固定函数(也称为加速器),其用硬件(而不是软件或固件)来实现本文所述的方法的一部分。包括操作系统1004的平台软件或任何其它适当的平台软件可以在基于计算的设备处提供以使得能够在设备上执行推断引擎1006、数据库管理工具1008和数据库访问组件1022。在一些示例中,推断引擎1006不存在于设备中并且可经由通信接口1014来访问。在一些示例中,数据库管理工具1008不存在于设备中并且可以经由通信接口1014来访问。
[0255] 计算机可执行指令可以利用基于计算的设备1000能够访问的任意计算机可读介质来提供。计算机可读介质可以包括例如诸如存储器1012等计算机存储介质和通信介质。诸如存储器1012等计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任意方法或技术实现的易失性和非易失性的、可移除的和非可移除的介质。计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储设备、磁盒、磁带、磁盘存储或其它磁存储设备,或能够用于存储信息以便由计算设备访问的任意其它非传输介质。相反,通信介质可以具体实施计算机可读指令、数据结构、程序模块或者调制的数据信号中的其它数据,诸如载波或其它传输机制。如本文定义的,计算机存储介质不包括通信介质。因此,计算机存储介质本身不应解释为传播信号。传播信号可以存在于计算机存储介质中,但是传播信号本身不是计算机存储介质的示例。虽然计算机存储介质(存储器1012)被示出为位于基于计算的设备1000内,但是将意识到的是,存储器可以远程地分布或定位且经由网络或其它通信链路(例如,使用通信接口1014)来访问。
[0256] 基于计算的设备1000还包括输入/输出控制器1016,其被布置成将显示信息输出到显示设备1018,该显示设备1018可以与基于计算的设备1000分离或集成。显示信息可以提供图形用户接口。输入/输出控制器1016还布置成接收和处理来自一个或多个设备的输入,所述设备诸如用户输入设备1020(例如,鼠标键盘照相机、麦克或其它传感器)。在一些示例中,用户输入设备1020可以检测语音输入、用户姿势或其它用户动作并且可以提供自然用户接口(NUI)。该用户输入可用于创建、编辑、删除、操纵数据库,向数据库发布查询,根据推断而省略列或行,与图形用户接口110交互,设定针对异常值检测的灵敏度级别,以及用于如本文所述的其它方法。在实施例中,如果显示设备1018是触摸敏感显示设备,则其还可以充当用户输入设备1020。输入/输出控制器1016还可以输出数据给除了显示设备之外的设备,例如,本地连接的打印设备。
[0257] 输入/输出控制器1016、显示设备1018和可选的用户输入设备1020可以包括NUI技术,其使用户能够以自然的方式与基于计算的设备交互,免于诸如鼠标、键盘、远程控件等输入设备强加的人工约束。可以提供的NUI技术的示例包括但不限于那些依赖于以下各项的技术:语音和/或语言识别、触摸和/或指示笔识别(触摸敏感显示器)、屏幕上以及邻近于屏幕的姿势识别、悬浮手势、头部和眼镜跟踪、语音和语言、视觉、触摸、姿势和机器智能。可以使用的NUI技术的其它示例包括意图和目标理解系统、使用深度照相机(诸如立体照相机系统、红外照相机系统、rgb照相机系统以及这些的组合)的运动姿势检测系统、使用加速度计/陀螺仪的运动姿势检测、面部识别、3D显示、头、眼和注视跟踪、沉浸式增强现实虚拟现实系统以及利用电场传感电极(EEG和相关方法)来感测脑活动的技术。
[0258] 术语‘计算机’或‘基于计算的设备’在此用于指代具有处理能力而使得能够执行指令的任意设备。本领域技术人员将认识到,这些处理能力合并到许多不同的设备并且因此术语‘计算机’或‘基于计算的设备’各自包括PC、服务器移动电话(包含智能手机)、平板计算机、机顶盒、媒体播放器、游戏控制台、个人数字助理和许多其它设备。
[0259] 本文所描述的方法可以由有形存储介质上的机器可读形式的软件来执行,所述软件例如是包含计算机程序代码单元的计算机程序的形式,当程序在计算机上运行并且其中计算机程序可以具体实施在计算机可读介质上时,计算机程序代码单元适于执行本文所述的任何方法的全部步骤。有形存储介质的示例包括计算机存储设备,计算机存储设备包括计算机可读介质,诸如盘、拇指驱动器、存储器等,并且不包括传播信号。传播信号可以存在于有形存储介质中,但是传播信号本身不是有形存储介质的示例。软件能够适于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或者同时地执行。
[0260] 这确认了软件可以是有价值的、可单独交易的商品。其旨在涵盖在“哑设备(dump)”或标准硬件上运行或者控制“哑设备”或标准硬件以执行期望的功能的软件。还旨在涵盖“描述”或定义了硬件的配置的软件,诸如HDL(硬件描述语言)软件,因为其用于设计芯片,或者用于配置通用可编程芯片,以执行期望的功能。
[0261] 本领域技术人员将认识到,用于存储程序指令的存储设备能够分布在网络上。例如,远程计算机可以存储被描述为软件的进程的示例。本地或终端计算机可以访问远程计算机并且下载软件的一部分或全部以运行程序。可替代地,本地计算机可以根据需要来下载软件块,或者在本地终端处执行一些软件指令并且在远程计算机(或计算机网络)处执行一些软件指令。本领域技术人员还将认识到,通过使用本领域技术人员公知的常规技术,软件指令的全部或部分可以由诸如DSP、可编程逻辑阵列等专用电路来执行。
[0262] 可以在不失去所追求的效果的情况下扩展或改变本文给出的任何范围或设备值,这对本领域技术人员来说将是显而易见的。
[0263] 虽然已经以特定于结构特征和/或方法行为的语言描述了主题,但是应当理解的是,在随附权利要求中限定的主题不必局限于上述的具体特征或行为。相反,上述的具体特征和行为被公开为用于实现权利要求的示例性形式。
[0264] 将理解的是,上述的益处和优点可以涉及一个实施例或者可以涉及若干实施例。实施例不限于解决所述问题中的任意问题或全部问题的那些实施例或者具有所述益处和优点中的任意益处和优点或全部益处和优点的那些实施例。将进一步理解的是,对‘一个’项目的引用是指那些项目中的一个或多个。
[0265] 本文所述的方法的步骤可以按任意适当的顺序来执行,或者适当地同时实施。另外,可以在不偏离本文所述主题的精神和范围的情况下将单个块从任意方法中删除。可以在不丧失所追求的效果的情况下将上述示例的任意示例的方面与被描述为形成进一步的示例的其它示例中的任意示例的方面组合。
[0266] 术语‘包括’在本文用于表示包括方法块或所识别的元件,但是这种块或元件不包括排他性列表,并且方法或装置可以包含额外的块或元件。
[0267] 将理解的是,以上描述仅是通过示例的方式给出的,本领域技术人员可以对其做出各种修改。上面的说明书、示例和数据提供了对示例性实施例的结构和使用的完整描述。虽然上文中按照一定程度的特定性或者参考一个或多个单个的实施例来描述了各个实施例,但本领域技术人员可以在不偏离该说明书的精神或范围的情况下对所公开的实施例进行若干改动。
相关专利内容
标题 发布/更新时间 阅读量
访问管理 2020-05-11 420
访问控制 2020-05-12 222
访问控制 2020-05-12 170
数据访问 2020-05-12 13
访问口 2020-05-11 294
数据库访问 2020-05-12 538
载波访问器 2020-05-12 489
控制访问 2020-05-11 485
硬盘访问器 2020-05-12 394
一种访问器 2020-05-11 898
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈