합성 오버샘플링

R로 배우는 사기 탐지

Sebastiaan Höppner

PhD researcher in Data Science at KU Leuven

'SMOTE'로 오버샘플링

  • SMOTE: Synthetic Minority Oversampling TEchnique (Chawla et al., 2002)
  • 소수 클래스(= 사기)를 합성 사례로 오버샘플링
R로 배우는 사기 탐지
dim(transfer_data)
1000    4
head(transfer_data)
  isFraud    amount   balance     ratio
1   false  528.6840 1529.4732 0.3456641
2   false  184.0193  836.3509 0.2200265
3   false 1885.8024 2984.0684 0.6319568
4   false  732.0286 1248.7217 0.5862224
prop.table(table(transfer_data$isFraud))
 false  true
  0.99  0.01
R로 배우는 사기 탐지

smote_scatterplot_1

R로 배우는 사기 탐지

smote_scatterplot_2

R로 배우는 사기 탐지

SMOTE

사기 사례 X(Tim)을 선택합시다

smote_zoomin

R로 배우는 사기 탐지

SMOTE - 1단계

1단계

사기 사례 X(Tim)의 K-최근접 이웃 찾기

예: K = 4

smote_step1

R로 배우는 사기 탐지

SMOTE - 2단계

2단계

Tim의 최근접 이웃 중 무작위로 하나 선택 예: X4(Bart)

smote_step2

R로 배우는 사기 탐지

SMOTE - 3단계

3단계: 합성 샘플 생성

합성 사례 1

R로 배우는 사기 탐지

SMOTE - 3단계

3단계: 합성 샘플 생성

합성 사례 2

R로 배우는 사기 탐지

SMOTE - 3단계

3단계: 합성 샘플 생성

합성 사례 3

R로 배우는 사기 탐지

SMOTE - 3단계

smote_step3

R로 배우는 사기 탐지

SMOTE - 4단계

4단계

각 사기 사례에 대해 1–3단계를 dup_size번 반복

예: dup_size = 10

smote_step3

R로 배우는 사기 탐지
library(smotefamily)
smote_output = SMOTE(X = transfer_data[, -1],
                       target = transfer_data$isFraud,
                       K = 4,
                       dup_size = 10)

oversampled_data = smote_output$data
table(oversampled_data$isFraud)
false  true
  990   110
prop.table(table(oversampled_data$isFraud))
false  true
  0.9   0.1
R로 배우는 사기 탐지

smote_result

R로 배우는 사기 탐지

연습해 봅시다!

R로 배우는 사기 탐지

Preparing Video For Download...