Dengesiz veri kümeleriyle başa çıkma

R ile Dolandırıcılık Tespiti

Bart Baesens

Professor Data Science at KU Leuven

Dengesiz veri kümeleri

  • Temel zorluk: olayları sahtekârlık ya da değil diye etiketlemek
    • Sınıflandırma yöntemleri ve anomali tespiti için büyük zorluk
  • Sınıflandırıcı çoğunluk sınıfını ( = sahtekârlık yok) tercih etme eğiliminde
    • sahtekârlık örneklerinde büyük sınıflandırma hatası
  • Sınıflandırıcılar dengeli dağılımdan daha iyi öğrenir

samanlıkta iğne_v2

R ile Dolandırıcılık Tespiti

Dengesiz veri kümeleri

  • Temel zorluk : olayları sahtekârlık ya da değil diye etiketlemek
    • Sınıflandırma yöntemleri ve anomali tespiti için büyük zorluk
  • Sınıflandırıcı çoğunluk sınıfını ( = sahtekârlık yok) tercih eder
    • sahtekârlık örneklerinde büyük sınıflandırma hatası
  • Sınıflandırıcılar dengeli dağılımdan daha iyi öğrenir
  • Olası çözüm : örnekleme yöntemleriyle sınıf dağılımını değiştirmek

samanlıkta iğne_v1

R ile Dolandırıcılık Tespiti

Orijinal dengesizlik

class_barplot_orig.png

R ile Dolandırıcılık Tespiti

Azınlık sınıfını aşırı örnekleme...

class_barplot_over

R ile Dolandırıcılık Tespiti

... ya da çoğunluk sınıfını eksik örnekleme ...

class_barplot_under

R ile Dolandırıcılık Tespiti

... ya da ikisi birden!

class_barplot_both

R ile Dolandırıcılık Tespiti

Örneklemeden sonra sonuç...

class_barplot_result2

R ile Dolandırıcılık Tespiti

... ya da böyle

class_barplot_result1

R ile Dolandırıcılık Tespiti

Rastgele aşırı örnekleme (ROS)

orig_data_v0

R ile Dolandırıcılık Tespiti

orig_data_train_test

R ile Dolandırıcılık Tespiti

random_oversampling_v0

R ile Dolandırıcılık Tespiti

random_oversampling_v1

R ile Dolandırıcılık Tespiti

Uygulamada rastgele aşırı örnekleme

  • Kaggle'da Credit Card Fraud Detection veri kümesi
    • $\sim$ 300K anonimleştirilmiş kredi kartı transferi; sahtekârlık veya gerçek olarak etiketli
  • Veri hakkında...
    • Sayısal (anonim) değişkenler: V1, V2, ... , V28
    • Time = her transfer ile veri kümesindeki ilk transfer arasındaki saniye
    • Amount = işlem tutarı
    • Class = yanıt değişkeni: sahtekârlıkta 1, aksi halde 0
R ile Dolandırıcılık Tespiti

veri kümesi (alt küme) görünümü

R ile Dolandırıcılık Tespiti

Dengesizliği kontrol et

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
R ile Dolandırıcılık Tespiti

ROSE paketinden ovun.sample

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
R ile Dolandırıcılık Tespiti

aşırı örneklenmiş veri kümesi görünümü

R ile Dolandırıcılık Tespiti

Hadi pratik yapalım!

R ile Dolandırıcılık Tespiti

Preparing Video For Download...