<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          揭開KPI異常檢測頂級AI模型面紗(1)

          共 4966字,需瀏覽 10分鐘

           ·

          2020-12-08 13:39


          原子彈從入門到精通

          GDE全球開發(fā)者大賽-KPI異常檢測告一段落,來自深圳福田蓮花街道的“原子彈從入門到精通“有幸取得了總榜TOP1的成績,下面給出他的解決方案。



          01


          背景介紹



          核心網(wǎng)在移動運營商網(wǎng)絡(luò)中占據(jù)舉足輕重的地位,其異常往往會導致呼叫失敗、網(wǎng)絡(luò)延遲等現(xiàn)網(wǎng)故障,對全網(wǎng)的服務(wù)質(zhì)量帶來重大的負面影響,多則影響十數(shù)萬用戶,并引發(fā)大面積投訴[1]。因此需要快速及時地發(fā)現(xiàn)核心網(wǎng)的異常風險,在影響擴大之前及時消除故障。

          KPI是一類能夠反映網(wǎng)絡(luò)性能與設(shè)備運行狀態(tài)的指標,本賽題提供某運營商核心網(wǎng)的KPI真實數(shù)據(jù),數(shù)據(jù)形式為KPI時間序列,采樣間隔為1小時,選手需要使用[2019-08-01,2019-09-23)的數(shù)據(jù)進行建模,使用訓練好的模型對未來7天的數(shù)據(jù)進行預測,識別未來一周KPI序列中的異常點。

          評估指標:

          本賽題采用F1作為評估指標,具體計算公式如下:

          P = TP/(TP+FP)

          R = TP/(TP+FN)

          F1 = 2*P*R/(P+R)


          02


          數(shù)據(jù)探索



          數(shù)據(jù)中共有20個不同的KPI,不同的KPI物理意義不同,代表了不同的核心網(wǎng)指標,由于賽題需要對未來7天的數(shù)據(jù)進行預測,因此對于建模樣本也進行周級別的分布查看。從Fig1中可以明顯看到訓練集中前三周的異常率顯著低于后續(xù)幾周。進一步分析可以發(fā)現(xiàn)雖然賽題提供了[2019-08-01,2019-09-23)的全部數(shù)據(jù),但2019-08-15之前所有20個KPI均毫無異常,第一個異常點是從2019-08-15 02:00:00開始出現(xiàn)的(Fig2),因此推測8.15前的數(shù)據(jù)分布不同于后續(xù)樣本,或8.15之前存在標注異常的問題。實驗中剔除8.15之前的樣本建模效果也優(yōu)于保留該時間段樣本,進一步驗證了該推測。

          Fig1. KPI周級別異常統(tǒng)計
          Fig2. 異常與否的最早數(shù)據(jù)時間

          時間序列圖對于快速理解數(shù)據(jù)及業(yè)務(wù)有著重要的作用,對20個時間序列進行觀察后,我將異常粗分為4類,如Fig3所示。
          Fig3. 異常分類(時間序列中紅點為異常,藍點為正常)

          1.邊界型異常

          如Fig3中a部分(紅框)所示,邊界型異常中異常樣本的取值范圍與正常值取值完全不同,即存在明確的決策邊界可以完全分離異常點。


          2.趨勢破壞型異常

          如Fig3中b部分(綠框)所示,正常樣本點的走勢往往沿著一個趨勢,而趨勢破壞型的異常點會偏離這個趨勢,但取值范圍可能仍然在正常樣本的取值范圍內(nèi),這類異常與相鄰點的差異較大,與相同時刻正常點的取值差異也較大。


          3.0值型異常

          如Fig3中c部分(橙框)所示,此類異常取值直接為0,根據(jù)我對業(yè)務(wù)的理解,正常的KPI不應(yīng)出現(xiàn)0值,根據(jù)分析,20個KPI中有19個正常取值均不應(yīng)為0,僅1個KPI正常取值為0,非0則為異常。


          4.其他型異常

          如Fig3中d部分(紫框)所示,此類異常往往既沒有破壞趨勢,取值也在正常的范圍內(nèi),但可能會偏離相同時刻的正常取值。



          03


          解題思路



          賽題中共有20個不同的KPI,KPI物理意義不同且異常的種類也多種多樣,若將所有KPI作為一個整體建立一個統(tǒng)一的二分類模型,模型效果差強人意,難以進入前排,但若對每個KPI單獨建模,則需要建立并維護調(diào)優(yōu)至少20個不同的模型,維護成本過高,因此我的思路是將KPI或異常進行分類建模。


          3.1 邊界發(fā)現(xiàn)

          決策樹會根據(jù)目標的分布將樣本劃分在不同的特征空間范圍內(nèi)(如Fig4 所示),非常適合用于邊界的發(fā)現(xiàn)與確定。因此針對邊界型異常,即好壞樣本取值完全不同的異常,我采用決策樹進行邊界的自動發(fā)現(xiàn)與確定,具體如下:

          遍歷20個KPI,若僅使用時間序列取值建立的單變量淺層簡單決策樹在訓練集中的F1score=1,便認為該KPI為邊界型異常KPI,并使用該決策樹的預測結(jié)果作為決策邊界,對相同KPI的未來樣本進行預測。
          Fig4. 基于決策樹的邊界發(fā)現(xiàn)
          對KPI進行遍歷后可知,存在7個KPI所有異常均為邊界型異常,即7個KPI在訓練集中的所有異常取值范圍均不同于正常樣本。最終結(jié)果也表明,該方案不僅在訓練集中能100%識別邊界型KPI的異常,在測試集中也能100%識別相關(guān)異常。

          3.2 非邊界型異常探索
          非邊界型異常往往KPI走勢存在一定的周期,若將時間周期剝離出來進行分析,則可以從二維的角度對時間序列進行觀察。
          Fig5. 時間序列的二維展示

          以kpi_id= 9415a… 為例,若將日期信息剝離,x軸僅為一天中的第幾小時,y軸仍然為時間序列取值,則會得到如Fig5的展示。此時整個時間序列被呈現(xiàn)在一個二維空間中,且異常值(紅點)多與正常值(藍點)偏離較遠,一個樸素的思路便是采用無監(jiān)督方法識別圖中的異常。事實上,在實際的生產(chǎn)環(huán)境中,多達5000+原始KPI,300+衍生KPI,難以獲得有異常標注的時間序列,因此在生產(chǎn)環(huán)境中往往使用統(tǒng)計方法或無監(jiān)督算法進行異常檢測[1,2]。但在當前有標簽的賽題下,經(jīng)多次嘗試,無監(jiān)督算法如iForest,DBSCAN以及時間序列分解方法如Prophet均無法勝過有監(jiān)督機器學習算法。因此,對于非邊界型異常,最終決定使用有監(jiān)督機器學習算法進行建模。

          3.3 KPI類型劃分
          在3.1中基于簡單決策樹發(fā)現(xiàn)了7個邊界型異常KPI,但剩余的13個KPI物理意義各不相同,需要進行分組建模。
          分組最基本的思想便是相似的KPI應(yīng)該分在相同的組中。Pearson相關(guān)系數(shù)是我們最熟悉的相關(guān)性指標,其物理意義是表示兩個變量同向或反向變動的程度,非常適合用于時間序列的相似性分析。通過對剩余13個KPI的相似性分析我們可以發(fā)現(xiàn),以下兩組id間的兩兩相關(guān)系數(shù)在0.9或以上。
          cluster1=[9415a…, 600a5…, ed63c…]
          cluster2=[b3842…, bb6bb…, 3fe4d…]
          Fig6. cluster1時間序列對比示例

          以cluster1為例(Fig6.),可以看到相似性分組中不同KPI的時間序列不僅走勢接近,而且往往當分組內(nèi)一個KPI產(chǎn)生異常時,其他KPI也會同步異常,表現(xiàn)出非常高的聯(lián)動性。因此對于相似性分組的模型建立非常關(guān)鍵,往往異常的召回和誤報均為3倍,也就是對一個則3倍上分,錯一個則3倍掉分,賽程中段快速上分的核心點便是這部分模型的建立。
          ??? 對于剩余的7個KPI,最終我依據(jù)是否包含周期,將其劃分為3小類進行分組建模:
          半周期型:cluster3_1 =?[4f493…]
          無周期型:cluster3_2 =?[29374…,8f522…]
          強周期型:cluster3_3 =?[681cb…, 0a9f5…,355ed…,3e1f1…]
          其中,半周期型KPI僅在部分時間段表現(xiàn)出周期趨勢,其他時間段取值幾乎完全相同。無周期型KPI取值與時間無明顯關(guān)聯(lián),強周期型KPI取值隨時間不同產(chǎn)生周期性波動。


          04


          特征構(gòu)造



          根據(jù)前文分析以及我對時間序列問題的理解,本賽題中構(gòu)造了以下5種類型的變量。
          1.基礎(chǔ)變量一天中的第幾小時,星期幾,kpi_id的各種編碼如label encoder,target encoder等等;
          2.差分變量一階差分,二階差分,三階差分;
          3.平移變量上n個時間點該kpi_id的value或差分的取值及其簡單衍生,如24小時前的value取值等;
          4.滑窗變量過去n段時間該kpi_id的各類統(tǒng)計變量及其簡單衍生,如過去24小時value的均值等;
          5.強相關(guān)窗口統(tǒng)計如過去7天內(nèi)該時間點上下兩小時內(nèi)介于該取值0.95-1.05范圍內(nèi)樣本的總個數(shù)等等;


          05


          模型方案



          鑒于本賽題難以建立一個能夠應(yīng)用于全部KPI的統(tǒng)一模型,而解題過程中有較多模型需要建立與調(diào)優(yōu),為提高效率,我在早期進行不同模型的若干次嘗試后便決定使用訓練速度較快且效果較好的LightGBM為各個分組建立二分類模型。

          在實際的建模中我發(fā)現(xiàn)僅用[2019-08-15,2019-09-08]的數(shù)據(jù)建模效果優(yōu)于全部數(shù)據(jù)或使用更接近測試集樣本的后幾周數(shù)據(jù),結(jié)合Fig1中異常率在后幾周大幅持續(xù)降低的現(xiàn)象,我判斷[2019-09-09,2019-09-22]的異常分布可能不同或存在部分標注問題。在進一步探索后發(fā)現(xiàn)嫁接學習的引入能夠充分的使用到全部異常數(shù)據(jù)并取得更好的效果。

          嫁接學習是遷移學習的一種,用來描述將一個樹模型a的輸出作為另一個樹模型b的輸入的方法(a,b往往數(shù)據(jù)分布不同或完全屬于不同產(chǎn)品,與同分布數(shù)據(jù)的常規(guī)融合有著本質(zhì)區(qū)別),此種方法與樹木繁殖中的嫁接類似,故而得名[3]。在IJCAI2018廣告算法大賽中,前六天和最后一天數(shù)據(jù)分布不同,于是大部分人用同分布的第七天上半天的數(shù)據(jù)預測下半天,而植物大佬用前六天的數(shù)據(jù)訓練了一個模型,預測第七天得到的分數(shù)作為第七天模型的特征,再用第七天上半天的數(shù)據(jù)預測下半天,最后輕松得到solo冠軍,事后植物說這是他玩的最容易的比賽,畢竟人家用半天數(shù)據(jù),植物用的是六天半的數(shù)據(jù)[3,4,5]。其他數(shù)據(jù)分布不同的場景下TOP方案中亦有嫁接學習的身影,如螞蟻金服ATEC支付風險識別TOP1方案[6],CCF BDCI 2018 個性化套餐匹配TOP1方案[7][3] 。

          在若干次嘗試后,我最終確定了以存在異常日期樣本為1層模型樣本, [2019-08-15,2019-09-08]樣本結(jié)合1層模型分數(shù)作為2層模型輸入的方案,模型框架如Fig7.所示,該框架的引入在本賽題中提分明顯,是上分的關(guān)鍵點之一。

          Fig7. 模型框架

          結(jié)合前文的內(nèi)容,最終我的建模方案如Fig8所示,先進行KPI邊界的自動發(fā)現(xiàn),解決7個邊界型KPI的異常,對于剩余的13個KPI,先根據(jù)相似性將其拆解為相似群組(6個KPI)和不相似群組(7個KPI),相似群組由組內(nèi)相關(guān)系數(shù)較高的cluster1和cluster2構(gòu)成,不相似群組按照是否包含周期劃分為半周期群組cluster3_1,無周期群組cluster3_2和強周期群組cluster3_3,再對不同的群組分別建模,最后匯總生成最終結(jié)果。最終該方案取得了線上最高分及答辯最高分的成績。
          Fig8. 建模方案


          06


          ?鳴謝?



          非常感謝希旭哥,苕蕓博士,素顏姐,小愛姐等人在比賽過程中的幫助與指導,希旭哥還是一如既往的熱情,總能在第一時間為大家答疑解惑。

          感謝廬山大佬賽后的精彩分享[2],讓人受益匪淺。以前我沒看過華為云開發(fā)者沙龍的分享,這次看完后覺得可針不戳,以后每期都不能錯過。
          ?????? 最后祝華為及NAIE蒸蒸日上,再創(chuàng)輝煌!


          Reference
          [1] 網(wǎng)絡(luò)AI-KPI異常檢測,利器大揭秘https://bbs.huaweicloud.com/videos/103579
          [2] DevRun開發(fā)者沙龍—火遍網(wǎng)絡(luò)的KPI異常檢測到底什么https://vhall.huawei.com/fe/watch/6658
          [3] 嫁接學習簡述https://zhuanlan.zhihu.com/p/98728768
          [4] 結(jié)構(gòu)化數(shù)據(jù)的遷移學習:嫁接學習https://zhuanlan.zhihu.com/p/51901122
          [5] IJCAI-2018 TOP1分享https://github.com/plantsgo/ijcai-2018
          [6] ATEC支付風險大賽Top1解決方案https://zhuanlan.zhihu.com/p/45826529
          [7] CCF BDCI 2018 個性化套餐匹配TOP1方案https://github.com/PPshrimpGo/BDCI2018-ChinauUicom-1st-solution
          推薦閱讀:
          畫圖神器pyecharts-水球圖
          畫圖神器pyecharts-旭日圖
          刷爆網(wǎng)絡(luò)的動態(tài)條形圖,3行Python代碼就能搞定
          Python中讀取圖片的6種方式
          2020年11月國內(nèi)大數(shù)據(jù)競賽信息-獎池5000萬
          Python字典詳解-超級完整版

          加群交流學習

          ↓內(nèi)推、交流加小編

          瀏覽 29
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  九哥超逼网 | 欧美a精品 | 羞羞影院午夜男女爽爽视频 | 中国一级毛片免费看 | 欧美日韩在线观看中文字幕 |