不正検出のためのベンフォードの法則

Rで学ぶ不正検知

Bart Baesens

Professor Data Science at KU Leuven

ベンフォードの法則に従うデータセット

  • 事実や出来事の規模を表す数値データ
  • 数値間に相互関係がないデータ
  • 指数関数的に増加または乗法的変動から生じるデータセット
  • 複数データセットの混合
  • 一部のよく知られた無限整数列

1000件以上の数値で、複数の桁数にまたがるものが望ましい。

Rで学ぶ不正検知

  • 会計取引
  • クレジットカード取引
  • 顧客残高
  • 死亡率
  • 惑星の直径
  • 電気・電話料金
  • フィボナッチ数列
  • 収入
  • 保険請求
  • 河川の長さと流量
  • ローンデータ
  • 新聞記事数
  • 物理定数と数学定数
  • 都市の人口
  • 2のべき乗
  • 発注書
  • 株価・住宅価格
  • ...
Rで学ぶ不正検知

不正検出のためのベンフォードの法則

  • 不正は通常、架空の数値の追加や実際のデータの改ざんによって行われます。
  • ベンフォードの法則は不正検出の有力なツールであり、米国では法的証拠としても認められています
  • 保険請求詐欺、小切手詐欺、電力窃盗、法廷会計、支払い詐欺などに成功裏に適用されています。
  • 参考文献:Benford's Law: Applications for forensic accounting, auditing, and fraud detection Nigrini著(John Wiley & Sons, 2012)。
Rで学ぶ不正検知

注意事項

データがベンフォードの法則に従わない場合があることに注意してください。

  • 下限・上限がある場合、またはデータが狭い範囲に集中している場合(例:時給、身長)。
  • 数値が識別番号やラベルとして使用されている場合(例:社会保障番号、便名、車のナンバー、電話番号)。
  • 乗法的変動ではなく加法的変動がある場合(例:ある日の心拍数)。
Rで学ぶ不正検知

上位2桁のベンフォードの法則

データセットが上位2桁に関するベンフォードの法則を満たす場合、上位2桁 $D_1D_2$ が $d_1d_2$ に等しい確率は概ね次のとおりです:

$$P(D_1D_2=d_1d_2)=\log\left(1+\frac{1}{d_1d_2}\right) \qquad d_1d_2\in [10, 11, ..., 98, 99]$$

benlaw <- function(d) log10(1 + 1 / d)
benlaw(12)
0.03476211

このテストは最初の1桁のテストよりも信頼性が高く、不正検出で最も頻繁に使用されます。

Rで学ぶ不正検知

国勢調査データ

bfd.cen <- benford(census.2009$pop.2009, number.of.digits = 2) 
plot(bfd.cen) 

国勢調査データのベンフォード分析(2桁)

Rで学ぶ不正検知

従業員の経費精算

  • 内部監査部門は、従業員の経費精算における不正を確認する必要があります。
  • 従業員はレシートのスキャン画像を送付することで、出張費や会食費を精算できます。
  • 過去5年間に従業員Sebastiaanへ精算された金額を分析します。
  • データセット expenses には1000件の精算データが含まれます。
  • パッケージ benford.analysis の関数を引き続き使用します。
Rで学ぶ不正検知

最初の1桁によるベンフォードの法則の分析

bfd1.exp <- benford(expenses, number.of.digits = 1) 
plot(bfd1.exp)

経費データの最初の1桁によるベンフォード分析

Rで学ぶ不正検知

上位2桁によるベンフォードの法則の分析

bfd2.exp <- benford(expenses, number.of.digits = 2) 
plot(bfd2.exp)

経費データの上位2桁によるベンフォード分析

Rで学ぶ不正検知

練習しましょう!

Rで学ぶ不正検知

Preparing Video For Download...