蔣理 陸春燕 夏洋 章嘯可
摘 要:航班數(shù)據(jù)是航空公司運(yùn)行的重要組成部分,將繁雜的數(shù)據(jù)高效地展示出來,可以有效地提升航空公司運(yùn)行效率,也可以使客戶更有效地了解相關(guān)信息。文章介紹了一種航班數(shù)據(jù)可視化展示的軟件系統(tǒng),詳細(xì)介紹了從數(shù)據(jù)獲取到展示的過程。
關(guān)鍵詞:航班數(shù)據(jù);可視化;數(shù)據(jù)展示
隨著互聯(lián)網(wǎng)大數(shù)據(jù)的發(fā)展,各種大數(shù)據(jù)的分析對各行業(yè)都產(chǎn)生了不同程度的影響。網(wǎng)站數(shù)據(jù)等是互聯(lián)網(wǎng)的重要組成部分。對于民航業(yè)領(lǐng)域,社會事件的發(fā)生,會很大程度影響旅客的出行需求變化,從而影響航空公司飛機(jī)運(yùn)力投放、航班編排、票價策略等,對互聯(lián)網(wǎng)事件的準(zhǔn)確抓取和分析,能夠幫助航空公司更好地服務(wù)市場,服務(wù)旅客,提升收益。
對于航空公司來說,能否預(yù)先判斷旅客的出行需求,可用于航空公司及行業(yè)管理部門決定行業(yè)運(yùn)力投放的合理性,從而提高旅客服務(wù)水平,提高航空公司航班收益水平,從互聯(lián)網(wǎng)獲取大量的影響民航領(lǐng)域的信息,能夠幫助航空公司制定銷售策略。但是互聯(lián)網(wǎng)上的數(shù)據(jù)復(fù)雜性非常高,一是事件數(shù)據(jù)來源多;二是各數(shù)據(jù)源對事件的描述非常復(fù)雜,來自不同數(shù)據(jù)源的同一事件,可能差別較大;三是事件數(shù)據(jù)一般為非結(jié)構(gòu)化數(shù)據(jù),其處理能力有一定的難度。
傳統(tǒng)做法需要投入大量人工進(jìn)行標(biāo)注。因此,需要系統(tǒng)具有抓取數(shù)據(jù)的技術(shù)和一定的自然語言處理能力,實現(xiàn)自動化[1]。
本系統(tǒng)能夠從數(shù)據(jù)源智能實時抓取航班數(shù)據(jù),并分類可視化與地圖上的產(chǎn)品,主要功能是實現(xiàn)互聯(lián)網(wǎng)信息采集,事件畫像建模,可視化展示。
1 主要技術(shù)介紹
網(wǎng)絡(luò)爬蟲是一種用來自動瀏覽萬維網(wǎng)的網(wǎng)絡(luò)機(jī)器人。網(wǎng)絡(luò)搜索引擎等站點通過爬蟲軟件更新自身的網(wǎng)站內(nèi)容或其對其他網(wǎng)站的索引。網(wǎng)絡(luò)爬蟲可以將自己所訪問的頁面保存下來,以便搜索引擎事后生成索引供用戶搜索。
爬蟲訪問網(wǎng)站的過程會消耗目標(biāo)系統(tǒng)資源,不少網(wǎng)絡(luò)系統(tǒng)并不默許爬蟲工作。因此,在訪問大量頁面時,爬蟲需要考慮到規(guī)劃、負(fù)載,還需要講“禮貌”。不愿意被爬蟲訪問、被爬蟲主人知曉的公開站點可以使用robots.txt文件之類的方法避免訪問。這個文件可以要求機(jī)器人只對網(wǎng)站的一部分進(jìn)行索引,或完全不作處理。
互聯(lián)網(wǎng)資源數(shù)據(jù)量巨大,這意味著網(wǎng)絡(luò)爬蟲在一定時間內(nèi)只能下載有限數(shù)量的網(wǎng)頁,因此它需要優(yōu)化它的下載方式?;ヂ?lián)網(wǎng)資源瞬息萬變,這也意味著網(wǎng)絡(luò)爬蟲下載的網(wǎng)頁在使用前就已經(jīng)被修改甚至是刪除了。服務(wù)器端軟件所生成的統(tǒng)一資源地址數(shù)量龐大,以致于網(wǎng)絡(luò)爬蟲難以避免地采集到重復(fù)內(nèi)容。根據(jù)超文本協(xié)議“顯示請求”(HTTP GET)的參數(shù)的無盡組合所返回的頁面中,只有很少一部分確實傳回唯一的內(nèi)容。
2 系統(tǒng)整體設(shè)計
本系統(tǒng)分為前端與后端。前端主要負(fù)責(zé)數(shù)據(jù)可視化由以下4個模塊構(gòu)成:地理位置、事件建模、航班信息和統(tǒng)計視圖。后端主要負(fù)責(zé)信息采集,采用多線程爬蟲處理,使用定時爬取。
系統(tǒng)總體結(jié)構(gòu)如圖1所示。
3 算法設(shè)計
基于線性回歸預(yù)測航班降落時間:
線性回歸(Linear Regression)算法。在統(tǒng)計學(xué)中,線性回歸是利用稱為線性回歸方程的最小平方函數(shù)對一個或多個自變量和因變量之間關(guān)系進(jìn)行建模的一種回歸分析。這種函數(shù)是一個或多個稱為回歸系數(shù)的模型參數(shù)的線性組合。
回歸分析中,只包括一個自變量和一個因變量,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。如果回歸分析中包括兩個或兩個以上的自變量,且因變量和自變量之間是線性關(guān)系,則稱為多元線性回歸分析[2]。
多元線性方程格式:
(1)
從一堆看起來沒有聯(lián)系的樣本點中找到一個直線方程,能讓數(shù)據(jù)盡可能擬合這條直線,從而對未知數(shù)據(jù)進(jìn)行預(yù)測。
代價損失函數(shù)(cost fuction):
(2)
用spark來對航班歷史數(shù)據(jù)進(jìn)行分析,把每個航班的歷史數(shù)據(jù)分為訓(xùn)練集和測試集通過spark ml對訓(xùn)練集進(jìn)行訓(xùn)練得到weights和intercept。再對測試集進(jìn)行測試,進(jìn)行權(quán)重優(yōu)化,采用隨機(jī)梯度下降。觀察得到的函數(shù)是否足夠擬合訓(xùn)練集數(shù)據(jù),挑出最好的函數(shù)(cost function最小),即可把對應(yīng)航班的weights和intercept存入mysql中,獲取當(dāng)前航班的起飛時間和計劃起飛時間預(yù)測降落時間。
4 其他關(guān)鍵模塊
重新訪問策略,網(wǎng)站的屬性之一就是經(jīng)常動態(tài)變化,而爬取網(wǎng)站的一小部分往往需要花費(fèi)幾個星期或者幾個月。等到網(wǎng)站爬蟲完成它的爬取,很多事件也已經(jīng)發(fā)生了,包括增加、更新和刪除。在搜索引擎的角度,因為沒有檢測這些變化,會導(dǎo)致存儲了過期資源的代價。最常用的估價函數(shù)是新鮮度和過時性。新鮮度:這是一個衡量抓取內(nèi)容是不是準(zhǔn)確的二元值。在時間t內(nèi),倉庫中頁面p的新鮮度是這樣定義的:
(3)
過時性是一個衡量本地已抓取的內(nèi)容過時程度的指標(biāo)。在時間t時,倉庫中頁面p的時效性的定義如下:
(4)
準(zhǔn)點率的計算是根據(jù)爬取到的歷史航班數(shù)據(jù)計算每個飛機(jī)所有實際飛行時間和預(yù)計飛行時間的誤差之和,最后計算平均值,得到準(zhǔn)點率。
從定時爬蟲模塊中獲取所有minLon,minLat,maxLon,maxLat和token參數(shù),然后重新構(gòu)建url,放入ThreadPool中,合并所有線程返回的結(jié)果集,并將結(jié)果集存入redis的db0中。Read time out /connect time out,減少線程數(shù)目,或增加線程睡眠時間,或換用大帶寬網(wǎng)絡(luò),或高質(zhì)量網(wǎng)絡(luò)IP被網(wǎng)站ban,增加線程睡眠時間,或減少長時間持續(xù)高密度爬蟲,或設(shè)置userAgent偽裝和輪換,或設(shè)置代理IP或者設(shè)置代理IP池。