丁建立 張 莉
(中國民航大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 天津 300300)
隨著人們生活水平的提高,飛機(jī)出行越來越普遍,大量的交互數(shù)據(jù)為個(gè)性化推薦奠定了基石。高速磁浮列車等新興出行工具在科技發(fā)展的洪流中應(yīng)運(yùn)而生,這對航空公司的收益帶來了沖擊?;ヂ?lián)網(wǎng)為旅客選擇航空產(chǎn)品提供更多便利,然而過于豐富的信息也為旅客帶來了幸福的煩惱——信息過載。挖掘交互數(shù)據(jù)中的潛在特征,細(xì)化旅客偏好,能夠?yàn)槁每吞峁└泳?xì)的個(gè)性化服務(wù),從而提升航空公司業(yè)務(wù)效益。在民航領(lǐng)域中,個(gè)性化推薦系統(tǒng)[7]可以幫助旅客完成信息篩選,從而節(jié)約時(shí)間,提升旅客體驗(yàn)。近年來,個(gè)性化推薦系統(tǒng)已經(jīng)在民航領(lǐng)域有所應(yīng)用。民航個(gè)性化推薦領(lǐng)域涵蓋附加服務(wù)推薦、座位推薦和航線推薦等。充分利用大數(shù)據(jù)時(shí)代下的海量數(shù)據(jù)為旅客提供航班推薦服務(wù)在民航領(lǐng)域有巨大的潛在價(jià)值。
近年來基于圖結(jié)構(gòu)[9,11]的神經(jīng)網(wǎng)絡(luò)發(fā)展迅速,學(xué)習(xí)圖結(jié)構(gòu)嵌入表征的框架稱為圖神經(jīng)網(wǎng)絡(luò)[4-6],因在推薦系統(tǒng)中,旅客商品之間的交互以及旅客對商品的評價(jià)是典型的圖結(jié)構(gòu)數(shù)據(jù),近來很多研究者利用圖神經(jīng)網(wǎng)絡(luò)的優(yōu)勢[1,3]解決推薦領(lǐng)域問題且取得了良好的效果。文獻(xiàn)[9]提出了隨機(jī)游走神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)圖中節(jié)點(diǎn)信息,GraphRec[8]融合了圖結(jié)構(gòu)的社交關(guān)系實(shí)現(xiàn)個(gè)性化推薦,NGCF[11]通過高階排序?qū)W習(xí)高階節(jié)點(diǎn)信息以提高推薦的精準(zhǔn)度。盡管這些模型在處理圖結(jié)構(gòu)數(shù)據(jù)上都取得了良好的效果,但是考慮到民航航班推薦領(lǐng)域的特殊性,本文提出了一種細(xì)粒度隱式交互特征挖掘建模。然而構(gòu)建基于圖神經(jīng)網(wǎng)絡(luò)的民航旅客隱式交互特征挖掘的航班推薦模型仍面臨挑戰(zhàn),主要包括:① 考慮到民航領(lǐng)域中,航班號一般固定,且登記序列也不被人們關(guān)注,對乘客而言,更關(guān)注航班的屬性,如航空公司、起飛時(shí)間、票價(jià)折扣和主艙位;② 航空數(shù)據(jù)無顯式評分;③ 信息提取及融合的模型框架搭建。針對以上問題,對航班采用航班細(xì)粒度建模并設(shè)計(jì)評分規(guī)則,構(gòu)建基于圖神經(jīng)網(wǎng)絡(luò)的民航旅客隱式交互特征挖掘的航班推薦模型挖掘旅客和細(xì)粒度屬性間的隱式交互特征,豐富旅客和細(xì)粒度航班屬性項(xiàng)目的潛在表征,提高旅客對未交互項(xiàng)目的評分精準(zhǔn)度,最后綜合細(xì)粒度屬性評分生成航班推薦,提升個(gè)性化推薦的準(zhǔn)確度。
圖神經(jīng)網(wǎng)絡(luò)(Graph Neural Network,GNN)是一種處理圖結(jié)構(gòu)數(shù)據(jù)的新型神經(jīng)網(wǎng)絡(luò),旨在學(xué)習(xí)圖網(wǎng)絡(luò)中節(jié)點(diǎn)及其連接關(guān)系的潛在表征向量,提取結(jié)構(gòu)化輸入數(shù)據(jù)間的拓?fù)潢P(guān)系。GNN模型設(shè)計(jì)主要包含兩個(gè)部分:局部集成函數(shù)f和局部輸出函數(shù)g。f與g均由多層神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),局部集成函數(shù)f旨在集成當(dāng)前節(jié)點(diǎn)鄰域節(jié)點(diǎn)信息并生成狀態(tài)嵌入向量,局部輸出函數(shù)g旨在將該狀態(tài)嵌入向量映射成等維的向量表示,數(shù)學(xué)表示如下:
hn=f(en,eco[n],hne[n],ene[n])
(1)
on=g(hn,en)
(2)
式中:hn為頂點(diǎn)n融合了該點(diǎn)鄰域信息的狀態(tài)向量;en表示頂點(diǎn)n的特征向量;eco[n]表示該點(diǎn)鄰邊的特征向量;hne[n]表示該點(diǎn)鄰近頂點(diǎn)的狀態(tài)向量;ene[n]表示該點(diǎn)鄰接節(jié)點(diǎn)的特征向量。
通過大量訓(xùn)練,不斷地更新神經(jīng)網(wǎng)絡(luò)參數(shù),使得模型結(jié)果最大化地接近目標(biāo)值。研究表明,GNN在處理圖結(jié)構(gòu)數(shù)據(jù)上具有強(qiáng)大的數(shù)據(jù)建模體系。在民航旅客航班推薦中,旅客和航班之間的交互關(guān)系構(gòu)成了圖結(jié)構(gòu)數(shù)據(jù),因此GNN對民航旅客航班推薦具有良好適應(yīng)性。
旅客-商品交互圖的頂點(diǎn)全集代表所有旅客與商品,每個(gè)旅客或商品對應(yīng)一個(gè)點(diǎn),旅客和商品之間對應(yīng)的無向邊的權(quán)值為旅客對商品的打分。未產(chǎn)生交互的旅客和商品之間沒有連邊。因交互關(guān)系僅在旅客和商品之間,也稱該旅客-商品交互圖為無向有權(quán)二部圖。如圖1所示,左側(cè)節(jié)點(diǎn)是旅客,右側(cè)節(jié)點(diǎn)是商品,左側(cè)與右側(cè)有灰色連邊代表旅客與商品有交互,連邊上的權(quán)重表示相關(guān)旅客對對應(yīng)商品的打分。連邊上標(biāo)有“?”處是本文所構(gòu)建模型的目標(biāo),即預(yù)測旅客對未交互商品的打分,從而實(shí)現(xiàn)對旅客的推薦。
圖1 旅客-商品二部圖
通常情況下,推薦系統(tǒng)通過預(yù)測旅客對未打過分的商品的評分實(shí)現(xiàn)個(gè)性化推薦。但考慮到民航領(lǐng)域中,航班號的固定性以及登記序列對旅客選擇航班影響的無效性。對乘客而言,航班屬性如航空公司、起飛時(shí)間、票價(jià)折扣和主艙位對其選擇出行航班更具有影響力。因此,本文研究的圖結(jié)構(gòu)旅客-項(xiàng)目交互圖中的項(xiàng)目為航班屬性,通過實(shí)現(xiàn)對旅客未交互過的項(xiàng)目進(jìn)行評分預(yù)測,計(jì)算最終航班的評分,最終實(shí)現(xiàn)航班的個(gè)性化推薦,整體流程框架如圖2所示。
圖2 模型流程
為得到旅客對不同航空公司的評分,首先統(tǒng)計(jì)航空公司的數(shù)量。本文研究數(shù)據(jù)由中航信提供,通過統(tǒng)計(jì),存在部分航空公司很少有旅客選擇其航班,因此過濾掉這部分航空公司。最終航空公司的數(shù)量為20個(gè),因此只考慮旅客對這20個(gè)航空公司的偏好。對于起飛時(shí)間屬性,本文以4個(gè)小時(shí)為一個(gè)時(shí)間段,將一天劃分為6個(gè)時(shí)間段,即00:00—04:00,04:00—08:00,08:00—12:00,12:00—16:00,16:00—20:00,20:00—00:00,本文模型挖掘旅客對6個(gè)時(shí)間段的偏好。折扣屬性主要有3折以下、3折、4折、5折、6折、7折、8折、9折和全價(jià)這九種。至于主艙位屬性,統(tǒng)計(jì)發(fā)現(xiàn)有C、F、W和Y這四種類型,因此只需對這四種艙位進(jìn)行建模。
按照屬性占比計(jì)算具體得分,評分標(biāo)準(zhǔn)如表1所示。
表1 評分標(biāo)準(zhǔn)
例如,旅客A購買了10張機(jī)票,其中有5張是ID為110的航空公司,3張是ID為129的航空公司,1張是ID為138的航空公司,1張是ID為220的航空公司。110航空公司占比50%,則旅客A對110航空公司評分為3分;129航空公司占比30%,則旅客A對129航空公司評分為2分;138航空公司、220航空公司各占比10%,則旅客A對138航空公司評分為1分,對220航空公司評分為1分。同樣的方法可計(jì)算旅客A對艙位、折扣以及出行時(shí)間的評分。將原始的航班訂票數(shù)據(jù)處理成<旅客ID,項(xiàng)目ID,評分>的形式,本文研究的項(xiàng)目包含航空公司、起飛時(shí)間、票價(jià)折扣和主艙位。本文中項(xiàng)目ID為1-20表示20個(gè)航空公司;21-26表示六種出行時(shí)間;27-35表示九種票價(jià)折扣;36-39表示四種艙位。按照評分計(jì)算法則,計(jì)算出旅客對項(xiàng)目的評分。得到<旅客ID,項(xiàng)目ID,評分>的形式作為模型的初始輸入數(shù)據(jù)。
2.2.1旅客特征建模
在描述具體模型之前,先給出相關(guān)符號及其含義,如表2所示。
表2 符號屬性
旅客特征建模需要融合旅客交互過的項(xiàng)目特征,如圖3所示。本文的旅客潛在表征融合了旅客ID嵌入表征、交互過的項(xiàng)目ID嵌入表征以及交互過的項(xiàng)目ID的評分嵌入表征,模型架構(gòu)如圖4所示,旅客模型構(gòu)建的數(shù)學(xué)表示如下:
圖3 旅客-項(xiàng)目交互圖
圖4 集成鄰接節(jié)點(diǎn)特征的神經(jīng)網(wǎng)絡(luò)圖
hi=σ(W·[Xagg_i⊙eu]+b)
(3)
式中:eu是旅客ID嵌入表征向量;W、b是神經(jīng)網(wǎng)絡(luò)中的權(quán)重和偏置量;⊙是矩陣元素層級的矩陣操作,Xagg_i是融合了該旅客交互過的項(xiàng)目的潛在因子向量,其表示如下:
式中:N(i)是旅客i交互過的項(xiàng)目集合,如圖3所示,即旅客u1需要集成其交互過的項(xiàng)目特征及該旅客對交互項(xiàng)目的評分,αia是旅客i和交互項(xiàng)目a的權(quán)重因子,本文視旅客i和其交互項(xiàng)目之間的權(quán)重值相等且都等于1/|N(i)|。Xia表示旅客i交互過的項(xiàng)目a的潛在表征向量和該旅客對該項(xiàng)目的評分潛在表征向量的交互潛在表征。神經(jīng)網(wǎng)絡(luò)框架如圖5所示,其數(shù)學(xué)表示如下:
圖5 旅客潛在表征神經(jīng)網(wǎng)絡(luò)圖
Xia=f([ea⊕er]
(5)
式中:⊕是矩陣拼接操作,函數(shù)f是用于融合項(xiàng)目潛在因子ea和旅客i對該項(xiàng)目的評價(jià)潛在因子er的多層感知機(jī)。
2.2.2項(xiàng)目特征建模
與旅客建模相似,本文的項(xiàng)目潛在表征融合了項(xiàng)目ID嵌入表征、被交互過的旅客嵌入表征以及產(chǎn)生交互關(guān)系的旅客對該項(xiàng)目的評分嵌入表征,項(xiàng)目模型構(gòu)建的表征公式如下:
hj=σ(W·[Yagg_u⊙ej]+b)
(6)
式中:ej是項(xiàng)目ID嵌入表征向量;W、b是神經(jīng)網(wǎng)絡(luò)中的權(quán)重和偏置量;⊙是矩陣元素層級的矩陣操作;Yagg_u是融合了該項(xiàng)目被交互過的旅客潛在因子向量。
式中:N(j)是項(xiàng)目j被交互過的旅客集合;βjb是項(xiàng)目j和被交互旅客b的權(quán)重因子,本文視項(xiàng)目j和被交互旅客b之間的權(quán)重值相等且都等于1/|N(j)|。Yjb表示項(xiàng)目j被交互過的旅客b的潛在表征向量和該旅客對該項(xiàng)目的評分潛在表征向量的交互潛在表征,其數(shù)學(xué)表示如下:
Yjb=g([eb⊕er])
(8)
式中:⊕是矩陣拼接操作,函數(shù)g是用于融合旅客潛在因子eb和該旅客b對該項(xiàng)目的評價(jià)潛在因子er的多層感知機(jī)。
2.2.3評分預(yù)測
圖6 評分預(yù)測神經(jīng)網(wǎng)絡(luò)圖
2.2.4模型訓(xùn)練及調(diào)參
為優(yōu)化模型參數(shù),提高評分預(yù)測的準(zhǔn)確率,本文采用的目標(biāo)損失函數(shù)為:
式中:|Θ|表示評分的個(gè)數(shù),ri,j表示真實(shí)評分。采用mini-batch提升訓(xùn)練速度。為優(yōu)化目標(biāo)函數(shù)并且使得梯度下降得更平緩,本文采用RMSprop優(yōu)化函數(shù)來更新神經(jīng)網(wǎng)絡(luò)中的權(quán)值和偏置量。模型涉及的超參數(shù)有學(xué)習(xí)率lr、向量嵌入維度emb_size、mini-batch的大小batch_size。為更好地表示向量表征之間的相關(guān)性,向量初始化不采用傳統(tǒng)的one-hot方式,選擇嵌入映射模式,嵌入維度大小的選擇對模型精準(zhǔn)度影響也至關(guān)重要,向量嵌入維度參數(shù)調(diào)整范圍為[32,64,128]。batch_size的大小影響模型的收斂速度和最終模型的精準(zhǔn)度,每次迭代更新權(quán)值和偏置值時(shí)均以當(dāng)前批次數(shù)據(jù)為依據(jù),批次數(shù)據(jù)越大越接近整體數(shù)據(jù)特征,但batch_size過大會使得模型訓(xùn)練時(shí)間過長,而過小則會導(dǎo)致模型震蕩收斂甚至偏離最優(yōu)值,因此需要選擇合適的batch_size,調(diào)整范圍為[64,128,512]。學(xué)習(xí)率參數(shù)初步調(diào)整范圍[0.1,0.05,0.01,0.005,0.001,0.000 5],實(shí)驗(yàn)發(fā)現(xiàn)學(xué)習(xí)率為0.005時(shí),損失函數(shù)最小,因此進(jìn)行局部調(diào)整,調(diào)整范圍為[0.004,0.005,0.006]。
算法思路如下:
算法1更新權(quán)值和偏置量的算法
輸入:
用戶集合:U={ui|1≤i≤m}
項(xiàng)目集合:T={tj|1≤j≤n}
用戶項(xiàng)目評分矩陣:R(m×n)
輸出:
更新權(quán)值和偏置量的神經(jīng)網(wǎng)絡(luò)
執(zhí)行過程:
1: 以批為單位訓(xùn)練數(shù)據(jù)集
2: Fort=1,2,…,batch_num:
3: 基于批次X(t)進(jìn)行神經(jīng)網(wǎng)絡(luò)前向傳播:
4:Z[1]=W[1]X{t}+t[1]
5:A[1]=g[1](Z[1])
6: …
7: …
8:A[l]=g[l](Z[l])
10: 基于損失函數(shù)反向傳播計(jì)算梯度:
13: 更新權(quán)值和偏置量
15:END FOR
通過模型優(yōu)化以及對超參數(shù)的調(diào)節(jié),得到了適應(yīng)本文研究的準(zhǔn)確度最高的模型,進(jìn)而預(yù)測旅客未交互的項(xiàng)目評分,得到一個(gè)user_num×item_num的評分矩陣,計(jì)算旅客未購買的航班對應(yīng)的屬性項(xiàng)目的評分累加和并按照從高到低的順序排序,進(jìn)而實(shí)現(xiàn)對旅客的航班個(gè)性化推薦。
本文使用中航信提供的PNR數(shù)據(jù),根據(jù)模型需要篩選出113 756條旅客訂票數(shù)據(jù),篩選出模型所需屬性列:訂票旅客ID、航空公司、起飛時(shí)間、折扣率和主艙位。根據(jù)前面提到的評分計(jì)算法則對數(shù)據(jù)進(jìn)行初步處理,得到<旅客ID,項(xiàng)目ID,評分>形式的數(shù)據(jù)。選取實(shí)驗(yàn)數(shù)據(jù)的80%作為訓(xùn)練集,10%作為驗(yàn)證集,10%作為測試集。
模型采用均方根誤差(Root Mean Square Error,RMSE)來衡量模型的準(zhǔn)確性。一般情況下RMSE越小說明模型預(yù)測評分越準(zhǔn)確。
實(shí)驗(yàn)環(huán)境:處理器2.7 GHz Intel Core i5,內(nèi)存16 GB DDR3 1867 MHz,編程語言Python。
為得到適配模型的最優(yōu)超參數(shù),選取不同值對模型進(jìn)行訓(xùn)練。
3.2.1不同學(xué)習(xí)率對算法的影響
實(shí)驗(yàn)條件:向量嵌入維度emb_size為64,指數(shù)加權(quán)因子β為0.99,batch_size為128,學(xué)習(xí)率衰減因子lr_decay為0.1。迭代停止條件:最大循環(huán)次數(shù)epoch_num=30。變化條件:不同的循環(huán)次數(shù)epoch_num。對比實(shí)驗(yàn):不同的學(xué)習(xí)率。
由圖7可知,當(dāng)lr=0.005時(shí)算法預(yù)測的準(zhǔn)確度較高,在相同的迭代次數(shù)下,RMSE值較低且收斂速度也較快。同一學(xué)習(xí)率下,算法精確度隨著迭代次數(shù)的增加而增加,在迭代次數(shù)為15之前,精確度增加的較快,之后變化不大慢慢趨于平穩(wěn)。實(shí)驗(yàn)結(jié)論:學(xué)習(xí)率過小對導(dǎo)致收斂速度太慢,訓(xùn)練時(shí)間太長;學(xué)習(xí)率太高對使得梯度不穩(wěn)定,甚至導(dǎo)致無法收斂。因此要選擇適合本文模型的學(xué)習(xí)率。
圖7 不同學(xué)習(xí)率對算法的影響
3.2.2不同向量嵌入維度對算法的影響
實(shí)驗(yàn)條件:學(xué)習(xí)率lr為0.005,指數(shù)加權(quán)因子β為0.99,batch_size為128,學(xué)習(xí)率衰減因子lr_decay為0.1。迭代停止條件:最大循環(huán)次數(shù)epoch_num=30。變化條件:不同的循環(huán)次數(shù)epoch_num。對比實(shí)驗(yàn):不同的向量嵌入維度。
由圖8可知,隨著迭代次數(shù)的增加,RMSE值逐漸降低。對比看來,emb_size=64時(shí),RMSE的最低點(diǎn)對應(yīng)值最小,收斂速度最快。實(shí)驗(yàn)結(jié)論:向量嵌入維度影響模型收斂速度和最終模型準(zhǔn)確度,本文算法中選取嵌入維度64可使得模型達(dá)到最優(yōu)。
圖8 不同嵌入向量維度對算法的影響
3.2.3不同批次大小對算法的影響
實(shí)驗(yàn)條件:學(xué)習(xí)率lr為0.05,指數(shù)加權(quán)因子β為0.99,學(xué)習(xí)率衰減因子lr_decay為0.1。迭代停止條件:最大循環(huán)次數(shù)epoch_num=30。變化條件:不同的循環(huán)次數(shù)epoch_num。對比實(shí)驗(yàn):不同的批次大小。
由圖9可知,批次大小越小,訓(xùn)練的速度越快。觀察得,在batch_size為128時(shí),訓(xùn)練速度相對較快,最低點(diǎn)處的RMSE值最低,準(zhǔn)確度最高。
圖9 不同批次大小對算法的影響
民航領(lǐng)域航班個(gè)性化推薦研究不足,結(jié)合航班特色,推薦模型的構(gòu)建應(yīng)當(dāng)考慮細(xì)粒度建模研究。為實(shí)現(xiàn)個(gè)性化精準(zhǔn)推薦,旅客航班之間的潛在交互特征應(yīng)當(dāng)被充分挖掘。本文構(gòu)建的基于圖神經(jīng)網(wǎng)絡(luò)的民航旅客隱式交互特征挖掘航班推薦模型充分挖掘了旅客隱式交互特征和航班的隱式交互特征,提升了航班推薦的精準(zhǔn)度。但是不同類型的項(xiàng)目對旅客選擇航班的影響不同,未來在構(gòu)建隱式交互特征時(shí)將考慮引入注意力機(jī)制來進(jìn)一步提升模型精準(zhǔn)度。