DataEye數據清洗實例(二)

2.利用基於歐幾里德距離的聚類方法來識別多維數據集中噪聲數據(異常值)

一般情況下,利用數據分佈特徵或業務理解來識別單維數據集中噪聲數據是快捷有效,但對於聚合程度高,彼此相關的多維數據而言,通過數據分佈特徵或業務理解來識別異常的方法便顯得無能爲力。面對這種窘迫的情況,聚類方法提供了識別多維數據集中噪聲數據的方法。

在很多情況下,把整個記錄空間聚類,能發現在字段級檢查未被發現的孤立點。聚類就是將數據集分組爲多個類或簇,在同一個簇中的數據對象(記錄)之間具有較高的相似度,而不同簇中的對象的差別就比較大。散落在外,不能歸併到任何一類中的數據稱爲“孤立點”或“奇異點”。對於孤立或是奇異的噪聲數據(異常值)進行剔除處理。如下圖:

1

 

(二)     缺失值清洗

理想情況下,數據集中的每條記錄都應該是完整的。然而,存在不完整的、含噪聲的數據是現有數據集的共同特點。缺失數據的出現可能有多種原因,人工輸入時認爲不重要而漏掉,或者被調查人不願公佈等。在數據集中,若某記錄的屬性值被標記爲空白或“-”等,則認爲該記錄存在缺失值,是不完整的數據。DataEye主要使用基於k-NN近鄰填充技術的算法來處理缺失數據。

k-NN分類,訓練樣本用n維數值屬性描述,每個樣本代表n維空間的一個點,這樣,所有的訓練樣本都存放在n維模式空間中。給定一個未知樣本,k-NN分類法搜索模式空間,找出最接近未知樣本的k個訓練樣本。這k個訓練樣本是未知樣本的k個“近鄰”。“臨近性”用歐幾里德距離定義,其中兩個點X = (x1,x2,…,xn) 和Y = (y1,y2,…,yn)的歐幾里得距離是

2

設z是需要測試的未知樣本,z = (x′,y′) ,所有的訓練樣本(x,y)∈D,未知樣本的最臨近樣本集設爲Dz,K-NN分類算法的描述如下:

k是最臨近樣本的個數,D是訓練樣本集。對數據做無量綱處理(標準化處理),消除單位對缺失值清洗的影響。

3

計算未知樣本與每個訓練樣本(x,y)之間的距離d(x′,x),得到離樣本z最臨近的k個訓練樣本集Dz。

當確定了測試樣本的k個“近鄰”後,就根據這k個近鄰相應的字段值的均值來替換該測試樣本的缺失值。

 

案例二:DataEye上報數據缺失值處理

在DataEye實際工作中,在數據採集上,主要採用SDK接入遊戲,通過SDK上報數據的方式,在複雜的數據生產環境中,由於SDK接入或數據上報接口調用等原因,缺失值往往是存在的。

下面是一組DataEye接入遊戲SDK上報的數據,很明顯的可以發現,序號2及序號4在字段1上存在缺失值“-”,在數據集大的情況下,往往我們會對含缺失值的數據記錄做丟棄處理,DataEye主要使用k-NN近鄰算法來填充這一缺失值。

4

首先對這個數據集各個字段值做非量綱化,消除字段間單位不統一不一致的影響,得到標準化的數據矩陣。

5

對含缺失值“-”的序號2數據點做K近鄰填充,取K值爲5,計算序號2與其他不包含缺失值的數據點的距離矩陣,選出歐氏距離最近的5個數據點。

6

用這5個近鄰的數據點對應的字段均值來填充序號2中的“-”值。得到完整序號2數據:

7

 

(三)     重複值清洗

在複雜工作環境中,由於數據多次上報,或是其他人爲因素,導致數據重複值的出現是普遍的,主要使用字段相似度來識別判斷重複值。

字段相似度定義:字段之間的相似度S是根據兩個字段的內容而計算出的一個表示兩字段相似程度的數值,O<S<1。S越小,則兩字段相似程度越高;若S=0,則表示兩字段爲完全重複字段。根據字段的類型不同,計算方法也不相同。

布爾型字段相似度計算方法:對於布爾型字段,如果兩字段相等,則相似度取0,如果不同,則相似度取1。

數值型字段相似度計算方法:對於數值型字段,可採用計算數字的相對差異。利用公式:

8

字符型字段相似度計算方法:對於字符型字段,比較簡單一種方法是,將進行匹配的兩個字符串中可以互相匹配的字符個數除以兩個字符串平均字符數。利用公式:

9

其中k是匹配的字符數。例如字符串s1=“dataeye”,字符串s2=“dataeyegrg”利用字符型字段相似度計算公式得到其相似度

10

設定閾值,當字段相似度大於閾值時,識別其爲重複字段,併發出提醒,再根據實際業務理解,對重複數據做剔除或其他數據清洗操作。

 

案例三:DataEye遊戲收入破解識別(重複值識別)

幾乎所有單機遊戲都面臨着被破解的隱患,對於遊戲廠商而言,對單機遊戲是否被破解的監測能力是十分薄弱的,DataEye主要通過計算數據記錄間的字段相似度,來識別重複值上報,進而根據業務理解判斷單機遊戲是否被破解,並進一步對重複值做清洗。

下面是一組DataEye接入遊戲SDK上報的數據,仔細觀察會發現,在2014/9/1 0:16:40至2014/9/1 0:16:42這段時間內發生了7筆100000付費金額。

11

計算這7條數據記錄的彼此的相似度:

12

13

 

發現S(Si ,Sj )很接近於1,即這7條記錄相似度很大,識別出數據集中存在重複值,進一步根據業務理解判斷遊戲是否被破解並做重複值清洗工作。

 

本文爲GRG遊戲研究組原創,如需轉載,請註明出處,謝謝合作!