Oversampling Sintetis

Deteksi Fraud di R

Sebastiaan Höppner

PhD researcher in Data Science at KU Leuven

Oversampling dengan 'SMOTE'

  • SMOTE: Synthetic Minority Oversampling TEchnique (Chawla dkk., 2002)
  • Oversample kelas minoritas (= fraud) dengan membuat kasus minoritas sintetis
Deteksi Fraud di 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
Deteksi Fraud di R

smote_scatterplot_1

Deteksi Fraud di R

smote_scatterplot_2

Deteksi Fraud di R

SMOTE

Mari pilih satu kasus fraud X (Tim)

smote_zoomin

Deteksi Fraud di R

SMOTE - langkah 1

Langkah 1

Temukan K tetangga terdekat penipuan dari X (Tim)

mis. K = 4

smote_step1

Deteksi Fraud di R

SMOTE - langkah 2

Langkah 2

Pilih acak salah satu tetangga terdekat Tim mis. X4 (Bart)

smote_step2

Deteksi Fraud di R

SMOTE - langkah 3

Langkah 3: buat sampel sintetis

kasus_sintetis_1

Deteksi Fraud di R

SMOTE - langkah 3

Langkah 3: buat sampel sintetis

kasus_sintetis_2

Deteksi Fraud di R

SMOTE - langkah 3

Langkah 3: buat sampel sintetis

kasus_sintetis_3

Deteksi Fraud di R

SMOTE - langkah 3

smote_step3

Deteksi Fraud di R

SMOTE - langkah 4

Langkah 4

Ulangi langkah 1–3 untuk tiap kasus fraud sebanyak dup_size

mis. dup_size = 10

smote_step3

Deteksi Fraud di 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
Deteksi Fraud di R

hasil_smote

Deteksi Fraud di R

Ayo berlatih!

Deteksi Fraud di R

Preparing Video For Download...