Práce s nevyváženými datovými sadami

Detekce podvodů v R

Bart Baesens

Professor Data Science at KU Leuven

Nevyvážené datové sady

  • Hlavní výzva: označení transakcí jako podvodné nebo legitimní
    • Náročné pro klasifikační metody i techniky detekce anomálií
  • Klasifikátor upřednostňuje většinovou třídu (= bez podvodu)
    • velká chyba klasifikace u podvodných případů
  • Klasifikátory se lépe učí z vyváženého rozdělení

jehlička v kupce sena

Detekce podvodů v R

Nevyvážené datové sady

  • Hlavní výzva: označení transakcí jako podvodné nebo legitimní
    • Náročné pro klasifikační metody i techniky detekce anomálií
  • Klasifikátor upřednostňuje většinovou třídu (= bez podvodu)
    • velká chyba klasifikace u podvodných případů
  • Klasifikátory se lépe učí z vyváženého rozdělení
  • Možné řešení: změna rozdělení tříd pomocí metod vzorkování

jehlička v kupce sena

Detekce podvodů v R

Původní nevyváženost

graf původní nevyváženosti tříd

Detekce podvodů v R

Převzorkování menšinové třídy...

graf tříd – převzorkování

Detekce podvodů v R

... nebo podvzorkování většinové třídy ...

graf tříd – podvzorkování

Detekce podvodů v R

... nebo obojí!

graf tříd – kombinace

Detekce podvodů v R

Výsledek po vzorkování...

graf tříd – výsledek 2

Detekce podvodů v R

... nebo takto

graf tříd – výsledek 1

Detekce podvodů v R

Náhodné převzorkování (ROS)

původní data

Detekce podvodů v R

původní data – trénovací a testovací sada

Detekce podvodů v R

náhodné převzorkování

Detekce podvodů v R

náhodné převzorkování – výsledek

Detekce podvodů v R

Náhodné převzorkování v praxi

  • Datová sada Credit Card Fraud Detection na Kaggle
    • $\sim$ 300 000 anonymizovaných transakcí kreditní kartou označených jako podvodné nebo legitimní
  • O datech...
    • Numerické (anonymizované) proměnné: V1, V2, ..., V28
    • Time = sekundy od první transakce v datové sadě
    • Amount = výše transakce
    • Class = cílová proměnná: hodnota 1 pro podvod, 0 jinak
Detekce podvodů v R

kreditní karta – V2 vs V1

Detekce podvodů v R

Kontrola nevyváženosti

head(creditcard)
  Time         V1         V2  ...            V27         V28 Amount Class
1    0  1.1918571  0.2661507  ...  -0.0089830991  0.01472417   2.69     0
2   10  0.3849782  0.6161095  ...   0.0424724419 -0.05433739   9.99     0
3   12 -0.7524170  0.3454854  ...  -0.1809975001  0.12939406  15.99     0
4   17  0.9624961  0.3284610  ...   0.0163706433 -0.01460533  34.09     0
5   34  0.2016859  0.4974832  ...   0.1427572469  0.21923761   9.99     0
prop.table(table(creditcard$Class))
   0    1 
0.98 0.02
Detekce podvodů v R

ovun.sample z balíčku ROSE

n_legit <- 24108
new_frac_legit <- 0.50
new_n_total <- n_legit / new_frac_legit ## = 24108 / 0.50 = 48216

library(ROSE) oversampling_result <- ovun.sample(formula = Class ~ ., data = creditcard, method = "over", N = new_n_total, seed = 2018)
oversampled_credit <- oversampling_result$data prop.table(table(oversampled_credit$Class))
  0   1 
0.5 0.5
Detekce podvodů v R

kreditní karta – V2 vs V1, převzorkováno

Detekce podvodů v R

Pojďme si procvičit!

Detekce podvodů v R

Preparing Video For Download...