Over-sampling sintético

Detecção de Fraudes em R

Sebastiaan Höppner

PhD researcher in Data Science at KU Leuven

Over-sampling com "SMOTE"

  • SMOTE: Synthetic Minority Oversampling TEchnique (Chawla et al., 2002)
  • Superamostre a classe minoritária (= fraude) criando casos sintéticos
Detecção de Fraudes em 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
Detecção de Fraudes em R

gráfico de dispersão do SMOTE 1

Detecção de Fraudes em R

gráfico de dispersão do SMOTE 2

Detecção de Fraudes em R

SMOTE

Vamos selecionar um caso de fraude X (Tim)

zoom do SMOTE

Detecção de Fraudes em R

SMOTE - passo 1

Passo 1

Encontre os K vizinhos fraudulentos mais próximos de X (Tim)

ex.: K = 4

smote_step1

Detecção de Fraudes em R

SMOTE - passo 2

Passo 2

Escolha aleatoriamente um dos vizinhos mais próximos de Tim ex.: X4 (Bart)

smote_step2

Detecção de Fraudes em R

SMOTE - passo 3

Passo 3: criar amostra sintética

caso sintético 1

Detecção de Fraudes em R

SMOTE - passo 3

Passo 3: criar amostra sintética

caso sintético 2

Detecção de Fraudes em R

SMOTE - passo 3

Passo 3: criar amostra sintética

caso sintético 3

Detecção de Fraudes em R

SMOTE - passo 3

smote_step3

Detecção de Fraudes em R

SMOTE - passo 4

Passo 4

Repita os passos 1–3 para cada caso de fraude dup_size vezes

ex.: dup_size = 10

smote_step3

Detecção de Fraudes em 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
Detecção de Fraudes em R

resultado do SMOTE

Detecção de Fraudes em R

Vamos praticar!

Detecção de Fraudes em R

Preparing Video For Download...