本發(fā)明屬于時(shí)空數(shù)據(jù)管理,具體涉及一種基于組件重構(gòu)和xgboost的多關(guān)鍵詞覆蓋下最優(yōu)路徑查詢方法。
背景技術(shù):
1、隨著智能設(shè)備、基于位置的社交網(wǎng)絡(luò)和空間數(shù)據(jù)庫(kù)的普及,路網(wǎng)中的大量軌跡數(shù)據(jù)受到了人們廣泛的關(guān)注。此外,用戶日常生活出行也離不開(kāi)這些軌跡數(shù)據(jù)。例如現(xiàn)有通過(guò)ch收縮技術(shù),h2h樹(shù)分解技術(shù)的最短距離查詢算法。然而,隨著用戶個(gè)性化需求的逐漸細(xì)化,單一維度下的最短距離查詢顯然無(wú)法滿足用戶多樣化的需求。因此,多關(guān)鍵詞覆蓋下最優(yōu)路徑查詢進(jìn)一步考慮了路網(wǎng)中興趣點(diǎn)(points?of?interests,poi)的關(guān)鍵詞信息,為用戶規(guī)劃滿足用戶指定出行需求關(guān)鍵詞信息的最短路徑。
2、現(xiàn)有用來(lái)解決多關(guān)鍵詞覆蓋下最優(yōu)路徑的算法主要可以分為兩類(lèi):基于poi候選集的算法以及基于路徑拓展的算法?;趐oi候選集的算法首先根據(jù)給定的查詢關(guān)鍵字獲取滿足查詢的poi候選集合,旨在縮小搜索空間,然后根據(jù)其貪心策略構(gòu)建最優(yōu)路徑?;诼窂酵卣沟乃惴▌t從起點(diǎn)出發(fā),逐步構(gòu)建滿足查詢關(guān)鍵詞的大量候選路徑,直到構(gòu)建出滿足全部查詢關(guān)鍵詞的最優(yōu)路徑。然而,這兩種方法都各自存在著優(yōu)缺點(diǎn):基于候選集的算法通過(guò)對(duì)poi點(diǎn)的過(guò)濾首先縮小了搜索空間,在獲取候選集之后貪心構(gòu)建路徑。因此基于poi候選集的算法往往在響應(yīng)時(shí)間上更快。然而,貪心策略構(gòu)建路徑則會(huì)導(dǎo)致路徑陷入局部最優(yōu)解,導(dǎo)致路徑距離較長(zhǎng)。為了規(guī)劃更短的路徑,基于路徑拓展的算法通過(guò)路徑拓展,逐步將路徑拓展到不同的poi,這增加了搜索范圍,所以基于路徑拓展的算法則需要更長(zhǎng)的時(shí)間來(lái)規(guī)劃路徑。因此,現(xiàn)有算法存在著明顯的響應(yīng)時(shí)間與路徑精度的權(quán)衡問(wèn)題。
3、從用戶的體驗(yàn)來(lái)看,應(yīng)該在短時(shí)間內(nèi)為用戶返回精度較高的路徑。然而,現(xiàn)有的單一算法顯然不能滿足這一需求。具體來(lái)說(shuō),如果路徑規(guī)劃系統(tǒng)快速的返回了一條精度較低的路線,則可能會(huì)導(dǎo)致用戶出行時(shí)間的增加。相反,如果路徑規(guī)劃系統(tǒng)通過(guò)較長(zhǎng)的時(shí)間響應(yīng)精度較高的路徑,一定程度上也會(huì)影響用戶的出行體驗(yàn)。
技術(shù)實(shí)現(xiàn)思路
1、為了進(jìn)一步提高用戶的出行體驗(yàn),在短時(shí)間內(nèi)返回較短的路徑,本發(fā)明提出了一種基于組件重構(gòu)和xgboost的算法集成庫(kù)構(gòu)建方法。
2、本發(fā)明提供的基于組件重構(gòu)和xgboost的算法集成庫(kù)構(gòu)建方法,包括以下步驟:
3、步驟1、對(duì)現(xiàn)有解決多關(guān)鍵詞覆蓋下最優(yōu)路徑的算法進(jìn)行分類(lèi),將算法分為兩類(lèi):基于poi候選集的算法和基于路徑拓展的算法。并將這兩類(lèi)下的算法作為算法集成庫(kù)下的初始算法;
4、步驟2、根據(jù)基于poi候選集的算法的路徑構(gòu)建過(guò)程,首先將其拆解為兩類(lèi)組件:點(diǎn)過(guò)濾組件和點(diǎn)連接組件,并分別對(duì)點(diǎn)過(guò)濾組件和點(diǎn)連接組件進(jìn)行優(yōu)化;最后通過(guò)優(yōu)化后的點(diǎn)過(guò)濾組件和點(diǎn)連接組件重構(gòu)基于poi候選集的算法,生成基于poi候選集的重構(gòu)算法;
5、步驟3、對(duì)于基于路徑拓展的算法,因此首先集成h2h索引結(jié)構(gòu)以提高查詢效率;其次對(duì)不同的基于路徑拓展的算法分別引入鄰近poi細(xì)化策略,支配關(guān)系剪枝和批量剪枝策略以提升路徑拓展效率,生成基于路徑拓展的優(yōu)化算法;
6、步驟4、納入路網(wǎng)特征和查詢特征,基于歷史查詢數(shù)據(jù),引入在不同查詢時(shí)段下的最優(yōu)算法評(píng)價(jià)準(zhǔn)則,構(gòu)建預(yù)測(cè)模型訓(xùn)練集;在預(yù)測(cè)模型訓(xùn)練集中,每一個(gè)歷史查詢的最優(yōu)算法屬于基于poi候選集的重構(gòu)算法和基于路徑拓展的優(yōu)化算法的其中之一;然后利用xgboost算法構(gòu)建最優(yōu)算法預(yù)測(cè)模型;根據(jù)用戶查詢的特征屬性,為其預(yù)測(cè)最優(yōu)算法,并通過(guò)這個(gè)最優(yōu)算法為用戶規(guī)劃路徑。
7、進(jìn)一步的,步驟2對(duì)基于poi候選集的初始算法進(jìn)行組件拆解,重構(gòu)的方法如下:
8、步驟2.1、利用基于poi候選集的初始算法構(gòu)建路徑的步驟進(jìn)行組件拆解;具體的,基于poi候選集的初始算法首先利用poi預(yù)處理方法tmd或空間索引結(jié)構(gòu)igtree索引,grid索引,在全局路網(wǎng)中根據(jù)查詢的起點(diǎn)和終點(diǎn)的空間位置,過(guò)濾掉大量無(wú)法構(gòu)建最優(yōu)路徑的poi點(diǎn),將滿足查詢關(guān)鍵詞需求的poi點(diǎn)加入到poi候選集cpoi中;隨后基于poi候選集的初始算法從起點(diǎn)開(kāi)始按照兩種不同貪心策略構(gòu)建路徑;根據(jù)上述首先過(guò)濾poi點(diǎn),再構(gòu)建路徑的過(guò)程,將一個(gè)基于poi候選集的初始算法拆解為2個(gè)組件;其中過(guò)濾poi點(diǎn)的方法為點(diǎn)過(guò)濾組件,貪心策略構(gòu)建路徑的方法為點(diǎn)連接組件;
9、步驟2.2、將步驟2.1中的點(diǎn)過(guò)濾組件集成h2h索引,以加速在poi過(guò)濾過(guò)程中需要調(diào)用多次的最短距離查詢,形成優(yōu)化后的點(diǎn)過(guò)濾組件;
10、步驟2.3、將步驟2.1中的點(diǎn)連接組件通過(guò)并行貪心的策略進(jìn)行優(yōu)化,形成優(yōu)化后的點(diǎn)連接組件;
11、步驟2.4、對(duì)每一個(gè)優(yōu)化后的點(diǎn)過(guò)濾組件和點(diǎn)連接組件進(jìn)行組合,重構(gòu)基于poi候選集的重構(gòu)算法。的算法庫(kù)中共有3種點(diǎn)過(guò)濾組件,2種點(diǎn)連接組件,最后通過(guò)組合重構(gòu),形成了6種基于poi候選集的重構(gòu)算法。
12、進(jìn)一步的,對(duì)點(diǎn)連接組件通過(guò)并行貪心的策略進(jìn)行優(yōu)化,包括利用并行“最近鄰貪心”策略nn-parallel對(duì)點(diǎn)連接組件進(jìn)行優(yōu)化,或者利用并行“最大服務(wù)數(shù)量貪心”ms-parallel對(duì)點(diǎn)連接組件進(jìn)行優(yōu)化;其中,
13、1)利用并行最近鄰貪心策略nn-parallel對(duì)點(diǎn)連接組件進(jìn)行優(yōu)化,具體的,給定查詢q(s,t,{kw…}),s為查詢起點(diǎn),t為查詢目的地,{kw…}為查詢關(guān)鍵詞集合;nn-parallel并行從起點(diǎn)s,終點(diǎn)t開(kāi)始,在cpoi中獲取距離起點(diǎn)最近的可以滿足查詢關(guān)鍵詞的poi點(diǎn),加入到路徑中,隨后迭代從cpoi中獲取poi點(diǎn),直到全部的查詢關(guān)鍵詞被滿足;最后,選擇其路徑距離最短的一條路徑作為結(jié)果;
14、2)利用并行最大服務(wù)數(shù)量貪心ms-parallel對(duì)點(diǎn)連接組件進(jìn)行優(yōu)化;具體的,ms-parallel并行從起點(diǎn)s,終點(diǎn)t開(kāi)始,首先從cpoi中獲取其可以滿足最多未滿足查詢關(guān)鍵詞的poi點(diǎn),隨后迭代的獲取下一個(gè)可以滿足最多數(shù)量查詢關(guān)鍵詞的poi點(diǎn),直到全部的查詢關(guān)鍵詞被滿足;最后,選擇其路徑距離最短的一條路徑作為結(jié)果;
15、進(jìn)一步的,步驟3集成h2h索引,鄰近poi細(xì)化策略,支配關(guān)系剪枝和批量剪枝策略的方法如下:
16、步驟3.1、集成h2h索引結(jié)構(gòu);
17、步驟3.2、在集成h2h索引的基礎(chǔ)之上,對(duì)于基于路徑拓展的算法epe,引入鄰近poi點(diǎn)路徑細(xì)化策略以縮短初始結(jié)果路徑中一對(duì)相鄰poi點(diǎn)之間的路徑距離,進(jìn)一步降低路徑長(zhǎng)度;
18、對(duì)于基于路徑拓展的算法pne,pne-a*,引入支配關(guān)系剪枝策略,在路徑拓展過(guò)程中,對(duì)部分已被其他路徑所支配的路徑提前結(jié)束路徑拓展,提升算法的執(zhí)行效率;
19、對(duì)于基于路徑拓展的算法vde,由于vde算法從起點(diǎn)s開(kāi)始,沿著最短路徑sp(s,t),對(duì)每一個(gè)最短路徑上的偏離點(diǎn)發(fā)起近鄰查詢,以構(gòu)建候選路徑。
20、進(jìn)一步的,步驟4中利用xgboost構(gòu)建最優(yōu)算法預(yù)測(cè)模型,具體過(guò)程如下:
21、步驟4.1、納入全面的路網(wǎng)特征和查詢特征;
22、步驟4.2、首先獲取大量的歷史查詢,然后對(duì)于每一個(gè)歷史查詢,執(zhí)行每一個(gè)基于poi候選集的算法和基于路徑拓展的算法,并記錄算法的響應(yīng)時(shí)間qtime和路徑距離qdis;
23、步驟4.3、引入最優(yōu)算法評(píng)價(jià)準(zhǔn)則,將用戶發(fā)起查詢的時(shí)段分為常規(guī)時(shí)段和高峰時(shí)段;在高峰時(shí)段,定義算法響應(yīng)時(shí)間上界α,隨后,響應(yīng)時(shí)間低于α的算法首先被排除;最后,對(duì)于每一個(gè)響應(yīng)時(shí)間低于α的算法,將能夠產(chǎn)生最短路徑的算法分配給當(dāng)前查詢;在常規(guī)周期,用戶發(fā)起查詢的數(shù)量較少,但是依然要同時(shí)兼顧算法的執(zhí)行時(shí)間和路徑距離;因此,首先定義常規(guī)周期的算法響應(yīng)時(shí)間閾值β,隨后,響應(yīng)時(shí)間超過(guò)閾值β的算法首先被排除;對(duì)于剩余的算法,同時(shí)考慮每一個(gè)算法的響應(yīng)時(shí)間和路徑距離,引入權(quán)重參數(shù)γ,執(zhí)行加權(quán)計(jì)算,獲取每一個(gè)算法的分?jǐn)?shù)ascore;最后,將ascore分?jǐn)?shù)最低的算法作為當(dāng)前查詢的最優(yōu)算法;ascore的計(jì)算方式如下,其中dmin為當(dāng)前剩余算法的最短路徑距離,tmin為當(dāng)前剩余算法的最快響應(yīng)時(shí)間;
24、
25、步驟4.4、給定一個(gè)新的查詢,首先,根據(jù)最優(yōu)算法預(yù)測(cè)模型,結(jié)合當(dāng)前的路網(wǎng)特征和查詢特征,為這個(gè)查詢預(yù)測(cè)最優(yōu)算法,然后利用最優(yōu)算法構(gòu)建路徑,返回給用戶。
26、在實(shí)際的大規(guī)模路網(wǎng)環(huán)境下:本方案首次將更多的路網(wǎng)特征和查詢特征以及xgboost預(yù)測(cè)模型引入到了多關(guān)鍵詞覆蓋下的最短路徑查詢算法中。經(jīng)過(guò)亞洲,美洲等區(qū)域內(nèi)的實(shí)際路網(wǎng)驗(yàn)證,本方案所提出的組件組合以及重構(gòu)策略能夠進(jìn)一步提升現(xiàn)有算法的路徑精度和響應(yīng)時(shí)間。對(duì)于基于路徑拓展的算法emb,加入優(yōu)化策略后的路徑距離平均降低了3-10%。加入支配關(guān)系剪枝后,pruningkosr算法的響應(yīng)時(shí)間降低了1-2個(gè)數(shù)量級(jí)。加入批量剪枝策略后da-prune算法的響應(yīng)時(shí)間降低了75%;本方案在處理真實(shí)的查詢請(qǐng)求時(shí),通過(guò)xgboost最優(yōu)算法預(yù)測(cè)模型預(yù)測(cè)的算法所構(gòu)建的路徑在響應(yīng)時(shí)間和路徑距離維度下均有明顯優(yōu)勢(shì)。在查詢高峰期,預(yù)測(cè)模型構(gòu)建的路徑精度比基于候選集算法的高5%。與基于路徑拓展的算法相比,響應(yīng)時(shí)間提升了一個(gè)數(shù)量級(jí)。在查詢常規(guī)期,路徑精度比基于poi候選集的算法提高了8%,比基于路徑拓展的算法提高了2%。此外,與基于路徑拓展的算法相比,響應(yīng)時(shí)間也縮短了50%。