丁建立 張 莉
(中國民航大學計算機科學與技術學院 天津 300300)
隨著人們生活水平的提高,飛機出行越來越普遍,大量的交互數據為個性化推薦奠定了基石。高速磁浮列車等新興出行工具在科技發展的洪流中應運而生,這對航空公司的收益帶來了沖擊。互聯網為旅客選擇航空產品提供更多便利,然而過于豐富的信息也為旅客帶來了幸福的煩惱——信息過載。挖掘交互數據中的潛在特征,細化旅客偏好,能夠為旅客提供更加精細的個性化服務,從而提升航空公司業務效益。在民航領域中,個性化推薦系統[7]可以幫助旅客完成信息篩選,從而節約時間,提升旅客體驗。近年來,個性化推薦系統已經在民航領域有所應用。民航個性化推薦領域涵蓋附加服務推薦、座位推薦和航線推薦等。充分利用大數據時代下的海量數據為旅客提供航班推薦服務在民航領域有巨大的潛在價值。
近年來基于圖結構[9,11]的神經網絡發展迅速,學習圖結構嵌入表征的框架稱為圖神經網絡[4-6],因在推薦系統中,旅客商品之間的交互以及旅客對商品的評價是典型的圖結構數據,近來很多研究者利用圖神經網絡的優勢[1,3]解決推薦領域問題且取得了良好的效果。文獻[9]提出了隨機游走神經網絡學習圖中節點信息,GraphRec[8]融合了圖結構的社交關系實現個性化推薦,NGCF[11]通過高階排序學習高階節點信息以提高推薦的精準度。盡管這些模型在處理圖結構數據上都取得了良好的效果,但是考慮到民航航班推薦領域的特殊性,本文提出了一種細粒度隱式交互特征挖掘建模。然而構建基于圖神經網絡的民航旅客隱式交互特征挖掘的航班推薦模型仍面臨挑戰,主要包括:① 考慮到民航領域中,航班號一般固定,且登記序列也不被人們關注,對乘客而言,更關注航班的屬性,如航空公司、起飛時間、票價折扣和主艙位;② 航空數據無顯式評分;③ 信息提取及融合的模型框架搭建。針對以上問題,對航班采用航班細粒度建模并設計評分規則,構建基于圖神經網絡的民航旅客隱式交互特征挖掘的航班推薦模型挖掘旅客和細粒度屬性間的隱式交互特征,豐富旅客和細粒度航班屬性項目的潛在表征,提高旅客對未交互項目的評分精準度,最后綜合細粒度屬性評分生成航班推薦,提升個性化推薦的準確度。
圖神經網絡(Graph Neural Network,GNN)是一種處理圖結構數據的新型神經網絡,旨在學習圖網絡中節點及其連接關系的潛在表征向量,提取結構化輸入數據間的拓撲關系。GNN模型設計主要包含兩個部分:局部集成函數f和局部輸出函數g。f與g均由多層神經網絡實現,局部集成函數f旨在集成當前節點鄰域節點信息并生成狀態嵌入向量,局部輸出函數g旨在將該狀態嵌入向量映射成等維的向量表示,數學表示如下:
hn=f(en,eco[n],hne[n],ene[n])
(1)
on=g(hn,en)
(2)
式中:hn為頂點n融合了該點鄰域信息的狀態向量;en表示頂點n的特征向量;eco[n]表示該點鄰邊的特征向量;hne[n]表示該點鄰近頂點的狀態向量;ene[n]表示該點鄰接節點的特征向量。
通過大量訓練,不斷地更新神經網絡參數,使得模型結果最大化地接近目標值。研究表明,GNN在處理圖結構數據上具有強大的數據建模體系。在民航旅客航班推薦中,旅客和航班之間的交互關系構成了圖結構數據,因此GNN對民航旅客航班推薦具有良好適應性。
旅客-商品交互圖的頂點全集代表所有旅客與商品,每個旅客或商品對應一個點,旅客和商品之間對應的無向邊的權值為旅客對商品的打分。未產生交互的旅客和商品之間沒有連邊。因交互關系僅在旅客和商品之間,也稱該旅客-商品交互圖為無向有權二部圖。如圖1所示,左側節點是旅客,右側節點是商品,左側與右側有灰色連邊代表旅客與商品有交互,連邊上的權重表示相關旅客對對應商品的打分。連邊上標有“?”處是本文所構建模型的目標,即預測旅客對未交互商品的打分,從而實現對旅客的推薦。

圖1 旅客-商品二部圖
通常情況下,推薦系統通過預測旅客對未打過分的商品的評分實現個性化推薦。但考慮到民航領域中,航班號的固定性以及登記序列對旅客選擇航班影響的無效性。對乘客而言,航班屬性如航空公司、起飛時間、票價折扣和主艙位對其選擇出行航班更具有影響力。因此,本文研究的圖結構旅客-項目交互圖中的項目為航班屬性,通過實現對旅客未交互過的項目進行評分預測,計算最終航班的評分,最終實現航班的個性化推薦,整體流程框架如圖2所示。

圖2 模型流程
為得到旅客對不同航空公司的評分,首先統計航空公司的數量。本文研究數據由中航信提供,通過統計,存在部分航空公司很少有旅客選擇其航班,因此過濾掉這部分航空公司。最終航空公司的數量為20個,因此只考慮旅客對這20個航空公司的偏好。對于起飛時間屬性,本文以4個小時為一個時間段,將一天劃分為6個時間段,即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個時間段的偏好。折扣屬性主要有3折以下、3折、4折、5折、6折、7折、8折、9折和全價這九種。至于主艙位屬性,統計發現有C、F、W和Y這四種類型,因此只需對這四種艙位進行建模。
按照屬性占比計算具體得分,評分標準如表1所示。

表1 評分標準
例如,旅客A購買了10張機票,其中有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分。同樣的方法可計算旅客A對艙位、折扣以及出行時間的評分。將原始的航班訂票數據處理成<旅客ID,項目ID,評分>的形式,本文研究的項目包含航空公司、起飛時間、票價折扣和主艙位。本文中項目ID為1-20表示20個航空公司;21-26表示六種出行時間;27-35表示九種票價折扣;36-39表示四種艙位。按照評分計算法則,計算出旅客對項目的評分。得到<旅客ID,項目ID,評分>的形式作為模型的初始輸入數據。
2.2.1旅客特征建模
在描述具體模型之前,先給出相關符號及其含義,如表2所示。

表2 符號屬性
旅客特征建模需要融合旅客交互過的項目特征,如圖3所示。本文的旅客潛在表征融合了旅客ID嵌入表征、交互過的項目ID嵌入表征以及交互過的項目ID的評分嵌入表征,模型架構如圖4所示,旅客模型構建的數學表示如下:

圖3 旅客-項目交互圖

圖4 集成鄰接節點特征的神經網絡圖
hi=σ(W·[Xagg_i⊙eu]+b)
(3)
式中:eu是旅客ID嵌入表征向量;W、b是神經網絡中的權重和偏置量;⊙是矩陣元素層級的矩陣操作,Xagg_i是融合了該旅客交互過的項目的潛在因子向量,其表示如下:
式中:N(i)是旅客i交互過的項目集合,如圖3所示,即旅客u1需要集成其交互過的項目特征及該旅客對交互項目的評分,αia是旅客i和交互項目a的權重因子,本文視旅客i和其交互項目之間的權重值相等且都等于1/|N(i)|。Xia表示旅客i交互過的項目a的潛在表征向量和該旅客對該項目的評分潛在表征向量的交互潛在表征。神經網絡框架如圖5所示,其數學表示如下:

圖5 旅客潛在表征神經網絡圖
Xia=f([ea⊕er]
(5)
式中:⊕是矩陣拼接操作,函數f是用于融合項目潛在因子ea和旅客i對該項目的評價潛在因子er的多層感知機。
2.2.2項目特征建模
與旅客建模相似,本文的項目潛在表征融合了項目ID嵌入表征、被交互過的旅客嵌入表征以及產生交互關系的旅客對該項目的評分嵌入表征,項目模型構建的表征公式如下:
hj=σ(W·[Yagg_u⊙ej]+b)
(6)
式中:ej是項目ID嵌入表征向量;W、b是神經網絡中的權重和偏置量;⊙是矩陣元素層級的矩陣操作;Yagg_u是融合了該項目被交互過的旅客潛在因子向量。
式中:N(j)是項目j被交互過的旅客集合;βjb是項目j和被交互旅客b的權重因子,本文視項目j和被交互旅客b之間的權重值相等且都等于1/|N(j)|。Yjb表示項目j被交互過的旅客b的潛在表征向量和該旅客對該項目的評分潛在表征向量的交互潛在表征,其數學表示如下:
Yjb=g([eb⊕er])
(8)
式中:⊕是矩陣拼接操作,函數g是用于融合旅客潛在因子eb和該旅客b對該項目的評價潛在因子er的多層感知機。
2.2.3評分預測


圖6 評分預測神經網絡圖
2.2.4模型訓練及調參
為優化模型參數,提高評分預測的準確率,本文采用的目標損失函數為:
式中:|Θ|表示評分的個數,ri,j表示真實評分。采用mini-batch提升訓練速度。為優化目標函數并且使得梯度下降得更平緩,本文采用RMSprop優化函數來更新神經網絡中的權值和偏置量。模型涉及的超參數有學習率lr、向量嵌入維度emb_size、mini-batch的大小batch_size。為更好地表示向量表征之間的相關性,向量初始化不采用傳統的one-hot方式,選擇嵌入映射模式,嵌入維度大小的選擇對模型精準度影響也至關重要,向量嵌入維度參數調整范圍為[32,64,128]。batch_size的大小影響模型的收斂速度和最終模型的精準度,每次迭代更新權值和偏置值時均以當前批次數據為依據,批次數據越大越接近整體數據特征,但batch_size過大會使得模型訓練時間過長,而過小則會導致模型震蕩收斂甚至偏離最優值,因此需要選擇合適的batch_size,調整范圍為[64,128,512]。學習率參數初步調整范圍[0.1,0.05,0.01,0.005,0.001,0.000 5],實驗發現學習率為0.005時,損失函數最小,因此進行局部調整,調整范圍為[0.004,0.005,0.006]。
算法思路如下:
算法1更新權值和偏置量的算法
輸入:
用戶集合:U={ui|1≤i≤m}
項目集合:T={tj|1≤j≤n}
用戶項目評分矩陣:R(m×n)
輸出:
更新權值和偏置量的神經網絡
執行過程:
1: 以批為單位訓練數據集
2: Fort=1,2,…,batch_num:
3: 基于批次X(t)進行神經網絡前向傳播:
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: 基于損失函數反向傳播計算梯度:


13: 更新權值和偏置量
15:END FOR
通過模型優化以及對超參數的調節,得到了適應本文研究的準確度最高的模型,進而預測旅客未交互的項目評分,得到一個user_num×item_num的評分矩陣,計算旅客未購買的航班對應的屬性項目的評分累加和并按照從高到低的順序排序,進而實現對旅客的航班個性化推薦。
本文使用中航信提供的PNR數據,根據模型需要篩選出113 756條旅客訂票數據,篩選出模型所需屬性列:訂票旅客ID、航空公司、起飛時間、折扣率和主艙位。根據前面提到的評分計算法則對數據進行初步處理,得到<旅客ID,項目ID,評分>形式的數據。選取實驗數據的80%作為訓練集,10%作為驗證集,10%作為測試集。
模型采用均方根誤差(Root Mean Square Error,RMSE)來衡量模型的準確性。一般情況下RMSE越小說明模型預測評分越準確。
實驗環境:處理器2.7 GHz Intel Core i5,內存16 GB DDR3 1867 MHz,編程語言Python。
為得到適配模型的最優超參數,選取不同值對模型進行訓練。
3.2.1不同學習率對算法的影響
實驗條件:向量嵌入維度emb_size為64,指數加權因子β為0.99,batch_size為128,學習率衰減因子lr_decay為0.1。迭代停止條件:最大循環次數epoch_num=30。變化條件:不同的循環次數epoch_num。對比實驗:不同的學習率。
由圖7可知,當lr=0.005時算法預測的準確度較高,在相同的迭代次數下,RMSE值較低且收斂速度也較快。同一學習率下,算法精確度隨著迭代次數的增加而增加,在迭代次數為15之前,精確度增加的較快,之后變化不大慢慢趨于平穩。實驗結論:學習率過小對導致收斂速度太慢,訓練時間太長;學習率太高對使得梯度不穩定,甚至導致無法收斂。因此要選擇適合本文模型的學習率。

圖7 不同學習率對算法的影響
3.2.2不同向量嵌入維度對算法的影響
實驗條件:學習率lr為0.005,指數加權因子β為0.99,batch_size為128,學習率衰減因子lr_decay為0.1。迭代停止條件:最大循環次數epoch_num=30。變化條件:不同的循環次數epoch_num。對比實驗:不同的向量嵌入維度。
由圖8可知,隨著迭代次數的增加,RMSE值逐漸降低。對比看來,emb_size=64時,RMSE的最低點對應值最小,收斂速度最快。實驗結論:向量嵌入維度影響模型收斂速度和最終模型準確度,本文算法中選取嵌入維度64可使得模型達到最優。

圖8 不同嵌入向量維度對算法的影響
3.2.3不同批次大小對算法的影響
實驗條件:學習率lr為0.05,指數加權因子β為0.99,學習率衰減因子lr_decay為0.1。迭代停止條件:最大循環次數epoch_num=30。變化條件:不同的循環次數epoch_num。對比實驗:不同的批次大小。
由圖9可知,批次大小越小,訓練的速度越快。觀察得,在batch_size為128時,訓練速度相對較快,最低點處的RMSE值最低,準確度最高。

圖9 不同批次大小對算法的影響
民航領域航班個性化推薦研究不足,結合航班特色,推薦模型的構建應當考慮細粒度建模研究。為實現個性化精準推薦,旅客航班之間的潛在交互特征應當被充分挖掘。本文構建的基于圖神經網絡的民航旅客隱式交互特征挖掘航班推薦模型充分挖掘了旅客隱式交互特征和航班的隱式交互特征,提升了航班推薦的精準度。但是不同類型的項目對旅客選擇航班的影響不同,未來在構建隱式交互特征時將考慮引入注意力機制來進一步提升模型精準度。