自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

攜程火車票異常檢測和根因定位實踐

開發(fā)
最近幾年,火車票業(yè)務(wù)持續(xù)高速成長,業(yè)務(wù)指標(biāo)種類繁多,如何快速準(zhǔn)確的發(fā)現(xiàn)指標(biāo)的異常以及導(dǎo)致異常的原因,并及時排除問題顯得尤為重要。

作者簡介

龍川涇渭,攜程算法工程師,專注異常檢測、根因分析、時間序列預(yù)測等領(lǐng)域。

攜程火車票包含1000+的業(yè)務(wù)指標(biāo),人工監(jiān)測指標(biāo)的異常情況耗時費力,而由于業(yè)務(wù)差異,基于規(guī)則和簡單統(tǒng)計學(xué)的檢測方案只能覆蓋到單個指標(biāo)或者單類指標(biāo),并且不能隨著新業(yè)務(wù)上線或者功能變動靈活動態(tài)的調(diào)整相應(yīng)的規(guī)則,并不適用于大量不同業(yè)務(wù)線的指標(biāo)。我們希望使用AI算法來代替人工,對指標(biāo)進(jìn)行全自動的監(jiān)控,旨在發(fā)現(xiàn)指標(biāo)的異常和導(dǎo)致異常的潛在原因。

具體來說,對于異常檢測,使用六種無監(jiān)督檢測算法計算異常得分,根據(jù)時間序列特性和指標(biāo)的業(yè)務(wù)特點計算異常閾值,集成多種算法的異常結(jié)果進(jìn)行硬投票,得到異常結(jié)果。對于根因定位,集成了Adtributor、Hotspot等四個算法做硬投票系統(tǒng),按投票次數(shù)降序輸出根因結(jié)果。此外根據(jù)指標(biāo)的重要程度,設(shè)置不同的投票規(guī)則,來權(quán)衡精召率。

一、背景

最近幾年,火車票業(yè)務(wù)持續(xù)高速成長,業(yè)務(wù)指標(biāo)種類繁多,如何快速準(zhǔn)確的發(fā)現(xiàn)指標(biāo)的異常以及導(dǎo)致異常的原因,并及時排除問題顯得尤為重要?;贏I的異常檢出能力,可以根據(jù)指標(biāo)的歷史數(shù)據(jù)分布規(guī)律,實現(xiàn)實時監(jiān)測,幫助開發(fā)人員盡早的發(fā)現(xiàn)問題和挖掘產(chǎn)生問題的原因。

1.1 業(yè)務(wù)指標(biāo)特點

我們從已有的歷史監(jiān)控指標(biāo)中,發(fā)掘時序數(shù)據(jù)的變化規(guī)律,從而根據(jù)數(shù)據(jù)的分布特點選取合適的算法。從圖1我們可以看出,火車票業(yè)務(wù)的核心業(yè)務(wù)數(shù)據(jù),主要呈現(xiàn)兩種規(guī)律:

1)周期型時間序列,受人們出行規(guī)律的影響,大部分核心業(yè)務(wù)指標(biāo)都會呈現(xiàn)較強的周期型規(guī)律。由于多數(shù)用戶在工作日買票,周末出行,就形成工作日的支付票量和出票票量比周末多的規(guī)律,而出行票量則表現(xiàn)出剛好相反的趨勢。在不同業(yè)務(wù)線下,相同的業(yè)務(wù)指標(biāo)之間的周期規(guī)律也不盡相同。

2)平穩(wěn)型時間序列,對于任意時刻,如果它的性質(zhì)不隨觀測時間的變化而變化,那就認(rèn)為是平穩(wěn)型時間序列。由于指標(biāo)本身的性質(zhì)和偶發(fā)性的因素影響,有些指標(biāo)沒有很強的規(guī)律性,而展現(xiàn)出相對穩(wěn)定的趨勢。

圖片圖1 核心業(yè)務(wù)指標(biāo)的時間序列類型

不論是平穩(wěn)型還是周期型指標(biāo),根據(jù)當(dāng)前的業(yè)務(wù)情況上線新的營銷策略,發(fā)放優(yōu)惠券等活動,尤其是對出行的影響巨大的疫情及其相關(guān)的政策,均會引起指標(biāo)一定程度的劇烈波動,如陡升,陡降,整體抬升或降低。

1.2 主要痛點

1)基于規(guī)則的異常檢測識別適用性差?;疖嚻睒I(yè)務(wù)指標(biāo)目前有1000+,人工對所有指標(biāo)進(jìn)行檢測耗時費力。而基于業(yè)務(wù)規(guī)則的檢測方案只能覆蓋到單個指標(biāo)或者單類指標(biāo),并且業(yè)務(wù)規(guī)則的配置需要對業(yè)務(wù)特點熟悉,對于新業(yè)務(wù)上線或者功能變動則不能靈活動態(tài)的調(diào)整相應(yīng)的規(guī)則,并不適用于大量不同業(yè)務(wù)線的指標(biāo)。 

2)大部分核心指標(biāo)都是和出行相關(guān)的,而近三年由于疫情的影響,在特定的時間窗口內(nèi),用戶的出行規(guī)律變化復(fù)雜,導(dǎo)致精準(zhǔn)捕捉指標(biāo)的周期變得困難,從而增加了異常點的檢出難度。

3)異常故障需要數(shù)據(jù)分析師排查。當(dāng)某個業(yè)務(wù)指標(biāo)發(fā)生異常,需要快速準(zhǔn)確的定位到是哪個交叉維度的細(xì)粒度指標(biāo)的異常導(dǎo)致的,以便盡快做進(jìn)一步的修復(fù)止損操作。由于指標(biāo)維度多,每個維度取值范圍大,導(dǎo)致人工介入解決問題的難度和時間成本高。

二、異動歸因系統(tǒng)介紹

針對業(yè)務(wù)需求、指標(biāo)的特點和當(dāng)前存在的痛點等問題,我們開發(fā)了一套異動歸因系統(tǒng),它分為異常檢測和根因定位兩個子系統(tǒng)。異常檢測系統(tǒng)負(fù)責(zé)將各業(yè)務(wù)指標(biāo)的突然上漲和下跌等異常情況檢測出來,根因定位系統(tǒng)是在指標(biāo)出現(xiàn)異常的情況下,找出引起異常的原因。

2.1 異常檢測系統(tǒng)

由于不同業(yè)務(wù)線指標(biāo)數(shù)量多,規(guī)律差異大,無監(jiān)督算法更符合火車票業(yè)務(wù)需求。常見的無監(jiān)督異常檢測算法如表1所示【1】,對于局部異常點, LOF(局部異常因子)在統(tǒng)計上優(yōu)于其他無監(jiān)督方法,而使用K次(全局)最近鄰距離作為異常評分的KNN是統(tǒng)計上最好的全局異常檢測算法。

綜合考慮局部異常和全局異常點的檢出能力,以及訓(xùn)練時長,最終確定了LOF,KNN,CBLOF,COF,IForest,PCA作為火車票的異常檢測算法。

圖片表1 常見異常檢測算法性能分析

無監(jiān)督算法的性能在很大程度上取決于其假設(shè)和潛在異常類型的一致性【1】,所以對不同指標(biāo)經(jīng)常出現(xiàn)的異常類型的分析至關(guān)重要,以便于選擇合適的檢測算法。我們對典型的一些周期型指標(biāo)序列和平穩(wěn)型指標(biāo)序列的異常情況進(jìn)行分析統(tǒng)計,如圖2所示:

圖片圖2 核心業(yè)務(wù)指標(biāo)的異常點類型

分析發(fā)現(xiàn),平穩(wěn)型指標(biāo)序列(a)出現(xiàn)的主要是全局異常點,而局部異常點主要分布在具有趨勢性和周期性的序列(b)、(c)和(d)中。由于相同業(yè)務(wù)線的指標(biāo)趨勢規(guī)律大致相同,出現(xiàn)的異常類型也大致一樣,我們可以根據(jù)不同業(yè)務(wù)線的指標(biāo)序列類型,應(yīng)用不同的算法組合。

在分析指標(biāo)的異常類型和算法選取之后,我們需要根據(jù)指標(biāo)的不同分布情況,針對每種算法的異常得分選取合適的閾值,得到最終異常結(jié)果。我們分析了部分核心指標(biāo)的概率密度分布,對不同數(shù)據(jù)的分布采用了不同的閾值算法,最終確定在低偏態(tài)高對稱分布下,Z-score+肘部法則的方法計算閾值,在高偏態(tài)分布下,使用箱型圖(Boxplot)計算閾值。

圖片

圖3 異常檢測系統(tǒng)流程圖

經(jīng)過如上分析之后,我們的異常檢測分析流程如圖3所示,主要分為時間序列分析、異常得分計算和異常閾值計算三個模塊,下面我們分別介紹:

1)時間序列分析。當(dāng)時序數(shù)據(jù)滿足平穩(wěn)型檢驗,直接使用全局檢測算法進(jìn)行序列的異常得分計算,同時使用Z-score+肘部法則的方法,計算異常得分閾值。當(dāng)時序數(shù)據(jù)滿足周期性檢驗時,使用STL算法提取時序數(shù)據(jù)的周期性分量和趨勢性分量,將殘差分量進(jìn)行異常得分和異常得分閾值計算。當(dāng)時序不滿足周期性檢驗時,將時序數(shù)據(jù)轉(zhuǎn)化為概率的分布圖,如果偏度低于閾值,使用Z-score+肘部法則的方法計算異常得分閾值,否則使用箱型圖計算。

2)異常得分計算。根據(jù)對異常類型的檢出能力,分為全局異常檢測算法組:{KNN, IForest, PCA, CBLOF}和局部異常檢測算法組:{LOF, KNN, COF, CBLOF}。

3)異常閾值計算。箱形圖是通過計算一組值的最大值Q4,上四分位數(shù)Q3,中位數(shù)Q2,下四分位數(shù)Q1,最小值Q0,來描述樣本分布的離散程度以及對稱性。一般情況下,箱形圖不需要對樣本進(jìn)行任何假定,在對樣本具有較高的異常容忍度的同時,能夠描述樣本的離群程度。

Z-score是描述一個值和一組值的平均值的偏離程度的統(tǒng)計測量分?jǐn)?shù),定義如下:z=((x-μ))?δ。肘部法則定義每個類的畸變程度等于每個變量點到其類別中心的位置距離平方和,隨著類別數(shù)量的增加,平均畸變程度的改善效果會降低,而改善效果降幅最大的位置對應(yīng)的值就是肘部,該方法一般用于聚類數(shù)量的選擇。

這里我們結(jié)合Z-score和肘部法則,計算待檢測時間序列的|z|序列,然后對其進(jìn)行降序排列得到|z|desc序列,最后利用肘部法則得到肘部值作為異常閾值。

最后根據(jù)每種算法的異常得分和異常閾值進(jìn)行分析,以投票最多的作為最后的異常結(jié)果。針對指標(biāo)的重要程度設(shè)置不同的投票規(guī)則權(quán)衡精召率,比如更重要的P0指標(biāo),降低投票閾值保證異常不漏報,而對于不太重要的P2指標(biāo),適當(dāng)提高閾值保證精確率。

2.2 根因定位系統(tǒng)

在我們的各類火車票核心業(yè)務(wù)指標(biāo)中,都是多維度的可加性指標(biāo)集合,當(dāng)總指標(biāo)被檢測出異常之后,需要盡快定位是哪些交叉維度的細(xì)粒度指標(biāo)導(dǎo)致了總指標(biāo)的異常。

例如對于某個業(yè)務(wù)線的訂單量指標(biāo)A,它涉及到出發(fā)城市、APP渠道、訂單類型等維度,各維度又包含一系列的維度值(元素),出發(fā)城市:北京,上海,廣州等,APP渠道:支付寶小程序,微信小程序等,訂單類型:國內(nèi),國外。當(dāng)總指標(biāo)A發(fā)生異常時,最可能的異常原因可以表示為不同維度的元素集合,如{訂單類型=國內(nèi)},或者{出發(fā)城市=北京&廣州,APP渠道=微信小程序}等。這個查找定位交叉維度的細(xì)粒度元素集合的過程就是根因定位。

多維指標(biāo)數(shù)據(jù)具有以下兩個特征:

1)數(shù)據(jù)的總量大。指標(biāo)包含多個維度,某些業(yè)務(wù)指標(biāo)包含20+的維度,并且每個維度包含不同的屬性值,比如城市維度包含全國600+屬性值;

2)隨著數(shù)據(jù)指標(biāo)維度的分層,維度集合總數(shù)成指數(shù)級增長,并且維度之間具有復(fù)雜的相互影響關(guān)系。

我們的問題可以歸結(jié)為,在所有維度和維度值組成的集合里,找出導(dǎo)致總指標(biāo)發(fā)生突變的維度和維度值子集。這樣需要設(shè)計一個合理的得分函數(shù),來評估每個子集是否是根因的得分,然后選出得分最高的子集即可,由于搜索空間很大,所以需要各種啟發(fā)式搜索方法或者剪枝策略。

我們調(diào)研常見的幾種啟發(fā)式搜索算法。

Adtributor【2】算法假定導(dǎo)致總指標(biāo)異常的根因只會出現(xiàn)在某一個維度上,它提出EP值(解釋力)和S值(驚奇力)兩個得分指標(biāo)來評估子集,EP值表示該子集的指標(biāo)波動和總指標(biāo)的波動的比例,S值是指維度下各個維度值的取值分布是否有變化。它的核心思想是將多維度根因分析問題分解為多個單維度根因分析問題,采用解釋力和驚奇力定位每個維度下的異常元素集合,最后根據(jù)每個維度總的驚奇力值大小匯總輸出根因集合。

HotSpot【3】設(shè)計了一種叫potential score的得分函數(shù),并顯式的考慮了多個根因同時作用的情況,采用蒙特卡洛樹搜索(MCTS)算法來解決巨大搜索空間的問題,并使用了分層剪枝策略降低搜索復(fù)雜度。

Squeeze【4】算法主要是針對HotSpot進(jìn)行了三個改進(jìn),首先提出泛化的RE(ripple effect)原則,可以直接處理由可加性指標(biāo)復(fù)合得到的率值指標(biāo);其次改進(jìn)的PS(potential score)得分函數(shù)能捕捉到變化幅度較小的異常;最后是先對細(xì)粒度屬性組合進(jìn)行聚類,然后在每一類組合中去搜索根因,顯著降低定位時長。

Psqueeze【5】是對Squeeze的擴(kuò)展,它提出一種新的基于GRE(general ripple effect)的概率聚類方法,將屬性組合分組到不同聚類中,然后根據(jù)GPS(general potential score)來評估屬性組合是根因的可能性。

圖片

圖4 根因定位系統(tǒng)流程圖

最后我們根據(jù)火車票業(yè)務(wù)指標(biāo)的特點,設(shè)計了如圖4所示的根因定位系統(tǒng),當(dāng)異常檢測系統(tǒng)檢測到某個指標(biāo)出現(xiàn)異常時,即進(jìn)入根因定位系統(tǒng)。根因定位是根據(jù)指標(biāo)真實值和期望值的差距大小來確定根因的,它分為數(shù)據(jù)構(gòu)建和根因定位算法兩個模塊:

1)構(gòu)建數(shù)據(jù)。首先對指標(biāo)進(jìn)行維度拆分,得到最細(xì)粒度指標(biāo)的歷史數(shù)據(jù)時間序列,再根據(jù)序列特性采用不同算法進(jìn)行預(yù)測。如果序列具有平穩(wěn)型,采用指數(shù)加權(quán)平均法(Ewma)進(jìn)行預(yù)測,否則使用異常點前3個點位的中值作為預(yù)測值,最后結(jié)合歷史值(真實值)和預(yù)測值(期望值)建立數(shù)據(jù)立方體。

2)根因定位算法。使用四種常見的根因定位算法分別定位,組成硬投票系統(tǒng),按照票數(shù)倒序輸出根因集合。根據(jù)火車票核心業(yè)務(wù)指標(biāo)維度和維度值多的特點,結(jié)合奧卡姆剃刀原則思想,微調(diào)了Adtributor算法EP值閾值,以及對Hotspot算法的PS評分函數(shù)進(jìn)行修正,在不損失根因定位準(zhǔn)確率的情況下盡量精簡根因集合??紤]到檢測時長,當(dāng)待檢測指標(biāo)元素組合數(shù)量大于1000時,不使用Hotspot算法,元素組合數(shù)量超過10000時,只采用Adtributor進(jìn)行根因定位。

三、異動歸因?qū)嵺`結(jié)果

案例業(yè)務(wù)背景:出行相關(guān)的票量受自然天氣影響較大,當(dāng)出現(xiàn)極端天氣時,票量一般會出現(xiàn)突然下跌或上漲,如圖5所示,該情況需要及時識別異常,并分析出引發(fā)指標(biāo)異常的相關(guān)維度和維度值。

圖片圖5 業(yè)務(wù)線A退票量的異常檢測結(jié)果

隨著臺風(fēng)“杜蘇芮“在7.24日被中央氣象局升級為超強臺風(fēng),并在28日上午登陸福建省晉江市,近日來造成多地區(qū)出現(xiàn)極端強降雨現(xiàn)象,導(dǎo)致大量交通工具延誤甚至取消。圖5展示的是業(yè)務(wù)線A在近兩個月的退票量情況,退票量有較明顯的工作日高于雙休日的周期性規(guī)律,7月27日,7月31日和8月1日出現(xiàn)較明顯的退票小高峰,符合需要識別異常點的預(yù)期。

在檢測出異常之后,根因定位系統(tǒng)對出票票量的城市維度進(jìn)行根因定位,結(jié)果如表2所示,

圖片表2 根因定位結(jié)果表

為了分析根因定位系統(tǒng)的準(zhǔn)確性,我們手動計算城市維度的根因得分,然后對比算法和人工分析的異同。首先根據(jù)adtributor算法的檢測原理,分別計算EP值和S值,方程式如下,

圖片

其中,A為真實值,F(xiàn)為預(yù)測值,下標(biāo)i為維度名,j為維度下的元素名,m為異常指標(biāo)名。

圖片

其中,p為先驗概率,圖片,q為后驗概率,圖片。然后以EP和S的加權(quán)和作為根因得分RT_score,得到不同異常日期的城市維度的人工根因定位結(jié)果,如圖6所示,

圖片圖6 不同日期城市維度的人工根因定位結(jié)果

從圖6可以看出,7月27日的退票票量異常,從出發(fā)城市維度分析,主要是由揭陽和廈門造成的;從到達(dá)城市維度分析,主要是由廈門和南昌造成的,人工定位的和算法檢測的根因結(jié)果相符合。而超強臺風(fēng)杜蘇芮正是在7月28日登陸福建,造成東南沿海部分城市出現(xiàn)暴雨天氣,導(dǎo)致大量航班和列車取消或者停運,從而影響所在地區(qū)城市的退票票量異常升高。

7月31日和8月1日的退票票量異常,不論是從出發(fā)城市還是到達(dá)城市分析,北京都是引起退票退票升高的首要原因。這與根因定位系統(tǒng)的檢測結(jié)果吻合,并且能將變化幅度大但是體量小的城市剔除。

比如7月31日的出發(fā)城市維度分析,威海和大理的RT_score較高,但是由于其退票量體量很小(只占南京15%的票量),算法沒有將其判定為根因。這兩天退票量異常的根本原因依然是受超強臺風(fēng)杜蘇芮的影響,7月29日至8月1日杜蘇芮在華北地區(qū)造成“遠(yuǎn)距離臺風(fēng)暴雨”,北京地區(qū)超300趟次航班取消和43趟列車停運,導(dǎo)致北京市退票量異常升高。

這個案例較好的展示了異動歸因系統(tǒng)對陡升型異常的檢測能力,同時能快速并且相對準(zhǔn)確的定位到導(dǎo)致異常的原因。

四、總結(jié)和展望

4.1 總結(jié)

本文主要介紹了異動歸因系統(tǒng)在火車票業(yè)務(wù)指標(biāo)上的初步應(yīng)用,首先分析業(yè)務(wù)指標(biāo)的時間序列類型,以及不同業(yè)務(wù)數(shù)據(jù)出現(xiàn)的異常類型,針對指標(biāo)的異常類型選擇合適的檢測算法。然后利用根因定位系統(tǒng)發(fā)掘引發(fā)異常的原因,根據(jù)不同的數(shù)據(jù)類型選擇相應(yīng)的預(yù)測算法,構(gòu)建根因定位數(shù)據(jù)集,最后利用四種根因定位算法進(jìn)行根因定位。

目前異常檢測系統(tǒng)處于試運行初期,僅針對核心業(yè)務(wù)指標(biāo)做監(jiān)控,對平穩(wěn)型時序和強周期型時序的異常檢測能力較好。隨機挑選了部分指標(biāo)的異常檢測案例,對照人工核驗結(jié)果,精確率為67%,召回率為83%,F(xiàn)1-score為74%,為了滿足核心指標(biāo)減小漏報的需求,調(diào)低投票閾值以提高召回率。后期針對接入的非核心指標(biāo),可以適當(dāng)調(diào)高閾值提高精確率。

在節(jié)假日出行期間,大部分指標(biāo)迎來一定程度的連續(xù)性上漲,這部分日期很容易被算法識別成異常,但絕大部分異常在業(yè)務(wù)上屬于正常的數(shù)據(jù)波動。目前的做法是對結(jié)果做后處理,將節(jié)假日的異常設(shè)為正常,這樣雖然能避免誤報,但會漏掉少數(shù)真實的異常。一種可以嘗試的做法是,對去年同期的數(shù)據(jù)計算波動情況,根據(jù)閾值來判定異常。不過由于火車票業(yè)務(wù)發(fā)展迅速以及疫情原因,往年同期的數(shù)據(jù)參考意義不大,并且不同業(yè)務(wù)線指標(biāo)的閾值設(shè)置和調(diào)整也是個問題。

最近幾年由于疫情的影響,以天為單位的出行相關(guān)指標(biāo),周期規(guī)律難以捕捉,進(jìn)而影響STL分解的準(zhǔn)確率,導(dǎo)致檢出難度大,這也是目前不選擇通過對比實際值與預(yù)測值的偏離情況的方法做異常檢測的一個重要原因。

根因定位系統(tǒng)可以較準(zhǔn)確的定位出維度較少的根因。多維度交叉的根因由于數(shù)據(jù)量大,細(xì)分到細(xì)粒度指標(biāo)的KPI統(tǒng)計值就小,而值較小的時序容易引起較大的預(yù)測偏差,從而影響根因定位的準(zhǔn)確性。

4.2 展望

1)提高其他時間序列類型的檢出能力。比如時間序列漂移現(xiàn)象,平穩(wěn)+漂移,周期+漂移等類型;

2)新增不同類型異常的檢出能力。目前異常檢測算法對指標(biāo)陡升和陡降異常具有較好的檢出能力,而對整體抬升或整體下降異常,連續(xù)性異常的檢測能力不佳;

3)在業(yè)務(wù)需要的情況下,提高多維度交叉的根因定位準(zhǔn)確性。

責(zé)任編輯:張燕妮 來源: 攜程技術(shù)
相關(guān)推薦

2023-07-07 14:18:57

攜程實踐

2022-09-09 15:49:03

攜程火車票組件化管理優(yōu)化

2023-09-15 09:34:54

2023-06-28 14:01:13

攜程實踐

2023-06-28 10:10:31

攜程技術(shù)

2023-05-12 09:58:05

編譯優(yōu)化

2023-06-09 09:54:36

攜程工具

2024-01-30 08:55:24

2011-01-24 15:37:32

火車票

2023-08-04 09:35:18

2018-01-10 22:19:44

2012-01-05 13:14:42

火車票

2016-08-31 13:26:24

PythonPython3工具

2011-01-28 15:48:11

Chrome插件Page Monito火車票

2018-01-02 09:56:04

Python12306火車票

2018-12-29 16:24:58

Python12306火車票

2013-01-07 17:34:47

火車票搶票瀏覽器

2015-03-18 15:05:12

12306驗證碼

2022-04-27 13:36:18

12306鐵路12306

2012-11-21 15:56:50

淘寶12306
點贊
收藏

51CTO技術(shù)棧公眾號