本發(fā)明涉及一種機(jī)票附加產(chǎn)品的推薦系統(tǒng)及方法。
背景技術(shù):
在線購買機(jī)票已經(jīng)成為用戶購買機(jī)票的主流方式,用戶在購買機(jī)票的同時,往往會購買機(jī)票附加產(chǎn)品(例如保險、快速安檢通道等和機(jī)票聯(lián)合出售商品)。也有很多用戶由于匆忙會遺忘購買,為了給用戶更好的購買體驗,可以在用戶購買機(jī)票時對用戶可能購買的產(chǎn)品進(jìn)行默認(rèn)勾選。準(zhǔn)確的默認(rèn)勾選能有效提高用戶體驗度,錯誤率高的勾選會造成用戶不滿意進(jìn)而導(dǎo)致用戶流失。準(zhǔn)確預(yù)測用戶的購買行為,并進(jìn)行默認(rèn)勾選推薦十分重要。
經(jīng)過多年的發(fā)展,推薦系統(tǒng)已經(jīng)在各個領(lǐng)域內(nèi)得到廣泛的應(yīng)用,尤其在個性化推薦里面。例如,電影和音樂等。主流的推薦系統(tǒng)主要分兩種,利用記錄,利用特征。利用記錄是基于協(xié)同過濾的推薦,利用用戶的購買歷史,找出購買歷史相近的用戶,為他們推薦相似的產(chǎn)品。另一種是基于模型的推薦,利用用戶和商品的特征把購買問題當(dāng)成簡單的分類問題,例如,一個用戶是否喜歡某一部電影。有很多基于模型的算法,例如,決策樹、svm(supportvectormachine,支持向量機(jī))、貝葉斯等。
而關(guān)于機(jī)票附加產(chǎn)品的推薦問題和以往的推薦問題有所不同。首先,是關(guān)于購買了機(jī)票以后的附加產(chǎn)品的推薦問題,以往推薦的一般是同類產(chǎn)品或者是用戶購買產(chǎn)品的關(guān)聯(lián)產(chǎn)品;其次,產(chǎn)品的數(shù)量很少,以往的推薦的產(chǎn)品數(shù)量一般是百到萬甚至百萬;最后,由于機(jī)票不是一個經(jīng)常購買的產(chǎn)品(一般一個用戶一年只購買不到4張),用戶的歷史信息比較少,而且有很多新的用戶出現(xiàn)。
綜上所述,如何利用相對不足的機(jī)票訂單信息來預(yù)測用戶購買機(jī)票附加產(chǎn)品的行為是一個困難的過程。對于一個用戶而言,購買的機(jī)票頻率不高,所以不太適合使用協(xié)同過濾一類的算法。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中推薦系統(tǒng)無法準(zhǔn)確地推薦出機(jī)票附加產(chǎn)品的缺陷,提供一種機(jī)票附加產(chǎn)品的推薦系統(tǒng)及方法。
本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題:
一種機(jī)票附加產(chǎn)品的推薦系統(tǒng),其特點(diǎn)在于,所述推薦系統(tǒng)包括模型訓(xùn)練模塊、模型測試驗證模塊及推薦模塊;
所述模型訓(xùn)練模塊用于通過xgboost算法(一種分類算法)并結(jié)合訓(xùn)練數(shù)據(jù)來訓(xùn)練出xgboost模型;
所述模型測試驗證模塊用于通過測試數(shù)據(jù)對所述xgboost模型進(jìn)行測試,并且通過所述測試數(shù)據(jù)對應(yīng)的驗證結(jié)果來驗證所述xgboost模型的輸出準(zhǔn)確率;
所述推薦模塊用于當(dāng)所述輸出準(zhǔn)確率大于或等于預(yù)設(shè)準(zhǔn)確率時,上線所述xgboost模型,所述推薦模塊還用于當(dāng)接收到推薦請求時,通過所述xgboost模型并結(jié)合請求中的用戶數(shù)據(jù)來推薦出機(jī)票附加產(chǎn)品。
較佳地,所述訓(xùn)練數(shù)據(jù)包括第一用戶歷史訂單數(shù)據(jù)及第一用戶特征數(shù)據(jù),所述測試數(shù)據(jù)包括第二用戶歷史訂單數(shù)據(jù)及第二用戶特征數(shù)據(jù),所述用戶數(shù)據(jù)包括第三用戶歷史訂單數(shù)據(jù)、第三用戶特征數(shù)據(jù)及當(dāng)前航班信息。
較佳地,所述第一用戶歷史訂單數(shù)據(jù)、所述第二用戶歷史訂單數(shù)據(jù)及第三用戶歷史訂單數(shù)據(jù)均包括始發(fā)地、目的地、起飛時間、落地時間及機(jī)票附加產(chǎn)品購買信息;
所述第一用戶特征數(shù)據(jù)、所述第二用戶特征數(shù)據(jù)及第三用戶特征數(shù)據(jù)均包括年齡、性別及價格敏感度;
所述當(dāng)前航班信息包括當(dāng)前起飛時間、當(dāng)前起飛城市及機(jī)票價格。
較佳地,所述模型訓(xùn)練模塊用于采用spark分布式計算(一種高效的分布式計算)來訓(xùn)練出xgboost模型;和/或,
所述模型測試驗證模塊用于采用交叉驗證法對所述xgboost模型進(jìn)行測試。
較佳地,所述推薦模塊還用于上線所述xgboost模型后,通過a/b測試(一種通過對照實驗的測試方法)調(diào)節(jié)出決策閾值,若通過所述xgboost模型預(yù)測出的用戶購買概率大于或等于所述決策閾值時,默認(rèn)勾選相應(yīng)的機(jī)票附加產(chǎn)品,若所述用戶購買概率小于所述決策閾值時,取消對相應(yīng)的機(jī)票附加產(chǎn)品的勾選。
一種機(jī)票附加產(chǎn)品的推薦方法,其特點(diǎn)在于,所述推薦方法包括以下步驟:
s1、通過xgboost算法并結(jié)合訓(xùn)練數(shù)據(jù)來訓(xùn)練出xgboost模型;
s2、通過測試數(shù)據(jù)對所述xgboost模型進(jìn)行測試,并且通過所述測試數(shù)據(jù)對應(yīng)的驗證結(jié)果來驗證所述xgboost模型的輸出準(zhǔn)確率;
s3、當(dāng)所述輸出準(zhǔn)確率大于或等于預(yù)設(shè)準(zhǔn)確率時,上線所述xgboost模型,所述推薦模塊還用于當(dāng)接收到推薦請求時,通過所述xgboost模型并結(jié)合請求中的用戶數(shù)據(jù)來推薦出機(jī)票附加產(chǎn)品。
較佳地,在步驟s1中,所述訓(xùn)練數(shù)據(jù)包括第一用戶歷史訂單數(shù)據(jù)及第一用戶特征數(shù)據(jù);
在步驟s2中,所述測試數(shù)據(jù)包括第二用戶歷史訂單數(shù)據(jù)及第二用戶特征數(shù)據(jù);
在步驟s3中,所述用戶數(shù)據(jù)包括第三用戶歷史訂單數(shù)據(jù)、第三用戶特征數(shù)據(jù)及當(dāng)前航班信息。
較佳地,所述第一用戶歷史訂單數(shù)據(jù)、所述第二用戶歷史訂單數(shù)據(jù)及第三用戶歷史訂單數(shù)據(jù)均包括始發(fā)地、目的地、起飛時間、落地時間及機(jī)票附加產(chǎn)品購買信息;
所述第一用戶特征數(shù)據(jù)、所述第二用戶特征數(shù)據(jù)及第三用戶特征數(shù)據(jù)均包括年齡、性別及價格敏感度;
所述當(dāng)前航班信息包括當(dāng)前起飛時間、當(dāng)前起飛城市及機(jī)票價格。
較佳地,在步驟s1中,采用spark分布式計算來訓(xùn)練出xgboost模型;和/或,在步驟s2中,采用交叉驗證法對所述xgboost模型進(jìn)行測試。
較佳地,在步驟s3中,上線所述xgboost模型后,通過a/b測試調(diào)節(jié)出決策閾值,若通過所述xgboost模型預(yù)測出的用戶購買概率大于或等于所述決策閾值時,默認(rèn)勾選相應(yīng)的機(jī)票附加產(chǎn)品,若所述用戶購買概率小于所述決策閾值時,取消對相應(yīng)的機(jī)票附加產(chǎn)品的勾選。
在符合本領(lǐng)域常識的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實例。
本發(fā)明的積極進(jìn)步效果在于:
本發(fā)明提供的機(jī)票附加產(chǎn)品的推薦系統(tǒng)及方法利用xgboost模型來準(zhǔn)確細(xì)致地推薦出機(jī)票附加產(chǎn)品,可對用戶所需要的機(jī)票附加產(chǎn)品進(jìn)行準(zhǔn)確的默認(rèn)勾選,提高了推薦精度,節(jié)省了人力成本,從而提高用戶體驗度,且采用spark分布式計算來減少模型訓(xùn)練時間,以使得在較短的時間內(nèi)得到所需模型。
附圖說明
圖1為本發(fā)明較佳實施例的機(jī)票附加產(chǎn)品的推薦系統(tǒng)的結(jié)構(gòu)示意圖。
圖2為本發(fā)明較佳實施例的機(jī)票附加產(chǎn)品的推薦方法的流程圖。
具體實施方式
下面通過實施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
如圖1所示,本實施例提供的機(jī)票附加產(chǎn)品的推薦系統(tǒng)1包括模型訓(xùn)練模塊11、模型測試驗證模塊12及推薦模塊13。
具體的,模型訓(xùn)練模塊11用于通過xgboost算法并結(jié)合訓(xùn)練數(shù)據(jù)來訓(xùn)練出xgboost模型,在歷史數(shù)據(jù)庫中選取合適的數(shù)據(jù)來作為用于訓(xùn)練模型的數(shù)據(jù)。
在本實施例中,所述訓(xùn)練數(shù)據(jù)包括第一用戶歷史訂單數(shù)據(jù)及第一用戶特征數(shù)據(jù),所述第一用戶歷史訂單數(shù)據(jù)包括第一始發(fā)地、第一目的地、第一起飛時間、第一落地時間及第一機(jī)票附加產(chǎn)品購買信息,所述第一用戶特征數(shù)據(jù)包括第一年齡、第一性別及第一價格敏感度,價格敏感度用于表征低價敏感用戶或高價用戶等信息,當(dāng)然在本實施例中并不具體限定訓(xùn)練數(shù)據(jù)的類型,均可根據(jù)實際情況來進(jìn)行相應(yīng)的選擇。
xgboost模型有許多參數(shù)需要調(diào)節(jié),參數(shù)調(diào)節(jié)的好壞會有不同的效果。在本實施例中,通過訓(xùn)練數(shù)據(jù)調(diào)節(jié)出xgboost模型最合適的決策樹數(shù)量、最大深度、最小分裂參數(shù)及學(xué)習(xí)速率等參數(shù),從而得到最合適的xgboost模型,如何調(diào)節(jié)出合適的參數(shù)需根據(jù)實際情況及所需模型來判斷,其中,決策樹的數(shù)量和最大深度對整個模型效果的影響最大,除了上述4個參數(shù)以外還有其他參數(shù),不過對效果影響不大,因此在本實施例中不再一一贅述。
在本實施例中,模型訓(xùn)練模塊用于采用spark分布式計算來訓(xùn)練出xgboost模型。由于機(jī)票附加產(chǎn)品很少,對于每個產(chǎn)品,可以把用戶購買與否當(dāng)成一個二分類問題,對于二分類問題,梯度下降決策樹是一個很流行的算法,然而該算法雖然準(zhǔn)確性高,預(yù)測效果好,但是需要大量的時間,對于這類有著大量并行計算的問題,便可以通過將可并行的部分分配到不同的服務(wù)器上來減少計算時間。根據(jù)推薦需求和特征來選擇xgboost算法,并通過spark分布式計算來減少模型訓(xùn)練時間,使得在較短的時間內(nèi)得到所需模型,封裝之后供線上系統(tǒng)調(diào)用。
模型測試驗證模塊12用于通過測試數(shù)據(jù)對所述xgboost模型進(jìn)行測試,并且通過所述測試數(shù)據(jù)對應(yīng)的驗證結(jié)果來驗證所述xgboost模型的輸出準(zhǔn)確率,在歷史數(shù)據(jù)庫中選取合適的數(shù)據(jù)來作為用于測試模型的數(shù)據(jù)。
在本實施例中,所述測試數(shù)據(jù)包括第二用戶歷史訂單數(shù)據(jù)及第二用戶特征數(shù)據(jù),所述第二用戶歷史訂單數(shù)據(jù)包括第二始發(fā)地、第二目的地、第二起飛時間、第二落地時間及第二機(jī)票附加產(chǎn)品購買信息,所述第二用戶特征數(shù)據(jù)包括第二年齡、第二性別及第二價格敏感度,當(dāng)然在本實施例中并不具體限定測試數(shù)據(jù)的類型,均可根據(jù)實際情況來進(jìn)行相應(yīng)的選擇。
在本實施例中,模型測試驗證模塊用于采用交叉驗證法對所述xgboost模型進(jìn)行測試。交叉驗證法是檢驗?zāi)P秃脡牡幕痉椒ǎ褦?shù)據(jù)分為k份,輪流把k份數(shù)據(jù)中的1份作為測試集,剩下k-1份作為訓(xùn)練集,選出平均測試效果最好的模型。此時,利用交叉驗證法可進(jìn)一步調(diào)節(jié)出最合適的各項參數(shù)。
推薦模塊13用于當(dāng)所述輸出準(zhǔn)確率大于或等于預(yù)設(shè)準(zhǔn)確率時,上線所述xgboost模型,推薦模塊13還用于當(dāng)接收到推薦請求時,通過所述xgboost模型并結(jié)合請求中的用戶數(shù)據(jù)來推薦出機(jī)票附加產(chǎn)品。
在本實施例中,所述用戶數(shù)據(jù)包括第三用戶歷史訂單數(shù)據(jù)、第三用戶特征數(shù)據(jù)及當(dāng)前航班信息,所述第三用戶歷史訂單數(shù)據(jù)包括第三始發(fā)地、第三目的地、第三起飛時間、第三落地時間及第三機(jī)票附加產(chǎn)品購買信息,所述第三用戶特征數(shù)據(jù)包括第三年齡、第三性別及第三價格敏感度,所述當(dāng)前航班信息包括當(dāng)前起飛時間、當(dāng)前起飛城市及機(jī)票價格,當(dāng)然在本實施例中并不具體限定用戶數(shù)據(jù)的類型,均可根據(jù)實際情況來進(jìn)行相應(yīng)的選擇。
在本實施例中,上線所述xgboost模型一段時間,此過程中,通過a/b測試調(diào)節(jié)出決策閾值,即通過使用所述xgboost模型和使用其他模型來進(jìn)行對照實驗,決策閾值決定了是否默認(rèn)勾選的基準(zhǔn)線。xgboost模型可以預(yù)測出用戶購買概率,若通過所述xgboost模型預(yù)測出的用戶購買概率大于或等于所述決策閾值時,默認(rèn)勾選相應(yīng)的機(jī)票附加產(chǎn)品,若所述用戶購買概率小于所述決策閾值時,取消對相應(yīng)的機(jī)票附加產(chǎn)品的默認(rèn)勾選,從而為用戶推薦出合適的機(jī)票附加產(chǎn)品。
相對于現(xiàn)有的采用規(guī)則的推薦方案,xgboost模型可以通過對用戶和機(jī)票情景特征更好的學(xué)習(xí),做更準(zhǔn)確細(xì)致的預(yù)測,從而提高用戶體驗度?;谝?guī)則的推薦方案主要是基于業(yè)務(wù)經(jīng)驗,人力成本大且人為影響因素大,往往容易忽略一些重要信息。使用xgboost模型不需要過多的人力成本,利用用戶和機(jī)票的原始數(shù)據(jù)即可學(xué)習(xí)。并利用分布式計算,并行訓(xùn)練模型,從而縮短訓(xùn)練時間并得到高精度模型。
如圖2所示,本實施例還提供一種機(jī)票附加產(chǎn)品的推薦方法,所述推薦方法包括以下步驟:
步驟101、通過xgboost算法并結(jié)合訓(xùn)練數(shù)據(jù)來訓(xùn)練出xgboost模型。
在本步驟中,在歷史數(shù)據(jù)庫中選取合適的數(shù)據(jù)來作為用于訓(xùn)練模型的數(shù)據(jù)。
在本步驟中,所述訓(xùn)練數(shù)據(jù)包括第一用戶歷史訂單數(shù)據(jù)及第一用戶特征數(shù)據(jù),所述第一用戶歷史訂單數(shù)據(jù)包括第一始發(fā)地、第一目的地、第一起飛時間、第一落地時間及第一機(jī)票附加產(chǎn)品購買信息,所述第一用戶特征數(shù)據(jù)包括第一年齡、第一性別及第一價格敏感度,價格敏感度用于表征低價敏感用戶或高價用戶等信息,當(dāng)然在本步驟中并不具體限定訓(xùn)練數(shù)據(jù)的類型,均可根據(jù)實際情況來進(jìn)行相應(yīng)的選擇。
xgboost模型有許多參數(shù)需要調(diào)節(jié),參數(shù)調(diào)節(jié)的好壞會有不同的效果。在本步驟中,通過訓(xùn)練數(shù)據(jù)調(diào)節(jié)出xgboost模型最合適的決策樹數(shù)量、最大深度、最小分裂參數(shù)及學(xué)習(xí)速率等參數(shù),從而得到最合適的xgboost模型,如何調(diào)節(jié)出合適的參數(shù)需根據(jù)實際情況及所需模型來判斷,其中,決策樹的數(shù)量和最大深度對整個模型效果的影響最大,除了上述4個參數(shù)以外還有其他參數(shù),不過對效果影響不大,因此在本步驟中不再一一贅述。
在本步驟中,采用spark分布式計算來訓(xùn)練出xgboost模型。由于機(jī)票附加產(chǎn)品很少,對于每個產(chǎn)品,可以把用戶購買與否當(dāng)成一個二分類問題,對于二分類問題,梯度下降決策樹是一個很流行的算法,然而該算法雖然準(zhǔn)確性高,預(yù)測效果好,但是需要大量的時間,對于這類有著大量并行計算的問題,便可以通過將可并行的部分分配到不同的服務(wù)器上來減少計算時間。根據(jù)推薦需求和特征來選擇xgboost算法,并通過spark分布式計算來減少模型訓(xùn)練時間,使得在較短的時間內(nèi)得到所需模型,封裝之后供線上系統(tǒng)調(diào)用。
步驟102、通過測試數(shù)據(jù)對xgboost模型進(jìn)行測試及驗證。
在本步驟中,通過測試數(shù)據(jù)對所述xgboost模型進(jìn)行測試,并且通過所述測試數(shù)據(jù)對應(yīng)的驗證結(jié)果來驗證所述xgboost模型的輸出準(zhǔn)確率,在歷史數(shù)據(jù)庫中選取合適的數(shù)據(jù)來作為用于測試模型的數(shù)據(jù)。
在本步驟中,所述測試數(shù)據(jù)包括第二用戶歷史訂單數(shù)據(jù)及第二用戶特征數(shù)據(jù),所述第二用戶歷史訂單數(shù)據(jù)包括第二始發(fā)地、第二目的地、第二起飛時間、第二落地時間及第二機(jī)票附加產(chǎn)品購買信息,所述第二用戶特征數(shù)據(jù)包括第二年齡、第二性別及第二價格敏感度,當(dāng)然在本步驟中并不具體限定測試數(shù)據(jù)的類型,均可根據(jù)實際情況來進(jìn)行相應(yīng)的選擇。
在本步驟中,采用交叉驗證法對所述xgboost模型進(jìn)行測試。交叉驗證法是檢驗?zāi)P秃脡牡幕痉椒?,把?shù)據(jù)分為k份,輪流把k份數(shù)據(jù)中的1份作為測試集,剩下k-1份作為訓(xùn)練集,選出平均測試效果最好的模型。此時,利用交叉驗證法可進(jìn)一步調(diào)節(jié)出最合適的各項參數(shù)。
步驟103、上線xgboost模型,調(diào)節(jié)出決策閾值,根據(jù)推薦請求及決策閾值推薦出機(jī)票附加產(chǎn)品。
在本步驟中,當(dāng)所述輸出準(zhǔn)確率大于或等于預(yù)設(shè)準(zhǔn)確率時,上線所述xgboost模型,當(dāng)接收到推薦請求時,通過所述xgboost模型并結(jié)合請求中的用戶數(shù)據(jù)來推薦出機(jī)票附加產(chǎn)品。
在本步驟中,所述用戶數(shù)據(jù)包括第三用戶歷史訂單數(shù)據(jù)、第三用戶特征數(shù)據(jù)及當(dāng)前航班信息,所述第三用戶歷史訂單數(shù)據(jù)包括第三始發(fā)地、第三目的地、第三起飛時間、第三落地時間及第三機(jī)票附加產(chǎn)品購買信息,所述第三用戶特征數(shù)據(jù)包括第三年齡、第三性別及第三價格敏感度,所述當(dāng)前航班信息包括當(dāng)前起飛時間、當(dāng)前起飛城市及機(jī)票價格,當(dāng)然在本步驟中并不具體限定用戶數(shù)據(jù)的類型,均可根據(jù)實際情況來進(jìn)行相應(yīng)的選擇。
在本步驟中,上線所述xgboost模型一段時間,此過程中,通過a/b測試調(diào)節(jié)出決策閾值,即通過使用所述xgboost模型和使用其他模型來進(jìn)行對照實驗,決策閾值決定了是否默認(rèn)勾選的基準(zhǔn)線。xgboost模型可以預(yù)測出用戶購買概率,若通過所述xgboost模型預(yù)測出的用戶購買概率大于或等于所述決策閾值時,默認(rèn)勾選相應(yīng)的機(jī)票附加產(chǎn)品,若所述用戶購買概率小于所述決策閾值時,取消對相應(yīng)的機(jī)票附加產(chǎn)品的默認(rèn)勾選,從而為用戶推薦出合適的機(jī)票附加產(chǎn)品。
本實施例提供的機(jī)票附加產(chǎn)品的推薦系統(tǒng)及方法利用xgboost模型來準(zhǔn)確細(xì)致地推薦出機(jī)票附加產(chǎn)品,可對用戶所需要的機(jī)票附加產(chǎn)品進(jìn)行準(zhǔn)確的默認(rèn)勾選,提高了推薦精度,節(jié)省了人力成本,從而提高用戶體驗度,且采用spark分布式計算來減少模型訓(xùn)練時間,以使得在較短的時間內(nèi)得到所需模型。
雖然以上描述了本發(fā)明的具體實施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。