国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于XGBoost的搜索結(jié)果智能排序系統(tǒng)

2019-02-07 05:32趙晗孟曉景張春勇
軟件導(dǎo)刊 2019年12期

趙晗 孟曉景 張春勇

摘要:針對(duì)傳統(tǒng)基于模型的搜索引擎排序及特征獲取慢、非數(shù)值特征處理復(fù)雜等問題,提出一種基于XG-Boost的搜索結(jié)果智能排序模型?;赬GBoost算法構(gòu)建排序模型,使用獨(dú)熱編碼和Apriori算法對(duì)非數(shù)值特征進(jìn)行處理和篩選,利用Redis對(duì)用戶和商家特征數(shù)據(jù)進(jìn)行緩存,通過并行預(yù)測(cè)的方式加快模型預(yù)測(cè)商家得分速度,最后利用XGBoost自帶的模型評(píng)價(jià)函數(shù)對(duì)最終訓(xùn)練出來的模型進(jìn)行評(píng)估,結(jié)果顯示模型預(yù)測(cè)準(zhǔn)確率為0.76,說明模型給符合用戶偏好的商家打出了較高的分?jǐn)?shù)。其中在訓(xùn)練集上的AUC為0.72,在測(cè)試集上的AUC為0.69,兩者相差不大,表明模型沒有出現(xiàn)明顯的過擬合現(xiàn)象,而且準(zhǔn)確率較高,可用于構(gòu)建商家排序模型。

關(guān)鍵詞:XGBoost;特征緩存;特征篩選;并行預(yù)測(cè)

DOI:10.11907/rjdk.191138

中圖分類號(hào):TP303 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2019)012-0056-05

0引言

搜索引擎的任務(wù)是在用戶輸入一個(gè)查詢?cè)~后返回給用戶可能相關(guān)的結(jié)果。搜索引擎對(duì)于不同搜索結(jié)果的質(zhì)量(結(jié)果相關(guān)性評(píng)分)進(jìn)行判斷(預(yù)測(cè)),返回結(jié)果越相關(guān),用戶滿意度越高,對(duì)搜索引擎的依賴度和忠實(shí)程度越高,從而為搜索引擎帶來更多流量。因此,搜索結(jié)果質(zhì)量是搜索引擎最重要的評(píng)價(jià)指標(biāo)之一。

為了返回高質(zhì)量的排序列表,現(xiàn)代商用搜索引擎(如Google、百度、搜狗等)在對(duì)候選結(jié)果進(jìn)行排序時(shí),使用了多種相關(guān)性預(yù)測(cè)方法。其中包括傳統(tǒng)基于詞頻的相關(guān)性評(píng)分,如TF-IDF、BM25,也包含基于互聯(lián)網(wǎng)網(wǎng)頁鏈接結(jié)構(gòu)的相關(guān)性評(píng)分,如PageRank、HITS、TrustRank、BrowseRank、ClickRank等,以及近年來以點(diǎn)擊模型為代表,利用用戶與搜索引擎的交互信息計(jì)算搜索結(jié)果相關(guān)性評(píng)分的方法。

(1)基于詞頻的相關(guān)性評(píng)分。這是搜索結(jié)果質(zhì)量最傳統(tǒng)的評(píng)價(jià)方法,該方法評(píng)價(jià)流程可以概括為:首先選取衡量結(jié)果相關(guān)性的特征(如TF-IDF和BM25),對(duì)獲取到的用戶查詢?cè)~和文檔進(jìn)行處理以提取特征,使用特征相似程度代表各個(gè)搜索結(jié)果與用戶查詢?cè)~之間的相關(guān)性。該方法可以快速并且相對(duì)準(zhǔn)確地從基于內(nèi)容的搜索結(jié)果中提取出用戶想要的結(jié)果,是最基礎(chǔ)的排序策略。但是基于詞頻的相關(guān)性評(píng)分并不能完美解決基于內(nèi)容的結(jié)果相關(guān)性問題,Lv等指出,當(dāng)搜索結(jié)果的內(nèi)容長度非常大時(shí),BM25指標(biāo)會(huì)失效。所以,除內(nèi)容信息之外,搜索引擎應(yīng)該尋找更多的有效信息去更有效地衡量搜索結(jié)果的相關(guān)性,這樣才能為用戶提供更滿意的結(jié)果排序。

(2)基于鏈接的相關(guān)性評(píng)分。由于全文搜索引擎中的搜索結(jié)果基本上是網(wǎng)頁,而網(wǎng)頁中一般都攜帶有多個(gè)超鏈接,這些超鏈接使網(wǎng)頁之間可以相互連接,構(gòu)成了一種網(wǎng)格結(jié)構(gòu),所以搜索引擎的研發(fā)者們可用互聯(lián)網(wǎng)網(wǎng)頁的鏈接結(jié)構(gòu)推斷不同結(jié)果的重要性、可靠性等,從而對(duì)搜索結(jié)果的相關(guān)性進(jìn)行更加合理的評(píng)估策略。該方法對(duì)全文搜索引擎的結(jié)果排序相關(guān)性估計(jì)有極大促進(jìn)作用,但是不能應(yīng)用于搜索結(jié)果為非網(wǎng)頁的搜索引擎上。

(3)基于搜索引擎與用戶交互信息的相關(guān)性評(píng)分。近些年來,隨著大規(guī)模數(shù)據(jù)處理技術(shù)及機(jī)器學(xué)習(xí)技術(shù)的發(fā)展,利用用戶與搜索引擎的交互信息計(jì)算搜索結(jié)果相關(guān)性評(píng)分的方法逐漸受到關(guān)注。由于用戶與搜索引擎的交互信息主要是點(diǎn)擊信息,所以研究人員提出構(gòu)建描述用戶點(diǎn)擊行為的點(diǎn)擊模型,嘗試?yán)命c(diǎn)擊信息對(duì)結(jié)果相關(guān)性進(jìn)行評(píng)價(jià)。點(diǎn)擊模型嘗試?yán)么笠?guī)模的用戶點(diǎn)擊信息去推測(cè)用戶對(duì)搜索結(jié)果的點(diǎn)擊概率,以達(dá)到更好利用點(diǎn)擊信息的目的。由于可以有效利用用戶交互信息,點(diǎn)擊模型得到了學(xué)術(shù)界廣泛關(guān)注,在工業(yè)界也得到了大規(guī)模應(yīng)用。例如Etsy、雅虎、Airbnb均使用了點(diǎn)擊模型,根據(jù)客戶偏好進(jìn)行搜索排序工作。

1系統(tǒng)構(gòu)造

1.1系統(tǒng)設(shè)計(jì)

排序模塊用模型對(duì)召回模塊獲得的搜索結(jié)果列表進(jìn)行排序,以獲取質(zhì)量更高的搜索結(jié)果列表。排序模塊首先獲取緩存特征,其中有用戶特征、商家特征以及交叉特征,再用模型對(duì)每個(gè)結(jié)果的特征向量進(jìn)行打分,最后按分?jǐn)?shù)降序構(gòu)造最終結(jié)果。

1.2緩存設(shè)計(jì)

Redis是一款開源的高性能NoSQL數(shù)據(jù)庫。為了滿足高性能的需求,Redis采用了內(nèi)存數(shù)據(jù)集。Redis還具有高效的持久化機(jī)制,以保證數(shù)據(jù)不會(huì)丟失,很適合本文排序模塊中緩存特征數(shù)據(jù)的場(chǎng)景,因此本文使用Redis緩存特征以加快模型預(yù)測(cè)速度。

本文使用的特征包含商家特征、用戶特征以及用戶商家交叉特征,系統(tǒng)如果直接從數(shù)據(jù)庫中讀取數(shù)據(jù),則存在速度慢和數(shù)據(jù)庫壓力過大的隱患,因此本文將數(shù)據(jù)庫中的特征數(shù)據(jù)定期(每日)存人緩存之中,既減輕了數(shù)據(jù)庫壓力,也提高了系統(tǒng)讀取特征的速度,美中不足的是對(duì)本文所述的小型服務(wù)器而言,數(shù)據(jù)量太大會(huì)提高對(duì)內(nèi)存的要求,不過可以使用Redis集群的方法緩解壓力。各種特征在緩存中的存儲(chǔ)格式如表1所示。

1.3并行預(yù)測(cè)

商家數(shù)量較多時(shí),模型使用串行方式進(jìn)行打分會(huì)造成額外的時(shí)間開銷,本文將商家分組分到多個(gè)線程進(jìn)行并行打分,最后將結(jié)果匯集,可以大幅減少時(shí)間開銷。例如若候選集中有180家,本系統(tǒng)會(huì)將180家商品分成4組,分別是50、50、50、30,分配到4個(gè)縣城中進(jìn)行預(yù)測(cè)操作,可有效節(jié)約預(yù)測(cè)時(shí)間,經(jīng)過并行化后預(yù)測(cè)耗時(shí)平均會(huì)下降至串行預(yù)測(cè)耗時(shí)的1/2。具體設(shè)計(jì)方案如圖l所示。

2模型構(gòu)造

2.1XGBoost

本文使用XGBoost(Extreme Gradient Boosting)訓(xùn)練搜索結(jié)果排序模型,XGBoost是GMB(Gradient Boosting Ma-chine)的一個(gè)c++實(shí)現(xiàn),其作者是華盛頓大學(xué)的陳天奇。XGBoost在Kaggle等算法比賽上的成績十分亮眼,以其高效的訓(xùn)練速度以及優(yōu)秀的學(xué)習(xí)效果獲得了機(jī)器學(xué)習(xí)界各類人士的廣泛關(guān)注,工業(yè)界也有很多公司開始使用XG-Boost作廣告點(diǎn)擊率(click Through Rate,CTR)預(yù)估。作為一種提升算法,XGBoost不僅支持分類回歸樹(classifica-tion and Regression Trees,CART)作為其基分類器,而且還支持線性分類器(如邏輯斯蒂回歸和線性回歸)作為其基分類器,本文以CART作為XGBoost的基分類器對(duì)模型進(jìn)行訓(xùn)練。

2.2數(shù)據(jù)介紹

實(shí)驗(yàn)選取Kaggle提供的Yelp數(shù)據(jù)集。本文用到的Yelp數(shù)據(jù)集是Yelp業(yè)務(wù)、評(píng)論和用戶數(shù)據(jù)的子集,最初出現(xiàn)于Yelp數(shù)據(jù)集挑戰(zhàn)賽,該項(xiàng)活動(dòng)是一個(gè)讓學(xué)生對(duì)Yelp數(shù)據(jù)進(jìn)行研究分析并分享研究成果的機(jī)會(huì)。在數(shù)據(jù)集中,可以找到4個(gè)國家11大都市的商業(yè)點(diǎn)評(píng)信息。總共有5200000條用戶評(píng)論、174000家商戶信息,并提供JSON和CSV兩種格式。本文篩選出商家表、用戶表、來訪表作為實(shí)驗(yàn)數(shù)據(jù)。

2.3模型訓(xùn)練

本文模型訓(xùn)練流程為數(shù)據(jù)預(yù)處理、特征選取、模型訓(xùn)練和模型調(diào)參以及最終模型確定。本文首先對(duì)沒有到店記錄的用戶以及沒有來訪記錄的商家進(jìn)行清洗,對(duì)用戶單條評(píng)分、商家總來訪次數(shù)等數(shù)據(jù)進(jìn)行規(guī)范化處理,對(duì)城市、商家類別等屬性進(jìn)行獨(dú)熱編碼處理以產(chǎn)生更多特征。

2.4基礎(chǔ)特征選擇

本文根據(jù)現(xiàn)有與商家相關(guān)的數(shù)據(jù),挑選和構(gòu)造了城市、平均評(píng)分、規(guī)范來訪數(shù)、標(biāo)簽、近半年來訪數(shù)和近一年來訪數(shù)等6種數(shù)據(jù)作為基礎(chǔ)模型的訓(xùn)練特征,特征的詳細(xì)類型、值域以及處理方式見表2。

2.4.1商家特征

2.4.2用戶特征

本文根據(jù)現(xiàn)有與用戶相關(guān)的數(shù)據(jù),挑選和構(gòu)造了規(guī)范訪問數(shù)、平均評(píng)分、平均評(píng)論字?jǐn)?shù)、近半年訪問數(shù)和近一年訪問數(shù)等5種數(shù)據(jù)作為基礎(chǔ)模型的訓(xùn)練特征,特征的詳細(xì)類型、值域以及處理方式見表3。

2.4.3交叉特征(用戶一商家特征)

本文根據(jù)現(xiàn)有與用戶和商家的交互信息數(shù)據(jù),挑選和構(gòu)造了以規(guī)范化到店數(shù)、平均評(píng)分、平均評(píng)論字?jǐn)?shù)、近半年到店數(shù)和近一年到店數(shù)等5種數(shù)據(jù)作為基礎(chǔ)模型的訓(xùn)練特征,特征的詳細(xì)類型、值域以及處理方式見表4。

2.5特征篩選

先驗(yàn)算法(Apriori Algorithm)是一種經(jīng)典的關(guān)聯(lián)規(guī)則學(xué)習(xí)算法。先驗(yàn)算法需要在數(shù)據(jù)挖掘過程中通過多次掃描數(shù)據(jù)庫不斷尋找候選集,然后進(jìn)行剪枝操作。先驗(yàn)算法通過對(duì)最小支持度閾值的設(shè)置,可系統(tǒng)地控制候選項(xiàng)數(shù)量無序增長。

本文使用獨(dú)熱編碼將非數(shù)值型特征轉(zhuǎn)換為數(shù)值型特征,經(jīng)獨(dú)熱編碼處理后的特征有上百個(gè),特征非常稀疏,所以本文使用先驗(yàn)算法處理經(jīng)過獨(dú)熱編碼處理后的商家類別特征,目的是挖掘出與用戶訪問記錄(flag)相關(guān)的商家類別。本文使用先驗(yàn)算法從100多個(gè)商家標(biāo)簽特征中挑選出17個(gè)支持度和置信度較高的特征。最終選出的商家分類特征見表5。

2.6模型評(píng)價(jià)標(biāo)準(zhǔn)

本文使用ROC曲線下方的面積(Area Under the CurveofROC,AUC)作為模型評(píng)價(jià)指標(biāo),AUC一般只能用于二分類模型評(píng)價(jià),而本文模型屬于回歸模型,但是由于將排序模型的預(yù)測(cè)結(jié)果(用戶對(duì)商家評(píng)分)規(guī)范化到了區(qū)間[0,1]中,所以可以將該問題看作一種特殊的分類問題,故本文訓(xùn)練的回歸模型AUC也是可以計(jì)算的。

2.7模型調(diào)參

選取完特征后,將用戶的每條評(píng)分記錄與選取的特征結(jié)合起來,以特征向量為自變量,以規(guī)范化后的用戶評(píng)分為預(yù)測(cè)變量構(gòu)建訓(xùn)練集,進(jìn)行模型訓(xùn)練,同時(shí)通過交叉驗(yàn)證的方法對(duì)模型進(jìn)行參數(shù)調(diào)節(jié)。XGBoost參數(shù)分為3類:通用參數(shù)、Booster參數(shù)和學(xué)習(xí)目標(biāo)參數(shù)。通用參數(shù)用于宏觀的函數(shù)控制,例如選擇樹模型;Booster參數(shù)用來控制模型訓(xùn)練過程中每一步的優(yōu)化情況;學(xué)習(xí)目標(biāo)參數(shù)用來控制訓(xùn)練目標(biāo)的表現(xiàn)情況。本文采用XGBoost回歸樹(XGBRegressor),在前文所述特征的基礎(chǔ)上建立基礎(chǔ)模型,在基礎(chǔ)模型的基礎(chǔ)上使用交叉驗(yàn)證(cross-validation)的方法進(jìn)行參數(shù)調(diào)節(jié),調(diào)節(jié)結(jié)果及相應(yīng)參數(shù)含義如表6所示。

3實(shí)驗(yàn)分析

3.1實(shí)驗(yàn)環(huán)境介紹

本文實(shí)驗(yàn)環(huán)境為在一臺(tái)安裝有CentOS 7.0系統(tǒng)的云主機(jī),擁有16G內(nèi)存,Elasticsearch版本6.2.2,Java版本1.8.0_161,Redis版本4.0.8。

3.2模型評(píng)分

本文使用XGBoost自帶的模型評(píng)價(jià)函數(shù)對(duì)最終訓(xùn)練出來的模型進(jìn)行結(jié)果評(píng)估,結(jié)果如表7所示,其中模型預(yù)測(cè)準(zhǔn)確率為0.76,說明模型給用戶偏好的商家打出了較高的分?jǐn)?shù)。其中在訓(xùn)練集上的AUC為0.72,在測(cè)試集上的AUC為0.69,兩者相差不大,表明模型沒有出現(xiàn)明顯的過擬合現(xiàn)象,而且準(zhǔn)確率較高,可用于構(gòu)建商家排序模型。

3.3排序結(jié)果對(duì)照

為了證明模型對(duì)搜索結(jié)果的提升效果,本文構(gòu)造實(shí)驗(yàn)對(duì)比系統(tǒng)在使用排序模型和不使用排序模型(使用Elastic-search默認(rèn)的排序分?jǐn)?shù))情況下的搜索結(jié)果。如圖2所示,本文用一位在“Hotels & Travel”和“Transportation”標(biāo)簽下有過訪問數(shù)據(jù)的用戶的身份進(jìn)行搜索操作,模擬該用戶在多倫多市搜索“subway”。

在不使用模型排序的情況下(圖2左界面),Elastic-search召回10個(gè)結(jié)果,排名前八的都是“Subway”快餐店,而后面的是兩個(gè)“Subway Station”。在使用模型排序的情況下(圖2右界面),由于該用戶訪問過的商家中沒有“FastFood”和“Restaurants”標(biāo)簽,雖然“Subway”快餐店對(duì)于t,SUb-way”這個(gè)查詢?cè)~來說是精準(zhǔn)匹配,但用戶經(jīng)常與具有“no-tels & Travel”和“Transportation”標(biāo)簽的商家進(jìn)行交互,所以在模型預(yù)測(cè)時(shí)給“Subway Station”的評(píng)分會(huì)較高,最終排序模型還是將兩個(gè)“Subway Station”排在了前面。

雖然本文構(gòu)建的商家排序模型犧牲了一些文本相關(guān)性,但是可以提升迎合用戶偏好的搜索結(jié)果排名,滿足了用戶對(duì)于搜索結(jié)果個(gè)性化、地域化、實(shí)時(shí)化的需求,證明了本文系統(tǒng)的智能性。

4結(jié)語

本文構(gòu)建了基于XGBoost的用戶個(gè)性化商家排序模型,利用XGBoost訓(xùn)練速度快及模型效果明顯的優(yōu)點(diǎn),使用XGBoost構(gòu)造搜索引擎的排序模型。在訓(xùn)練模型時(shí)對(duì)數(shù)據(jù)按照規(guī)范化、獨(dú)熱編碼等方式進(jìn)行處理以生產(chǎn)特征,通過Apriori算法對(duì)稀疏特征進(jìn)行篩選,利用商家特征、用戶特征以及用戶與商家交互信息特征訓(xùn)練模型,使用交叉驗(yàn)證的方式進(jìn)行參數(shù)調(diào)節(jié)和特征選擇,同時(shí)使用Redis緩存對(duì)用戶和商家的特征數(shù)據(jù)進(jìn)行存儲(chǔ),使用并行的方式加快模型預(yù)測(cè)分?jǐn)?shù)的速度。

此外在查詢分析階段,本搜索引擎使用分析方法,將Elasticsearch自帶的分析器組合使用得到最終的查詢分析器,而且該查詢分析器的使用范疇僅限于英文,沒有對(duì)中文的支持。未來研究將加入對(duì)中文的支持,并盡可能將查詢分析從Elasticsearch中獨(dú)立出來,獨(dú)立查詢分析模塊可以更方便地控制查詢分析過程,更便捷地對(duì)用戶輸人的關(guān)鍵詞進(jìn)行語義分析,更方便地使用自然語言處理和人工智能新技術(shù)。

新乡市| 梧州市| 鹤庆县| 江川县| 宣恩县| 唐山市| 丽江市| 扬州市| 万州区| 察哈| 广饶县| 庄浪县| 读书| 肥东县| 原阳县| 泌阳县| 高州市| 阳春市| 马关县| 富民县| 和硕县| 陆良县| 日喀则市| 吴旗县| 三门峡市| 三明市| 岳西县| 保德县| 株洲市| 长治县| 榆林市| 淮北市| 南雄市| 曲松县| 慈溪市| 来宾市| 文化| 集安市| 望江县| 凉城县| 裕民县|