專利名稱:一種基于街區(qū)距離的高維向量快速檢索算法的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于多媒體信息檢索、智能信息處理、數(shù)據(jù)挖掘等數(shù)據(jù)處理領(lǐng)域,具體涉及的是一種基于街區(qū)距離的高維向量快速檢索算法。
背景技術(shù):
隨著計算機(jī)和信息技術(shù)的發(fā)展,產(chǎn)生了海量的多媒體數(shù)據(jù),如何在海量的多媒體數(shù)據(jù)庫中快速找到所需的信息是當(dāng)前多媒體數(shù)據(jù)庫領(lǐng)域研究的一個重點問題。傳統(tǒng)的方法是由人工對多媒體數(shù)據(jù)進(jìn)行標(biāo)注,然后通過文本檢索來實現(xiàn)多媒體信息檢索。然而人工標(biāo)注存在工作量大和主觀性強(qiáng)的缺陷,對于爆炸式增長的多媒體數(shù)據(jù)來說,完全人工標(biāo)注是不可實現(xiàn)的,因此需要研究基于內(nèi)容的多媒體信息檢索技術(shù)。實現(xiàn)基于內(nèi)容的多媒體信息檢索的技術(shù)路線是通過特征變換,將多媒體數(shù)據(jù)映射到高維空間中的點——特征向量,用該特征向量來描述多媒體對象,得到特征庫;然后用同樣的特征變換方法來提取查詢對象的特征向量,最后通過特征向量間的相似度匹配來實現(xiàn)多媒體信息的相似檢索。因此多媒體信息的相似檢索轉(zhuǎn)變?yōu)樵诟呔S特征空間中尋找與給定查詢點最近的點集的過程。要在高維空間中尋找與給定查詢點最相近的點集,最簡單直觀的方法就是順序掃描,即依次將特征庫中的每個特征(高維向量)與查詢點進(jìn)行相似度匹配,返回最匹配的那些特征點集,得到檢索結(jié)果。順序掃描隨著特征庫中特征數(shù)目和特征維度的增加,計算消耗時間線性增大,當(dāng)特征庫中的特征數(shù)目很大時,順序掃描將不能滿足實時性需求。為了加快檢索速度,最常用的方法就是借助于高維索引技術(shù)。為了實現(xiàn)對海量高維向量的管理,研究者們提出了大量的索引結(jié)構(gòu),其中最為經(jīng)典的是以R-tree為代表的R-tree家族系列索引結(jié)構(gòu)。R-tree是20世紀(jì)80年代由Guttman 提出的,用于管理多維矩形塊數(shù)據(jù)而設(shè)計的一種索引結(jié)構(gòu),它是一種利用樹結(jié)構(gòu)管理數(shù)據(jù)的高度平衡樹,每個節(jié)點用該節(jié)點中所有數(shù)據(jù)的最小外接矩形(MBR =Minimal Bounding Rectangle)來表示,實際數(shù)據(jù)僅出現(xiàn)在葉子節(jié)點中。該索引結(jié)構(gòu)通過擴(kuò)展也可用于高維空間中點數(shù)據(jù)的管理。在查詢過程中,從根節(jié)點層到葉子節(jié)點層進(jìn)行向下搜索,通過計算查詢向量和各節(jié)點MBR之間的最小距離來判斷查詢范圍是否與某節(jié)點相交來實現(xiàn)剪枝過濾,僅搜索可能包含結(jié)果的子樹,從而加快檢索速度。該索引結(jié)構(gòu)允許節(jié)點之間的空間重疊,影響了其查詢效率。為了提高R-tree的性能,研究者們相續(xù)提出了 R+-tree、R*-tree、SS-tree、 SR-tree、X-tree、A-tree等索引結(jié)構(gòu)。但這些樹型索引結(jié)構(gòu)隨著特征維度的增加,查詢效率急劇下降,甚至不如順序掃描,這就是所謂的“維數(shù)災(zāi)難”。除了樹型結(jié)構(gòu)之外,還存在高維到一維轉(zhuǎn)換的索引結(jié)構(gòu),例如金字塔技術(shù)、 NB-tree、!Distance, iMinMax等等。高維到一維轉(zhuǎn)換的索引結(jié)構(gòu)通過某種規(guī)則,將高維向量映射為一維數(shù)據(jù)(稱為key值),然后采用一維的B+-tree來管理這些key值,key值在 B+-tree的葉子節(jié)點層有序排列。進(jìn)行查詢時,首先通過相同的高維到一維轉(zhuǎn)換規(guī)則計算查詢向量的查詢key值,最后根據(jù)查詢范圍,確定搜索的key值起始位置和結(jié)束位置,并依次掃描這些key值對應(yīng)的高維向量,計算查詢向量與這些高維向量間的相似性,返回那些最相似的高維向量集,得到檢索結(jié)果。由查詢過程可知,高維到一維轉(zhuǎn)換的索引結(jié)構(gòu)在任何情況下性能均優(yōu)于或等效于順序掃描,且基于前人的大量實驗表明,這類索引結(jié)構(gòu)隨維數(shù)和數(shù)據(jù)量的增加,性能降低緩慢。街區(qū)距離是高維向量相似度匹配算法中最常用的度量方式之一,其運(yùn)算簡單,且具有較高的檢索效率,但先前提出的高維到一維轉(zhuǎn)換的索引結(jié)構(gòu)大都是基于歐式距離匹配度量提出的,沒有哪一種能直接支持街區(qū)距離這一度量方式的。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出了一種基于街區(qū)距離的高維到一維轉(zhuǎn)換的索引結(jié)構(gòu) BlockB-tree,通過高維到一維轉(zhuǎn)換后key值的過濾,能夠加快高維向量的相似檢索速度。 該索引結(jié)構(gòu)既能有效支持基于街區(qū)距離的查詢度量方式,同時也能支持歐式距離的查詢度量方式。本發(fā)明的總體思想如下選取高維空間中的某個點作為參考點,將高維向量集 (特征庫)中的所有高維向量采用這些向量對所選參考點間的街區(qū)距離映射為一維的key 值,然后用B+-tree來管理這些key值,得到BlockB-tree。進(jìn)行查詢時,計算查詢向量和參考點間的街區(qū)距離,得到查詢key值,然后根據(jù)查詢范圍,確定搜索的key值起始位置和結(jié)束位置,并掃描這些key值對應(yīng)的特征向量,計算查詢向量與這些特征向量間的相似性,返回那些最相似的向量集,得到檢索結(jié)果。具體創(chuàng)新點采用高維向量與選定參考點間的街區(qū)距離作為高維到一維轉(zhuǎn)換的規(guī)則,使得本發(fā)明提出的高維到一維轉(zhuǎn)換的索引結(jié)構(gòu)BlockB-tree能夠直接支持基于街區(qū)距離的度量方式進(jìn)行檢索,且也能支持基于歐式距離的度量方式進(jìn)行檢索。本發(fā)明的具體方法步驟為(1)在高維空間中選取一個參考點,將所有的高維向量采用這些高維向量對所選參考點間的街區(qū)距離映射為一維的key值;(2)然后逐一將這些高維向量和對應(yīng)的key值插入到BlockB-tree中;( 進(jìn)行檢索時,首先計算查詢向量與所選參考點間的街區(qū)距離得到一維的查詢key值;(4)根據(jù)查詢范圍和查詢key值,得到需要進(jìn)行搜索的key值的起始位置和結(jié)束位置,掃描計算這些key值對應(yīng)的高維向量與查詢向量間的距離,得到檢索結(jié)果。更進(jìn)一步,步驟1中所述的參考點的選取,既可選取原點或數(shù)據(jù)分布的質(zhì)心為參考點,也可選取高維空間中的任意一個高維向量為參考點。更進(jìn)一步,步驟2中所述的BlockB-tree采用B+-tree索引結(jié)構(gòu)來管理上層的key 值,同時葉子節(jié)點層的每個key值都綁定一個指向?qū)?yīng)高維向量的指針,當(dāng)插入一個高維向量和對應(yīng)的key值時,根據(jù)該key值的大小定位其應(yīng)插入到的葉子節(jié)點,如果該葉子節(jié)點未滿,則直接將key值插入到該葉子節(jié)點中,并產(chǎn)生指向?qū)?yīng)高維向量的指針,更新其父節(jié)點對應(yīng)的key值;如果該葉子節(jié)點已滿,處理的方法包括以下兩種1)結(jié)合待插入的高維向量和key值,直接對該葉子節(jié)點進(jìn)行分裂,并將分裂后新產(chǎn)生的葉子節(jié)點插入到其父節(jié)點中,同時更新其父節(jié)點對應(yīng)的key值,如果父節(jié)點也已滿, 分裂過程繼續(xù)向上傳遞,并更新對應(yīng)的key值;2)如果該葉子的左右兄弟節(jié)點存在未滿的情況,則結(jié)合其左右兄弟節(jié)點,進(jìn)行待插入高維向量和key值的插入,并更新其父節(jié)點對應(yīng)的key值,如果其左右兄弟節(jié)點均滿, 再采用方法1的處理方式進(jìn)行處理。更進(jìn)一步,步驟3中所述的檢索方式,既包括范圍查詢也包括k近鄰查詢。更進(jìn)一步,步驟4中所述的查詢范圍,對于范圍查詢來說,是由查詢半徑來確定的,對于k近鄰查詢來說是由按某一步長遞增的查詢半徑來確定的,直到第k個近鄰到查詢向量的距離值小于查詢半徑為止。再進(jìn)一步,如上所述的查詢半徑確定查詢范圍的方法,對于采用街區(qū)距離作為查詢度量的方式,查詢范圍為(查詢key值-查詢半徑)到(查詢key值+查詢半徑)。再進(jìn)一步,如上所述的查詢半徑確定查詢范圍的方法,對于采用歐式距離作為查詢度量的方式,查詢范圍是由高維空間中點到超平面的距離公式來確定搜索的key值起始位置和結(jié)束位置的,設(shè)高維向量的維度為d,選取的參考點為0(Ol,o2, ... , od),查詢向量為 q(qi,Q2,... , qd),對應(yīng)的查詢key值為key,,q以r為半徑的查詢范圍對應(yīng)的key值起始位置為keyi,結(jié)束位置為key2:1)首先key,的計算可以表示為fk "0J = keyq,根據(jù)查詢向量q與參考點0之間
/=1
的位置關(guān)系,可將該式表示為A (q-o) = key,,得到系數(shù)矩陣A ;2)對于1 ^2所對應(yīng)的各超平面;£|\-0,| = 6炒2位于與查詢向量相對于參考點同一象限的超平面可表示為A(X-O) = key23)高維空間中點α到Ax = β所確定的超平面的距離公式d =
I At (AAt) ―1 (Α α - β ) I I,則根據(jù)點q到A (χ-O) = key2所確定的超平面的距離r,代入到該距離公式中,可以求出key2,根據(jù)查詢范圍上下界key值的對稱性,可以求出Icey1 r = \AT{AAry'[A{q-O)-key2]\\ = \AT{AAryx[keyq -L·y2]\=> Jcey2 = Keyq +r /| 丫⑷7.)-丨 |由對稱性得keyi= keyq-r/ | | At (AAt) 11再進(jìn)一步,步驟4中所述的掃描計算起始位置和結(jié)束位置區(qū)間所有key值對應(yīng)的高維向量與查詢向量間的距離,其掃描方法可以是從起始位置開始到結(jié)束位置的順序掃描,也可以是通過查詢key值定位到葉子節(jié)點應(yīng)該進(jìn)行插入的位置,從此位置開始,分別向前掃描到起始位置再向后掃描到結(jié)束位置或先向后掃描到結(jié)束位置再向前掃描到起始位置。
圖1 (a)本發(fā)明所述方法的流程 1 (b) BlockB-tree 的示例2在BlockB-tree上進(jìn)行范圍查詢的框3在BlockB-tree上進(jìn)行k近鄰查詢的框圖
具體實施方式
下面結(jié)合附圖對本發(fā)明的具體實施方式
做進(jìn)一步說明本實施例的技術(shù)方案如圖1 (a)所示首先,從高維向量集中選取一個參考點;然后逐一計算高維向量集中每個高維向量與參考點間的街區(qū)距離,得到每個高維向量對應(yīng)的key值;再將各高維向量及其對應(yīng)的 key值進(jìn)行插入,得到BlockB-tree (如圖1 (b)所示,上層為B+-tree,葉子節(jié)點層的每個key 值都綁定一個指向?qū)?yīng)高維向量的指針)。在進(jìn)行檢索時,計算查詢向量與參考點間的街區(qū)距離,得到查詢key值,并定位查詢key值在BlockB-tree葉子節(jié)點層應(yīng)該進(jìn)行插入的位置,通過查詢范圍和查詢key值,得到需要進(jìn)行搜索的key值起始位置和結(jié)束位置,然后掃描計算這些key值對應(yīng)的高維向量與查詢向量間的距離,得到檢索結(jié)果。本發(fā)明范圍查詢的流程圖如圖2所示,k近鄰查詢的流程圖如圖3所示。由圖3可知,k近鄰查詢是通過范圍查詢來實現(xiàn),因此下面我們只對范圍查詢作進(jìn)一步的分析。由于本發(fā)明所提出的索引結(jié)構(gòu)BlockB-tree既能支持基于街區(qū)距離的查詢度量方式,又能支持基于歐式距離的查詢度量方式,由此,我們根據(jù)兩種查詢度量方式分別做詳細(xì)說明。已知高維向量的維度d及參考點為0(Ol,o2,…,od),給定查詢向量q和查詢半徑r :1)街區(qū)距離的查詢度量方式首先計算查詢向量的key值keyj如公式1),并定位 key,在葉子節(jié)點層所在的位置。然后由查詢半徑為r,可知對應(yīng)的搜索key值的起始位置為 keyq-r,結(jié)束位置為keyjr。最后由key,所在的位置向前掃描到key^-r止(包含key^-r), 逐一計算每個key值對應(yīng)的高維向量\ (j的取值范圍由key^-r到key,間的key值數(shù)目確定)與查詢向量q間的街區(qū)距離(如公式2),將所有街區(qū)距離小于等于r的高維向量插入到檢索結(jié)果向量集中;再由key^f在的位置向后掃描到keyjr止(包含keyjr),逐一計算每個key值對應(yīng)的高維向量Vk(k的取值范圍由key,到keyjr間的key值數(shù)目確定)與查詢向量q間的街區(qū)距離,將所有街區(qū)距離小于等于r的高維向量插入到檢索結(jié)果向量集中, 得到檢索結(jié)果。
權(quán)利要求
1.一種基于街區(qū)距離的高維向量快速檢索算法,其特征在于具體步驟如下1)在高維空間中選取一個參考點,將所有的高維向量采用該高維向量對所選參考點間的街區(qū)距離映射為一維的key值;2)然后逐一將這些高維向量和對應(yīng)的key值插入到BlockB-tree中;3)進(jìn)行檢索時,首先計算查詢向量與所選參考點間的街區(qū)距離得到一維的查詢key值;4)根據(jù)查詢范圍和查詢key值,得到需要進(jìn)行搜索的key值的起始位置和結(jié)束位置,掃描計算這些key值對應(yīng)的高維向量與查詢向量間的距離,得到檢索結(jié)果。
2.如權(quán)利要求1所述的一種基于街區(qū)距離的高維向量快速檢索算法,其特征在于步驟1中所述的參考點的選取,包括可選取原點或數(shù)據(jù)分布的質(zhì)心為參考點,也包括可選取高維空間中的任意一個高維向量為參考點。
3.如權(quán)利要求1所述的一種基于街區(qū)距離的高維向量快速檢索算法,其特征在于步驟2中所述的BlockB-tree采用B+-tree索引結(jié)構(gòu)來管理上層的key值,同時葉子節(jié)點層的每個key值都綁定一個指向?qū)?yīng)高維向量的指針,當(dāng)插入一個高維向量和對應(yīng)的key值時,根據(jù)該key值的大小定位其應(yīng)插入到BlockB-tree中的某一葉子節(jié)點,如果該葉子節(jié)點未滿,則直接將key值插入到該葉子節(jié)點中,并產(chǎn)生指向?qū)?yīng)高維向量的指針,更新其父節(jié)點對應(yīng)的key值;如果該葉子節(jié)點已滿,處理的方式有兩種1)結(jié)合待插入的高維向量和key值,直接對該葉子節(jié)點進(jìn)行分裂,并將分裂后新產(chǎn)生的葉子節(jié)點插入到其父節(jié)點中,同時更新其父節(jié)點對應(yīng)的key值,如果父節(jié)點也已滿,分裂過程繼續(xù)向上傳遞,并更新對應(yīng)的key值;2)如果該葉子節(jié)點的左右兄弟節(jié)點存在未滿的情況,則結(jié)合其左右兄弟節(jié)點,進(jìn)行待插入高維向量和key值的插入,并更新其父節(jié)點對應(yīng)的key值,如果其左右兄弟節(jié)點均滿, 再采用方法1的處理方式進(jìn)行處理。
4.如權(quán)利要求1所述的一種基于街區(qū)距離的高維向量快速檢索算法,其特征在于步驟3中所述的檢索方式,既包括范圍查詢也包括k近鄰查詢。
5.如權(quán)利要求1所述的一種基于街區(qū)距離的高維向量快速檢索算法,其特征在于步驟4中所述的查詢范圍,對于范圍查詢來說,是由查詢半徑來確定的,對于k近鄰查詢來說是由按某一步長遞增的查詢半徑來確定的,直到第k個近鄰到查詢向量的距離值小于查詢半徑為止。
6.如權(quán)利要求5所述的查詢半徑確定查詢范圍的方法,其特征在于對于采用街區(qū)距離作為查詢度量的方式,查詢范圍為(查詢key值-查詢半徑)到(查詢key值+查詢半徑)。
7.如權(quán)利要求5所述的查詢半徑確定查詢范圍的方法,其特征在于對于采用歐式距離作為查詢度量的方式,查詢范圍是由高維空間中點到超平面的距離公式來確定搜索的 key值起始位置和結(jié)束位置的,設(shè)高維向量的維度為d,選取的參考點為0(Ol,o2,…,od), 查詢向量為9( ,q2,…,qd),對應(yīng)的查詢key值為key,,q以r為半徑的查詢范圍對應(yīng)的 key值起始位置為key”結(jié)束位置為key2 1)首先key,的計算可以表示為
8.如權(quán)利要求1所述的一種基于街區(qū)距離的高維向量快速檢索算法,其特征在于步驟4中所述的掃描計算起始位置和結(jié)束位置區(qū)間所有key值對應(yīng)的高維向量與查詢向量間的距離,其掃描方法可以是從起始位置開始到結(jié)束位置的順序掃描,也可以是通過查詢key 值定位到葉子節(jié)點應(yīng)該進(jìn)行插入的位置,從此位置開始,分別向前掃描到起始位置再向后掃描到結(jié)束位置或先向后掃描到結(jié)束位置再向前掃描到起始位置。
全文摘要
本發(fā)明是一種基于街區(qū)距離的高維向量快速檢索算法,屬于多媒體信息檢索、智能信息處理、數(shù)據(jù)挖掘等數(shù)據(jù)處理領(lǐng)域。在本發(fā)明中,提出了一種基于街區(qū)距離的高維到一維轉(zhuǎn)換的索引結(jié)構(gòu)BlockB-tree,它采用高維向量對參考點間的街區(qū)距離將該高維向量映射為一維key值,用B+-tree索引結(jié)構(gòu)來管理這些key值,同時葉子節(jié)點層的每個key值都綁定一個指向?qū)?yīng)高維向量的指針。進(jìn)行檢索時,使用相同的映射方法將查詢向量映射為一維的查詢key值,然后只需對key值與查詢key值相近的那些高維特征進(jìn)行相似度計算,減少計算量,大大加快檢索速度。在高維向量的相似度匹配算法中,街區(qū)距離是最常用的度量方式之一,其運(yùn)算簡單,且具有較高的檢索效率,但當(dāng)前大多數(shù)索引結(jié)構(gòu)都是基于歐式距離匹配度量提出的。本發(fā)明提出的索引結(jié)構(gòu)不但支持基于歐式距離度量方式的檢索,而且直接支持基于街區(qū)距離度量方式的檢索。
文檔編號G06F17/30GK102306202SQ20111029151
公開日2012年1月4日 申請日期2011年9月30日 優(yōu)先權(quán)日2011年9月30日
發(fā)明者呂慧, 呂銳, 楊麗芳, 黃祥林 申請人:中國傳媒大學(xué)