數(shù)據(jù)分析-異常數(shù)據(jù)識別_第1頁
數(shù)據(jù)分析-異常數(shù)據(jù)識別_第2頁
數(shù)據(jù)分析-異常數(shù)據(jù)識別_第3頁
數(shù)據(jù)分析-異常數(shù)據(jù)識別_第4頁
數(shù)據(jù)分析-異常數(shù)據(jù)識別_第5頁
已閱讀5頁,還剩4頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)分析一一異常數(shù)據(jù)識別/>

異常數(shù)據(jù)識別在數(shù)據(jù)分析和數(shù)據(jù)挖掘中,是經(jīng)常會遇到的問題;本文會介紹不

同場景下,異常數(shù)據(jù)識別的方法有哪些,以及他們之間的區(qū)別。

一、使用場景

當(dāng)前異常數(shù)據(jù)識別的使用場景主要有以下2方面:

?數(shù)據(jù)分析和數(shù)據(jù)挖掘在正式分析前的數(shù)據(jù)處理,識別異常數(shù)據(jù)后,刪除

或者修正異常數(shù)據(jù),避免異常數(shù)據(jù)影響分析結(jié)論;

?風(fēng)控業(yè)務(wù),通過數(shù)據(jù)識別異常用戶、異常訪問、異常訂單、異常支付

等,避免黑產(chǎn)團隊入侵。

二、單變量數(shù)據(jù)異常識別

1.簡單統(tǒng)計量分析

對變量做描述性統(tǒng)計,然后再基于業(yè)務(wù)考慮哪些數(shù)據(jù)是不合理的。

常用的統(tǒng)計量是最大值和最小值,判斷這個變量是否超過合理的范圍;例如:

用戶的年齡為150歲,這就是異常的。

2.三倍標(biāo)準差

定義:如果單變量數(shù)據(jù)服從正態(tài)分布,異常值被定義為與平均值偏差超過3倍

標(biāo)準差的值。

原因:是因為在正態(tài)分布的假設(shè)下,偏離均值3倍標(biāo)準差出現(xiàn)的概率小于

0.003,是一個小概率事件。

在實際分析中,我們也不一定要拘泥于3倍標(biāo)準差,可以根據(jù)實際嚴格程度定

義,如偏離均值的4倍標(biāo)準差。

3.BOX-COX轉(zhuǎn)化+3倍標(biāo)準差

如果原始數(shù)據(jù)的分布是有偏的,不滿足正態(tài)分布時,可通過B0X-C0X轉(zhuǎn)化,在

一定程度上修正分布的偏態(tài);轉(zhuǎn)換無需先驗信息,但需要搜尋最優(yōu)的參數(shù)人。

Box-Cox變換的一般形式為:

y(入)=<

、bay,六一當(dāng)晚部水魚

?式中y(lambda)為經(jīng)Box-Cox變換后得到的新變量,y為原始連續(xù)因變

量,lambda為變換參數(shù)。

?以上變換要求原始變量y取值為正,若取值為負時,可先對所有原始數(shù)

據(jù)同加一個常數(shù)a,使其(y+a)為正值,然后再進行以上的變換。

?常見的lambda取值為0,0.5,-1;在lambda=0時該變換為對數(shù)變

換,T時為倒數(shù)變換,而0.5時為平方根變換。

Box-Cox的python實現(xiàn)如下,可直接通過函數(shù)boxcox找到最優(yōu)的lambda和轉(zhuǎn)

化后的值:

box?cox轉(zhuǎn)換例子

In(21):x=np.random?chisquare(2,10000)

y_box,lambda-=boxcox(x?0.0000001)

In(28]:pit?figure(figsizea(8,5),dpi-80)

pit?subplot(1,2,1)

sns.distplot(x,bins=20)

pit.title("before",fontsize■18)

pit.subplot(1r2,2)

sns.distplot(y_box.bins=20)

MH

pit.title(aftertfontsize■18)

plt.show()

beforeafter

4.箱線圖

箱形圖(Boxplot),又稱為盒須圖、盒式圖、盒狀圖或箱線圖,是一種用作

顯示一組數(shù)據(jù)分散情況的統(tǒng)計圖。

它能顯示出一組數(shù)據(jù)的最大值、最小值、中位數(shù)及上下四分位數(shù);

箱線圖提供了一種數(shù)據(jù)識別的標(biāo)準:異常值通常被定義為小于下邊緣或者大于

上邊緣的數(shù)據(jù)為異常值。

如下圖所示:

?上四分位數(shù):1/4的樣本值取值比他大

?下四分位數(shù):1/4的樣本值取值比他小

?上邊緣=上四分位數(shù)+1.5*(上四分位數(shù)一下四分位數(shù))

?下邊緣=下四分位數(shù)T.5*(上四分位數(shù)-下四分位數(shù))

箱線圖識別異常數(shù)據(jù)的優(yōu)勢:

?箱線圖根據(jù)數(shù)據(jù)的真實分布繪制,他對數(shù)據(jù)不做任何限制性的要求,比

如要服從正態(tài)分布等;

?箱線圖異常數(shù)據(jù)識別依賴于上四分數(shù)和下四分位數(shù),因此異常值極其偏

差不會影響異常值識別的上下邊緣,這一點是優(yōu)于3倍標(biāo)準差方法的。

三、時間序列數(shù)據(jù)異常識別

日常工作中還有一種場景,是需要對時間序列數(shù)據(jù)進行監(jiān)控,如:訂單量、廣

告訪問量、廣告點擊量;我們需要從時間維度識別出是否異常刷單、刷廣告點

擊的問題;像廣告投放場景下,如果發(fā)現(xiàn)渠道刷量,會及時停止廣告投放,減

少損失。

對于時間序列數(shù)據(jù)異常識別,根據(jù)數(shù)據(jù)不同的特點,識別方法不同。

1.設(shè)置恒定閾值

如果時間序列呈現(xiàn)平穩(wěn)分布狀態(tài),即時間序列數(shù)據(jù)圍繞中心值小范圍內(nèi)波動;

我們可以定義上下界的恒定閾值,如果超過上下閾值則定義為異常。

2.設(shè)定動態(tài)閾值-移動平均法

所謂動態(tài)閾值是指,當(dāng)前時間的異常閾值是由過去n段時間的時序數(shù)據(jù)計算決

定的;通常對于無周期,比較平穩(wěn)的時間序列,設(shè)定動態(tài)閾值的方法是移動平

均法。

所謂移動平均法:就是用過去n個時間點的時序數(shù)據(jù)的平均值作為下一個時間

點的時序數(shù)據(jù)的預(yù)測。

Ft=(4-i+At2+4.3+…+4

式中,見-對下一期的預(yù)測值;

n--移動平均的時期個數(shù);

4?_i-前期實際值;

、石須9

At2,幺.3和分別表示前兩期、前三期直至前n期的實際值。

異常數(shù)據(jù)識別即是:確定固定移動窗口n,以過去n個窗口的指標(biāo)平均值作為

下一個窗口的預(yù)測值;以過去n個窗口的指標(biāo)的平均值加減3倍方差作為監(jiān)控

的上下界。

使用范圍:數(shù)據(jù)無周期性,數(shù)據(jù)比較平穩(wěn)。

3.STL數(shù)據(jù)拆解法

如果時間序列數(shù)據(jù)是周期性數(shù)據(jù),可使用STL算法將時序數(shù)據(jù)拆解成趨勢項、

周期項和余項,即每個時刻的時序數(shù)據(jù)等于當(dāng)前時序趨勢項、周期項和余項的

和(或者乘)。

Yv=Tv+Sv+Rvv=

?趨勢項(T_v):涵蓋了這個時序數(shù)據(jù)的趨勢變化;

?周期項(S_v):涵蓋了時序數(shù)據(jù)的周期變化;

?余項(R_J:表示時序數(shù)據(jù)除去趨勢項和周期項后的日常波動變化。

一般使用STL需要確定2個點:

?確定數(shù)據(jù)周期,外賣業(yè)務(wù)的一個常規(guī)周期為7天,在周一至周五又可以

將數(shù)據(jù)周期縮短為1天。

?拆分規(guī)則,是選擇加法方式還是乘法方式。

加法方式:原始數(shù)據(jù)=平均季節(jié)數(shù)據(jù)+趨勢數(shù)據(jù)+余項這種方式,隨著時間

的推移季節(jié)數(shù)據(jù)不會有太大的變化,在以七天為一大周期的業(yè)務(wù)數(shù)據(jù)更適合這

樣的拆分方式。

乘法方式:原始數(shù)據(jù)=平均季節(jié)數(shù)據(jù)*趨勢數(shù)據(jù)*余項。

這種方式,直觀感受是隨著時間的推移季節(jié)數(shù)據(jù)波動會非常明顯。

至于如何要判斷某事的時序數(shù)據(jù)是否異常,是根據(jù)STL分解后的余項來判斷;

一般情況下,余項部分的時序數(shù)據(jù)是平穩(wěn)分布狀態(tài),我們可對余項設(shè)置恒定閾

值或者動態(tài)閾值,如果某個時間節(jié)點的分解余項超過設(shè)定閾值,則是異常數(shù)

據(jù)。

python可以用seasonal_decompose可以將時間序列數(shù)據(jù)拆解成三部分,具體

函數(shù)代碼如下:

importstatsmodels.apiassm

fromstatsmodels.tsa.seasonalimportseasonal_decompose

#MultiplicativeDecomposition

result_mul=seasonal_decompose(datal,model='

multiplicative,,extrapolate_trend=,freq,)

Actual_Values=result_mul.seasonal*result_mul.trend*

result_mul.resid

#AdditiveDecomposition

result_add=seasonal_decompose(datal,model='additive’,

extrapolate_trend=Jfreq,)

Actual_Values=result_mul.seasonal+result_mul.trend+

result_mul.resid

四、多變量數(shù)據(jù)異常識別

所謂多變量數(shù)據(jù)異常識別是指:不只從一個特征去判讀數(shù)據(jù)異常,而是在多個

特征下來判斷其是否異常。多變量異常數(shù)據(jù)識別的方法很多,比如聚類模型、

孤立森林模型、one-classsvm模型等。下面主要介紹簡單高效,更容易使用

的孤立森林模型。

1.孤立森林

孤立森林iForest(IsolationForest)是一個可擴散到多變

量的快速異常檢測方法;iForest適用于連續(xù)數(shù)據(jù)的異常檢測,

將異常定義為“容易被孤立的離群點一一可以理解為分布稀疏且

離密度高的群體較遠的點;用統(tǒng)計學(xué)來解釋,在數(shù)據(jù)空間里面,

分布稀疏的區(qū)域表示數(shù)據(jù)發(fā)生在此區(qū)域的概率很低,因而可以認

為落在這些區(qū)域里的數(shù)據(jù)是異常的。

iForest屬于Non-parametric和unsupervised的方法,即不用

定義數(shù)學(xué)模型也不需要有標(biāo)記的訓(xùn)練。

算法邏輯介紹:

假設(shè)現(xiàn)在有一組一維數(shù)據(jù)(如下圖所示),我們要對這組數(shù)據(jù)進行隨機切分,

希望可以把點A和點B單獨切分出來。

具體的,我們先在最大值和最小值之間隨機選擇一個值X,然后按照<x

和>=x可以把數(shù)據(jù)分成左右兩組;然后,在這兩組數(shù)據(jù)中分別重復(fù)這個步驟,

直到數(shù)據(jù)不可再分。

顯然,點B跟其他數(shù)據(jù)比較疏離,可能用很少的次數(shù)就可以把它切分出來;點

A跟其他數(shù)據(jù)點聚在一起,可能需要更多的次數(shù)才能把它切分出來。

須先即永恒

我們把數(shù)據(jù)從一維擴展到兩維,同樣的,我們沿著兩個坐標(biāo)軸進行隨機切分,

嘗試把下圖中的點A,和點B'分別切分出來;我們先隨機選擇一個特征維度,

在這個特征的最大值和最小值之間隨機選擇一個值,按照跟特征值的大小關(guān)系

將數(shù)據(jù)進行左右切分。

然后,在左右兩組數(shù)據(jù)中,我們重復(fù)上述步驟,再隨機的按某個特征維度的取

值把數(shù)據(jù)進行細分,直到無法細分,即:只剩下一個數(shù)據(jù)點,或者剩下的數(shù)據(jù)

全部相同。

跟先前的例子類似,直觀上,點B'跟其他數(shù)據(jù)點比較疏離,可能只需要很少

的幾次操作就可以將它細分出來;點A'需要的切分次數(shù)可能會更多一些。

上面其實就是IsolationForest(IF)的核心概念。而具體的IF采用二叉樹

去對數(shù)據(jù)進行切分,數(shù)據(jù)點在二叉樹中所處的深度反應(yīng)了該條數(shù)據(jù)的“疏離”

程度。

整個算法大致可以分為兩步:

?訓(xùn)練:抽取多個樣本,構(gòu)建多棵二叉樹(IsolationTree,即

iTree);

?預(yù)測:綜合多棵二叉樹的結(jié)果,計算每個數(shù)據(jù)點的異常分值。

訓(xùn)練:構(gòu)建一棵iTree時,先從全量數(shù)據(jù)中抽取一批樣本,然后隨機選擇一個

特征作為起始節(jié)點,并在該特征的最大值和最小值之間隨機選擇一個值;將樣

本中小于該取值的數(shù)據(jù)劃到左分支,大于等于該取值的劃到右分支。

然后,在左右兩個分支數(shù)據(jù)中,重復(fù)上述步驟,直到滿足如下條件:

?數(shù)據(jù)不可再分,即:只包含一條數(shù)據(jù),或者全部數(shù)據(jù)相同。

?二叉樹達到限定的最大深度。

預(yù)測:根據(jù)估算它在每棵iTree中的路徑長度(也可以叫深度),計算數(shù)據(jù)x

的異常分值,通常這個異常分值越小越異常。

IsolationForest算法主要有兩個參數(shù):一個是二叉樹的個數(shù);另一個是訓(xùn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論