劉宇波
(湖北大學 計算機學院,湖北 武漢 430061)
滿意度是一種心理狀態,是指一個人對一段關系質量的主觀評價。航空公司對于乘客滿意度的管理尤為重要,對乘客滿意度進行測評,可以分析影響滿意度的關鍵因素、衡量當前乘客的滿意度水平、針對產品以及服務做出改進策略。通過構建滿意度預測模型,可以對乘客進行市場細分,對于不同乘客推出不同的服務產品,充分挖掘大數據,提高乘客滿意度。
隨著計算機技術的發展,諸多學者采用機器學習等人工智能方式對顧客滿意度進行預測。范曉婷[1]通過對頭部企業“口碑”平臺的交易數據進行挖掘分析,運用機器學習理論搭建顧客滿意度預測模型,并對不同算法的預測結果進行對比分析。章凱兵[2]基于yelp官方用戶和商戶信息數據,運用LSTM模型進行用戶偏好挖掘,最后運用人工神經網絡對用戶滿意度進行預測。陳雪松等[3]通過對36名學生進行實驗觀察收集數據,然后運用GBDT模型和馬爾代夫模型設計了圖像搜索環境下的用戶滿意度預測模型。
本文采用kaggle網站公開數據集。其中包含了10萬余條乘客數據,23種特征。具體如下:Satisfaction:乘客滿意或不滿意,待預測項;Gender:性別(男,女);Age:年齡;Type of Travel:飛行目的(個人旅行、商務旅行);Class:乘客飛機上的旅行等級(商務、環保、環保加);Flight Distance:本次行程的飛行距離;Seat comfort:座椅舒適度滿意度(0:不適用;1-5);Departure/Arrival time convenient:出發/到達時間方便的滿意度;Food and drink:食品和飲料的滿意度;Gate location:gate位置的滿意度;Inflight WIFI service:機上WIFI的滿意度;Inflight entertainment:機上娛樂的滿意度;Online support:線上支持滿意度;Ease of Online booking:在線預訂滿意度;On-board service:機上服務滿意度;Leg room service:腿部客房服務的滿意度;Baggage handling:行李處理滿意度;Checkin service:值機服務滿意度;Cleanliness:清潔滿意度;Online boarding:線上登機滿意度;Departure/Arrival Delay in Minutes:出發/到達時延遲分鐘數。
利用padas庫將數據導入,隨后用info函數查看數據的總體信息,該函數可以查看所有特征、類型,以及數據缺失情況,如圖1所示。運行代碼后發現只有到達時延遲分鐘數存在缺失值,于是采取中值填充的方法彌補缺失值,代碼如下:data['Arrival Delay in Minutes'].fillna(data['Arrival Delay in Minutes'].median(axis=0),inplace=True)。
然后要進行特征分類,分成數值特征和類別特征。年齡、飛行距離、出發/達到延遲分鐘數四種都屬于數值特征,除了上述四種以及預測目標滿意度外,剩下的18種屬于類別特征。將類別特征的類型進行修改,修改完成后再次查看數據信息,如圖2所示,所有特征類型已經修改完成,無缺失值。
采用matplotlib庫和seaborn庫對數據進行可視化,以便能夠更直觀地觀察特征之間的關系,挖掘數據信息。
圖1 數據總體信息
圖2 修改后數據信息
(1)查看待預測目標:滿意乘客的比例,如圖3。發現滿意與不滿意的人數相差不大,趨近于平衡,分類可以看作均衡分類。
圖3 滿意度比例扇形圖
(2)用熱力圖查看數值特征之間的聯系,如圖4,橫軸為到達延遲分鐘數,縱軸代表出發延遲分鐘數。發現出發延遲分鐘和到達延遲分鐘的相關度很高,高達0.96,于是用散點圖分析之間的聯系,如圖5??梢钥闯觯@些點大部分呈直線排列,說明二者間有很大的線性相關性。而這也是符合邏輯的,因為一旦飛機起飛時延誤了,那么它的落地時間也會很大概率延誤。
圖4 數值特征熱力圖
圖5 出發和到達延遲分鐘數散點圖
(3)查看類別特征和滿意度之間的關系,由于篇幅原因選取部分圖片展示,如圖6,每張圖的下方有特征名。
特征工程是機器學習建模中重要的一個環節,特征處理結果很大程度上決定模型擬合度根據上述特征分類結果,對數值特征和類別特征分別進行處理。
對于類別特征,最常用的處理方式是將其進行編碼。編碼方式有很多種,本文對數據集中的類別特征主要采用獨熱編碼和二分編碼,類別數有兩種的特征采用二分編碼,類別個數兩個以上的采用獨熱編碼。
圖6 類別特征和乘客滿意度的關系
首先針對類別特征的類別個數進行分類,借助describe函數,將類別個數為2或大于2的分開。結果顯示,類別個數為2的特征有性別、乘客種類以及飛行目的,剩下的特征類別個數都大于2。隨后對這兩類特征進行編碼,類別個數為2的用二分編碼將兩種類別編為0和1,其余特征用獨熱編碼,采用了pandas庫中的get_dummies函數進行特征提取。
將兩類特征處理完后,用concat函數合并,將要預測的目標顧客滿意度進行編碼處理,將不滿意和滿意編為0和1,方便后續的建模預測。
將處理完成的數據用train_test_split函數分為訓練集和測試集,其中測試集比例為0.2。隨后用機器學習的算法對訓練集進行訓練,然后預測結果并和測試集進行比較。采用以下5種算法進行建模:knn算法、決策樹算法、隨機森林算法、gradientboosting算法和catboost算法,隨后采用了投票法將效果較好的模型進行融合,建模訓練比較結果。
對于每種模型,都用了七種評價指標,分別為:準確率(accuracy)、精確率(precision)、召回率(recall)、f1值、roc曲線下面積(roc_auc)、均衡準確率(balance_accuracy)和混淆矩陣(confusion_matrix)。表1是模型的訓練結果,保留了小數點后4位小數。vot是由gb、rf、cat進行投票融合的模型。
表1 模型訓練結果
根據結果,這些分類器的準確度都在90%以上,具體為:gradientboosting算法:95.73%;knn算法:93.13%;隨機森林算法:95.81%;決策樹算法:94.42%;catboost算法:96.25%;模型融合:96.15%。其中,catboost算法各項指標最高,準確度達到了96.25%,融合模型的準確率次之。knn以及決策樹算法均低于95%。在這6種模型中,除了knn和決策樹,其他4種都屬于集成算法,因此這可能是導致它們的準確度更高的原因之一。在訓練中,僅僅對gradientboosting算法和catboost算法的參數進行了微調,而其他的算法都選擇了默認參數,這也是導致預測結果不同的因素。在第二章的特征工程中如果采取不同的方式處理數據,可能也會對結果產生影響。
雖然結果有些許差異,但本文幾種模型的表現都較好,其中以catboost算法最優。還有許多分類算法在本文并沒有提及,比如svm支持向量機,集成算法中的xgboost算法等。航空公司可以根據本文的數據及結果,對模型進行改進或者使用更多不同的算法進行建模,對算法參數進行調整,以得到更優性能的模型,也可以在本文機器學習基礎之上采取深度學習算法,以得到更高的準確率。對乘客滿意度進行更為深入的預測研究,以便提前制定策略,增加客流量。