摘要: 數據造假的甄別在數據分析領域是一個熱門的話題,也是對數據分析師的一項挑戰。分析數據造假的方法有很多種。我們在前面的系列文章中曾經介紹過兩種檢驗作弊流量的方法。一種是根據歷史經驗及分佈情況的多維度交叉檢驗,另一種是使用隨機森林模型根據已知作弊流量的特徵對新流量進行分類及預測。


使用本福德定律甄別數據造假(Benford's Law)

本篇文章介紹一種神奇的數據檢驗方法,本福德定律(Benford's Law)。本福德定律是一種用途廣泛的數據檢驗方法,在安然公司破產和伊朗大選選票甄別中都曾被使用到。本福德定律通過自然生成的數字中1到9的使用頻率對數據進行檢驗。如果你的數據具備一定規模,沒有人工設定的最大值和最小值,並且數據本身受人為因素影響較小。那麼就可以使用本福德定律對數據進行檢驗,甄別數據是否經過人為修飾。

本福德定律及公式

本福德定律中自然生成的數字首位為1的概率為30.10%,2的概率為17.61%,依次遞減,首位為9的概率僅為4.58%。依據這一期望概率值我們可以對數據進行檢驗。以下是本福德定律的計算公式。通過這一公式可以計算出1-9中每個數字出現數據首位的概率。

本舉例來說,對於數字9下面的公式可以計算出一組自然生成的數字中9出現在數字首位的概率是多少。

我們使用本福德定律公式逐一計算了數字1-9出現在首位的概率。以下是每個數字出現的概率值。後面會根據這一期望的概率值對數據是否進行過人工修改進行甄別。

通過圖表可以更較直觀的看到本福德定律中每個數字出現的頻率以及不同數字間的差異。與我們想像的不同,數字出現的頻率並不是均勻分佈的。1出現的次數為30.10%而9出現的次數僅為4.58%。

下面我們將使用本福德定律對工作中常見的數據進行檢驗,甄別數據是否經過人為修飾。

廣告展現量數據檢驗

首先檢驗一組廣告曝光數據。下面是某廣告一段時間的曝光量數據。我們將每條展現量數據的第一個數字提取出來,通過本福德定律對這組數據進行檢驗。

第一步計算展現量數據中數字1-9出現的次數。第二步計算所有展現量數據的條目,展現量數據為474條。第三步計算數字1-9出現次數的頻率。第四步使用本福德定律計算出數字1-9出現頻率的期望值。

將曝光量數據和本福德定律的期望值繪製到圖表中進行對比,可以發現曝光量數據首位數字出現的頻率與本福德定律整體上基本一致。在數字2,3和5上略有差異。這個柱狀圖能說明什麼?表明數據符合本福德定律?三個數據點上的差異又說明什麼?數據中存在人為修飾嗎?

單從實際概覽值和圖表上我們無法辨別數據是否經過人為修飾。要準確的判斷數據是否為自然生成還需要計算兩個指標,分別為KS值和截止值。然後對兩個指標進行對比。如果KS值低於截止值,那麼可以判定數據為自然生成,沒有經過人工修飾。否則就可能有造假的風險。

KS值是數據的實際概率值與期望概率值差異的最大值,截止值是1.36除以數據條目數的平方根。我們對前面的數據表計算KS值和截止值。第五步,計算實際概率值與期望概率值的差異。這裡我們取差異的絕對值以避免負數的產生。第六步,計算KS值,經過計算KS值為0.043,也就是數字5出現頻率的差異。第七步,計算截止值,這裡的曝光數據共有474條,因此截止值為0.053。第八步,對比KS值與截止值,KS值小於截止值。因此數據屬於自然生成。沒有經過人為修飾。

廣告點擊量數據檢驗

按照前面的方法,我們對同一組廣告的點擊量數據進行檢驗。在下面的柱狀圖中,藍色為本福德定律的期望概率值,綠色為廣告點擊量的首位數字分佈情況。可以發現在數字1,3和4上實際值與期望值之間存在較大的差異。尤其是在數字3上。但僅根據這幾個差異點我們還不能判斷數據是否經過人工修飾。

進一步計算KS值和截止值並進行對比。KS值為數據點間的最大差異值,這裡是0.115。截止值經過計算為0.054。KS值明顯大於截止值。因此可以判斷點擊量數據是經過人工修飾的可能,需要進一步進行檢驗。

貸款金額數據檢驗

除了廣告數據以外,本福德定律還可以在很多場景下對數據進行檢驗。如貸款金額的數據。下面是一組貸款金額首位數字分佈與本福德定律逾期分佈的對比圖。兩者的趨勢一致,差異也較小。

通過計算KS值和截止值並進行對比,KS值0.019小於截止值0.022。說明貸款金額數據為自然生成,不存在人工修飾。

Excel隨機數檢驗

最後,我們人工生成一組”假數據”,看看本福德定律的檢驗結果。這裡使用Excel的隨機數函數生成100個隨機數。並與本福德定律的期望分佈進行對比。很明顯,Excel生成的隨機數在首位數字上為均勻分佈。與本福德定律的期望分佈相差甚遠。

計算並對比KS值和截止值也再次證明了均勻分佈的數據為人工生成。KS值0.201大於截止值0.116。

本福德定律加強版

本福德定律除了計算首位數字出現的概率,還有個加強版,可以計算第二位數字甚至第三位數字出現的概率,並通過這些這些期望值對數據進行更加深入和嚴格的檢驗。下面是計算第二位數字出現概率的公式。d1表示第一位出現的數字,d2表示第二位出現的數字。

如果我們要計算第二位數字為6的期望值,將數字6代入公式中,如下面截圖所示。分別計算1-9每個數字與第二位數字6進行組合時的概率,再進行加總就是數字6作為第二位出現數字的期望概率值。

在Excel中實際計算下,藍色部分為首位數字和出現的概率。後面依次是第二位數字從0-9依次與首位數字組合出現的概率值。我們按列進行匯總就是每個第二位數字出現的概率。

再進一步還可以計算第三位數字出現的概率。方法與計算第二位數字出現的方法類似,只是更為負責一些。下面是計算公式。將0-9的10個數字分別與前兩位的各種數字組合在一起計算,然後把每種情況單一數字出現的概率進行匯總,就是這個數字出現在第三位的期望值了。

以第三位數字是0為例,藍色列表示第一位數字的值,由於第一位不能為0,所以數字範圍為1-9。第一行黑色背景為第二位數字的值,從0-9。計算各種組合情況下第三位數字為0的概率,並進行匯總。最終0.1018就是0作為第三位數字出現的概率值。

我們按照同樣的方法計算了0-9在第三位出現的概率,並與前面計算的首位和第二位數字出現概率進行匯總生成了下面的數據檢驗表。通過這個概率分佈表可以更加深入的對數據的真實性進行檢驗。

轉貼自: 數據分析網


留下你的回應

以訪客張貼回應

0

在此對話中的人們

每月文章