數(shù)據(jù)庫(kù)。對(duì)于查詢的回答可以包括來(lái) 自已經(jīng)由推斷引擎104推斷的潛在列的數(shù)據(jù)。
[0058]數(shù)據(jù)庫(kù)訪問(wèn)組件還可以使用預(yù)測(cè)概率分布來(lái)進(jìn)行以下各項(xiàng)中的一項(xiàng)或者多項(xiàng):識(shí) 別數(shù)據(jù)庫(kù)中的極端值、識(shí)別數(shù)據(jù)庫(kù)中的錯(cuò)誤值、建議對(duì)數(shù)據(jù)庫(kù)中的錯(cuò)誤值的矯正、對(duì)數(shù)據(jù)庫(kù) 中的單元進(jìn)行集群、識(shí)別影響規(guī)定單元的預(yù)測(cè)概率分布的單元或表、識(shí)別用于主動(dòng)學(xué)習(xí)的 單元。數(shù)據(jù)庫(kù)訪問(wèn)組件還可以將注釋和添加的潛在列導(dǎo)出為文件。例如,以在相同模式的另 一數(shù)據(jù)庫(kù)中做出預(yù)測(cè)。
[0059] 在一些示例中,數(shù)據(jù)庫(kù)訪問(wèn)組件108能夠評(píng)估318推斷結(jié)果的準(zhǔn)確度。例如,推斷結(jié) 果包括概率分布,并且這些概率分布的方差或相關(guān)統(tǒng)計(jì)可以指示推斷結(jié)果的確定性的級(jí) 另IJ。方差或相關(guān)統(tǒng)計(jì)可以與閾值或先前值進(jìn)行比較并且用作到圖3的步驟320的反饋形式。 這產(chǎn)生了用于對(duì)潛在列和可觀察列進(jìn)行注釋和/或用于對(duì)潛在列添加進(jìn)行決策的試錯(cuò)過(guò) 程。
[0060] 圖4是針對(duì)圖2的場(chǎng)景的關(guān)系數(shù)據(jù)庫(kù)的示例。在該示例中,玩家表400包括針對(duì)三個(gè) 玩家Alice、Bob和Cynthia的數(shù)據(jù)。比賽表402包括針對(duì)兩個(gè)比賽的數(shù)據(jù):比賽0,其中Alice 對(duì)Bob且Bob獲勝;以及比賽1,其中Bob對(duì)Cynthia且Cynthia獲勝。
[0061 ] 針對(duì)玩家表的潛在技能列的注釋可以例如為:gen(Gaussian(25.0,0.01)),這意 味著關(guān)于玩家技能的置信最初(學(xué)習(xí)發(fā)生之前)是由高斯概率分布描述的,其中均值為 25.0,并且精度是0.01。例如,技能列的每個(gè)條目從均值為25.0且精度為0.01的高斯分布中 抽取。25.0的均值是關(guān)于被表達(dá)為數(shù)值等級(jí)(rating)的玩家技能的置信,而精度指示該模 型有多確定技能等級(jí)是正確的。
[0062] 針對(duì)比賽表的潛在表現(xiàn)1列的注釋可以例如為4611(631188丨311(?135^1'1.8,1.0)), 這意味著在特定比賽中關(guān)于玩家1的表現(xiàn)的置信被建模為高斯分布,其均值等于該玩家的 當(dāng)前技能(來(lái)自玩家表)且精度為1.0。這等同于向玩家的當(dāng)前技能增加噪聲來(lái)對(duì)玩家在特 定比賽中的表現(xiàn)進(jìn)行建模。
[0063] 針對(duì)比賽表的潛在表現(xiàn)2列的注釋可以例如為4611(631188丨311(?135^12.8,1.0)), 這意味著在特定比賽中關(guān)于玩家2的表現(xiàn)的置信被建模為高斯分布,其均值等于玩家的當(dāng) 前技能(來(lái)自玩家表)且精度為1.0。
[0064] 針對(duì)比賽表的Winl可觀察列的注釋可以例如為:gen(Performancel> Performance〗),這意味著玩家1將在與玩家2的比賽中獲勝的置信被建模為玩家1的表現(xiàn)大 于玩家2的表現(xiàn),其中它們的表現(xiàn)從比賽表的潛在列取得。
[0065]在圖4的特定示例中,這些注釋被編譯成推斷算法且利用玩家表400和比賽表402 中的數(shù)據(jù)來(lái)執(zhí)行。推斷結(jié)果填充玩家潛在表404和比賽潛在表406,如在潛在數(shù)據(jù)庫(kù)上的分 布的邊際表示所示。在這些表中的每一個(gè)表中,條目Ga USSian(x,y)指示均值為X且精度為y 的高斯概率分布。
[0066] -旦技能潛在列和玩家表現(xiàn)潛在列被填充,終端用戶與對(duì)于具體列的方式相同的 方式提交查詢以從那些潛在列中取回?cái)?shù)據(jù)是可能的。
[0067] 可觀察列轉(zhuǎn)換成潛在列也是可能的。例如,比賽表的winl列是可觀察列,其在期望 預(yù)測(cè)比賽的結(jié)果的情形下被轉(zhuǎn)換成潛在列。在該情況下,查詢可以是比賽表中的一行,該比 賽表在winl列有缺失條目,如圖4中的408處所指示的。改變針對(duì)winl列的注釋以指示其是 潛在的而不是可觀察的。推斷引擎將注釋進(jìn)行編譯并且利用關(guān)系數(shù)據(jù)庫(kù)表400、402中的數(shù) 據(jù)執(zhí)行推斷并且產(chǎn)生圖4的推斷結(jié)果410,該推斷結(jié)果410指示由伯努利分布表示的置信:玩 家1有85%的幾率在比賽3中獲勝。推斷結(jié)果410存儲(chǔ)在如圖4所示的比賽查詢潛在表中并且 這將參考圖6進(jìn)行更詳細(xì)地描述。
[0068]圖5是在圖1的推斷引擎104處的示例方法的流程圖。推斷引擎接收500注釋,它們 一起形成數(shù)據(jù)庫(kù)的概率模型(整體地或部分地)。推斷引擎還接收要提供用于推斷的數(shù)據(jù)的 數(shù)據(jù)庫(kù)(或數(shù)據(jù)庫(kù)的一部分)的地址。
[0069] 推斷引擎可以是任意軟件架構(gòu),所述軟件架構(gòu)能夠接收以本文所述的注釋(或注 釋的第一階段編譯版本)的形式的概率模型且將其編譯以生成可應(yīng)用于數(shù)據(jù)庫(kù)中的數(shù)據(jù)的 推斷算法。例如,用于實(shí)現(xiàn)確切推斷的軟件架構(gòu)、用于實(shí)現(xiàn)采樣的軟件架構(gòu)、Infer.NET?軟 件架構(gòu)或其它軟件架構(gòu)。軟件架構(gòu)包括使得概率模型的一部分能夠基于選擇器變量來(lái)打開 或關(guān)閉的功能。例如,Infer.NET?軟件架構(gòu)包括提供這種類型的切換能力的門功能。推斷引 擎還包括將概率圖形模型的元素組在一起成為板的功能。
[0070] 推斷引擎對(duì)注釋(或第一階段編譯的注釋)進(jìn)行編譯并且從而得出502推斷算法。 推斷算法被執(zhí)行從而在數(shù)據(jù)庫(kù)上或數(shù)據(jù)庫(kù)的一部分上執(zhí)行504推斷。推斷過(guò)程可以包括訓(xùn) 練階段,其中,數(shù)據(jù)庫(kù)表的行的第一集合被用作訓(xùn)練數(shù)據(jù)。數(shù)據(jù)庫(kù)表的行的第二集合則可以 用于測(cè)試階段中以推斷值。推斷引擎輸出506與數(shù)據(jù)庫(kù)的列和/或單元相關(guān)聯(lián)的概率分布。 這使得能夠獲取針對(duì)關(guān)系數(shù)據(jù)庫(kù)的每個(gè)單元(除了省去推斷的任意單元)的概率分布,該概 率分布表達(dá)了關(guān)于對(duì)單元的數(shù)據(jù)的值的置信。
[0071] 圖6是具有模式206的關(guān)系數(shù)據(jù)庫(kù)102的示意圖,模式206具有添加的潛在列220、 222、224、606、608、610以及添加的潛在表600、612。該示例對(duì)應(yīng)于圖2和圖4的示例。圖4中的 比賽查詢潛在表等同于圖6中的打賭潛在表612、600。關(guān)系數(shù)據(jù)庫(kù)的模式按照上文參考圖4 所描述的被注釋,并且打賭(bet)潛在表612用于保存推斷結(jié)果。例如,推斷引擎104或數(shù)據(jù) 庫(kù)訪問(wèn)組件108將推斷結(jié)果寫入打賭潛在表612。針對(duì)關(guān)系數(shù)據(jù)庫(kù)的模式包括對(duì)打賭潛在表 612的描述600,該描述600包括針對(duì)玩家1的外來(lái)關(guān)鍵字602、針對(duì)玩家2的外來(lái)關(guān)鍵字604、 針對(duì)玩家1表現(xiàn)的潛在列606、針對(duì)玩家2表現(xiàn)的潛在列608以及結(jié)果winl的潛在列610。通過(guò) 將多個(gè)行放置在打賭表中,預(yù)測(cè)多個(gè)即將到來(lái)的比賽的結(jié)果是可能的。
[0072] 參考圖7,考慮到存在大的玩家表的在線情形,相對(duì)少量的玩家排隊(duì)以開始在線游 戲。為了選擇隊(duì)列中的一個(gè)來(lái)與新的玩家玩,可以將類似技能查詢表700添加到模式中,如 圖7所示。與打賭表的方式相同,類似查詢表700具有針對(duì)玩家表的外來(lái)關(guān)鍵字。其填充有針 對(duì)玩家(一個(gè)來(lái)自隊(duì)列,以及新玩家)的每種組合的行。潛在列類似706指示兩個(gè)玩家是否技 能接近。推斷將該列填入到具有伯努利分布的類似技能潛在表708,該類似技能潛在表708 能夠用于選擇技能接近新玩家的對(duì)手。
[0073] 圖8是可以在圖1的圖形用戶接口 110處實(shí)現(xiàn)的示例性圖形用戶接口顯示。該示例 示出了推斷結(jié)果如何可用于填充潛在列的單元。該圖形顯示具有四個(gè)標(biāo)簽800、802、804、 806來(lái)使用戶能夠在玩家潛在表、比賽潛在表、比賽查詢潛在表和類似表的顯示之間進(jìn)行切 換。在該示例中,顯示玩家潛在表的一部分。用戶已經(jīng)選擇了無(wú)線按鈕來(lái)顯示出所有數(shù)據(jù); 其是具有來(lái)自推斷的潛在數(shù)據(jù)(在該情況下為技能)的玩家具體表的原始數(shù)據(jù)。用戶還具有 僅查看缺失數(shù)據(jù)(即,空單元)的選項(xiàng)或者查看查詢數(shù)據(jù)(即,作為查詢的一部分提交給數(shù)據(jù) 庫(kù)的任意行和列)的選項(xiàng)。玩家潛在表的大小在該示例中示出為3列乘30行。用于顯示預(yù)測(cè) 的選項(xiàng)被選擇,并且用于保存查詢和刪除行的按鈕當(dāng)前不可用。用戶當(dāng)前關(guān)心的行由行4處 的黑色箭頭指示,并且可選地由該行中單元的陰影指示。技能列填充有高斯分布的均值和 精度的配對(duì)。這是推斷結(jié)果如何顯示給用戶的一個(gè)示例??梢允褂闷渌绞?。例如,可以顯 示百分比以指示預(yù)測(cè)值的確定性。在其它示例中,可以顯示諸如期望或方差等邊際統(tǒng)計(jì)、 MAP值(諸如前k個(gè)最可能的配置)、錯(cuò)誤條、錯(cuò)誤范圍、繪圖、直方圖或用于傳達(dá)關(guān)于預(yù)測(cè)概 率分布的信息的其它類型的顯示。
[0074]圖9是可以在圖1的圖形用戶接口 110處實(shí)現(xiàn)的另一示例性圖形用戶接口顯示。該 示例示出了推斷結(jié)果如何可用于預(yù)測(cè)數(shù)據(jù)庫(kù)上查詢的概率分布。
[0075] 關(guān)于圖8,圖形顯示具有四個(gè)標(biāo)簽900、902、904、906來(lái)使用戶能夠在對(duì)電影表、用 戶表、等級(jí)表和等級(jí)查詢表的顯示之間切換。在該示例中,顯示了等級(jí)表的一部分。用戶已 經(jīng)選擇了無(wú)線按鈕來(lái)顯示查詢數(shù)據(jù)(即,作為查詢的一部分的、提供給數(shù)據(jù)庫(kù)的任何行和 列)。在該示例中,查詢數(shù)據(jù)包括單行的等級(jí)表,其中,用戶表的外來(lái)關(guān)鍵字值由用戶輸入, 其例如為等級(jí)值(在該示例中為5),而電影ID被推斷為電影ID的列表。
[0076] 該示例示出了終端用戶可以如何提交查詢,其是"如果用戶是用戶表的行3中規(guī)定 的用戶,且等級(jí)是5,則電影將是什么"。可以通過(guò)改變?cè)谛兄刑峤坏闹?,?lái)進(jìn)行其它類型的 "what if(如果…什么)查詢。例如,終端用戶可以詢問(wèn)如果得分或另一外來(lái)關(guān)鍵字值是已 知的則外來(lái)關(guān)鍵字值將是什么。
[0077] 圖形用戶接口還可以包括使用戶能夠?qū)崿F(xiàn)以下各項(xiàng)的任意組合或以下各項(xiàng)中的 一項(xiàng)或者多項(xiàng)的元素:根據(jù)推斷來(lái)排除至少一列或表、規(guī)定列值之間的約束、規(guī)定列之間的 潛在相依性、在接受數(shù)據(jù)庫(kù)中的一個(gè)或多個(gè)單元的值變化之后重新運(yùn)行推斷。
[0078] 由推斷引擎提供的預(yù)測(cè)概率分布可以用于其它任務(wù)以及參考圖2、圖4、圖8和圖9 所描述的那些任務(wù)。例如,突出具有極端值的單元,識(shí)別潛在的錯(cuò)誤,建議對(duì)潛在錯(cuò)誤的校 正,識(shí)別單元之間的相似性,識(shí)別單元之間的差異,對(duì)數(shù)據(jù)庫(kù)的行進(jìn)行集群,確定表的列之 間的關(guān)系,識(shí)別現(xiàn)有的單元或針對(duì)其將提高預(yù)測(cè)準(zhǔn)確度(主動(dòng)學(xué)習(xí))潛在的新行和列,以及 其它任務(wù)。
[0079] 來(lái)自推斷引擎的預(yù)測(cè)概率分布可以用于突出數(shù)據(jù)庫(kù)中的關(guān)系和/或差異。例如,在 識(shí)別出預(yù)測(cè)概率分布中的相似性或差異性的表的列或行之間。預(yù)測(cè)概率分布中的差異可以 基于所推斷的模型參數(shù),諸如具有混合組成或其它潛在變量的關(guān)聯(lián)概率??梢岳藐幱?、顏 色或以任何其它方式將相似性和/或差異性顯示在圖形用戶接口處的表中。在示例中,用戶 可以選擇包含所推斷的值(由數(shù)據(jù)庫(kù)訪問(wèn)組件添加到單元的值)的單元,并且數(shù)據(jù)庫(kù)訪問(wèn)組 件可以突出那些最影響所推斷的值的單元。在另一示例中,用戶可以選擇包含所觀察的值 的單元,并且數(shù)據(jù)庫(kù)訪問(wèn)組件可以突出那些包含最影響所推斷的值的單元。
[0080] 在示例中,數(shù)據(jù)庫(kù)訪問(wèn)組件可以識(shí)別行的群集并且創(chuàng)建群集標(biāo)簽的新潛在列。在 一些示例中,諸如當(dāng)用戶(在新的列中)標(biāo)記他或她認(rèn)為感興趣的行時(shí),可以接收用戶指導(dǎo) (user guidance),并且數(shù)據(jù)庫(kù)訪問(wèn)組件隨后將該新列填充到空白單元中,從而根據(jù)與人類 用戶相同的標(biāo)準(zhǔn)將所有行標(biāo)記為是否感興趣。
[0081 ]如上所述,對(duì)數(shù)據(jù)庫(kù)模式的注釋用本文稱為TABULAR的高級(jí)編程語(yǔ)言來(lái)編寫。例 如,編程語(yǔ)言可以基于稱為FUN的F#概率編程語(yǔ)言。在2012年10月8日遞交的美國(guó)專利申請(qǐng) "Modeling data generating process" 13/646739以及2013年 1 月公開的Gordon等人的 "A Model-Learner Pattern for Bayesian Reasoning" 中詳細(xì)描述了FUN。
[0082] TABULAR利用FUN的具有確定性大小的陣列且在表達(dá)式內(nèi)不具有條件(observe)的 版本?,F(xiàn)在給出TABULAR的句法和語(yǔ)義學(xué)的細(xì)節(jié)。
[0083] TABULAR使用基礎(chǔ)類型bool,int和real,記錄類型和陣列類型。使string = int