벤포드 법칙을 이용한 숫자 분석

R로 배우는 사기 탐지

Bart Baesens

Professor Data Science at KU Leuven

소개

  • 신문의 임의 페이지를 펴서 모든 숫자의 첫 번째 자리(1,2,...,9)를 기록하십시오.
  • 이 숫자들의 기대 빈도는 무엇입니까?

신문

R로 배우는 사기 탐지

소개

  • 신문의 임의 페이지를 펴서 모든 숫자의 첫 번째 자리(1,2,...,9)를 기록하십시오.
  • 이 숫자들의 기대 빈도는 무엇입니까?
  • 직관적으로는 약 1/9 = 11%로 예상할 수 있습니다.

무작위 막대 그래프

R로 배우는 사기 탐지

소개

  • 신문의 임의 페이지를 펴서 모든 숫자의 첫 번째 자리(1,2,...,9)를 기록하십시오.
  • 이 숫자들의 기대 빈도는 무엇입니까?
  • 직관적으로는 약 1/9로 예상할 수 있습니다.
  • 벤포드 법칙: 기대 빈도
    • 숫자 1 $\approx$ 30%
    • 숫자 9 $\approx$ 4.6%

벤포드 막대 그래프

R로 배우는 사기 탐지

뉴컴과 벤포드

  • "로그 표를 많이 사용하는 사람이라면 첫 페이지가 마지막 페이지보다 훨씬 빨리 닳는다는 사실을 통해, 10개의 숫자가 동일한 빈도로 나타나지 않는다는 것을 알 수 있다." (Newcomb, 1881)
  • 벤포드는 20개의 서로 다른 데이터셋에서 숫자의 첫 번째 자리를 관찰하였습니다.

뉴컴과 벤포드

R로 배우는 사기 탐지

첫 번째 자리에 대한 벤포드 법칙

첫 번째 자리 $D_1$이 $d_1$과 같을 확률이 다음과 같으면 데이터셋은 첫 번째 자리에 대한 벤포드 법칙을 만족합니다: $$P(D_1=d_1)=\log(d_1+1)-\log(d_1)=\log\left(1+\frac{1}{d_1}\right) \qquad d_1=1,\ldots,9$$

  • 예시

    • $P(D_1=1)=\log\left(1+\frac{1}{1}\right)=\log(2)=0.3010300$
    • $P(D_1=2)=\log\left(1+\frac{1}{2}\right)=\log(1.5)=0.1760913$
    • $P(D_1=9)=\log\left(1+\frac{1}{9}\right)=\log(1.111111)=0.04575749$
  • 핑크햄은 벤포드 법칙이 스케일 변환에 대해 불변임을 발견하였습니다.

R로 배우는 사기 탐지

첫 번째 자리에 대한 벤포드 법칙

benlaw <- function(d) log10(1 + 1 / d)
benlaw(1)
0.30103

벤포드 법칙 막대 그래프

R로 배우는 사기 탐지

처음 1000개의 피보나치 수를 생성합니다.

fibnum <- numeric(1000)
fibnum[1] <- fibnum[2] <- 1
for (i in 3:1000) { fibnum[i] <- fibnum[i-1] + fibnum[i-2] } 
head(fibnum)
1 1 2 3 5 8

2의 처음 1000개 거듭제곱도 생성합니다.

pow2 <- 2^(1:1000)
head(pow2)
2 4 8 16 32 64
R로 배우는 사기 탐지

benford.analysis 패키지의 `benford` 함수

library(benford.analysis)
bfd.fib <- benford(fibnum,
                   number.of.digits = 1)
plot(bfd.fib)

피보나치

library(benford.analysis)
bfd.pow2 <- benford(pow2,
                    number.of.digits = 1)
plot(bfd.pow2)

2의 거듭제곱

R로 배우는 사기 탐지

연습해 봅시다!

R로 배우는 사기 탐지

Preparing Video For Download...