数据库访问的制作方法_2

文档序号:9829925阅读:来源:国知局
的。
[0033] 在添加潜在列和/或表以及注释的进程是半自动或手动的示例中,终端用户可以 经由图形用户接口 110或者通过计算设备122与数据库管理工具106之间的任何其他通信来 访问数据库管理工具处的编程环境。在一些示例中,数据库管理工具106可以与计算设备 122集成。终端用户可以将潜在列和/或表添加到数据库模式中并且通过在编程环境中以适 当的概率(probabilistic)编程语言编写指令来创建注释。概率编程语言是一种利用概率 分布来表示关于变量值的置信(belief)的编程语言。注释是概率编程语言中的表达式,其 可以由数据库管理工具和/或推断引擎104编译成推断算法。
[0034] 通过使用注释,数据库访问组件和推断引擎不需要显式地使用因子图结构。这是 有益的,尤其对于因子图由于手写而变得棘手的复杂任务而言。注释可被编译成概率编程 语言代码,其中随机变量是程序变量、因子是基元操作、板是循环,而门是条件或开关。
[0035] 通过使用在具体模式中编码的数据的建模,能够使用简洁的注释。每个表描述隐 式地定义了在其行上的循环。给用户省去了编写用于在语言和数据库之间传输数据和结果 的代码的麻烦。而且,各个列的注释可以组合地汇编,这使得数据库访问组件能够以简单且 有效的方式构建复杂模型。
[0036] 由于数据库和推断引擎可位于云中,因此大量的数据可供推断引擎使用,其中那 些量可以大于在终端用户设备处在图形用户接口中实际和/或有用地显示的数据量。通过 在推断引擎处使用大量的数据,可以提高由推断引擎进行的预测的确定度和确定性。
[0037] 可选地,或者另外地,图1的任何实体的功能或者那些实体的任何部分的功能能够 至少部分地由一个或多个硬件逻辑组件来执行。例如而非限制,能够使用的硬件逻辑组件 的示例类型包括:现场可编程门阵列(FPGA)程序特定集成电路(ASIC)、程序特定标准产品 (ASSP)、片上系统的系统(S0C)、复杂可编程逻辑器件(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"、"Γ、"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推断结果来回应数据库查询。例如,在 该数据库还保存了推断结果的情况下,查询被转送到
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1