Selasa, 14 Mei 2019

Berapa persenkah creditcard yang kena fraud?


Apa yang dimaksud fraud  : Fraud is the crime of getting money by deceiving people.
Menyambung postingan  terdahulu, bahwa aplikasi Benford hanya cocok untuk uji data yang sifatnya time serries, bagaimana jika data yang akan kita analisa terdiri dari banyak variable prediktor dan data target yang tidak balance.

Fraud data preparation
Kita akan ambil bahan dari dataset  creditcard yang ada di Kaggle, terdiri 284315  observasi  dan dicurigai ada 17% nya  creditcard tsb kena fraud. Yang jadi masalah kita harus menentukan dari 17 % tersebut, berapa persenkah data yang benar-benar fraud atau hanya yang kelihatannya fraud saja.
Dimensi dataset
Dimensi dataset creditcard terdiri dari 284315 baris predictor,  dan  variable kolom 31, terdiri dari :
Variable Time dalah waktu dalam detik antara trasaksi pertama dan lainnya.
Variable  V1 - V28, yang merupakan hasil dari transformasi PCA original data(rahasia).
Variable  Amount adalah jumlah uang yang ditransfer.
Class berisi 1=fraud dan 0=bukan fraud

library(tidyverse)

# download from https://www.kaggle.com/dalpozz/creditcardfraud<- creditcard.csv="" div="" read.csv="">

table(creditcard$Class)
#          0      1
#284315    492
#492/284315=17%

creditcard %>%
  ggplot(aes(x = Class)) +
    geom_bar(color = "grey", fill = "lightgrey") +
    theme_bw()



Pig1

Time adalah variable yang menerangkan  urutan transaksi, jadi  tidak benar-benar menerangkan aktual waktu transaksi. Oleh karena itu, saya menormalkan mereka  dan mengelompokkan mereka menjadi empat kelompok waktu.

summary(creditcard$Time)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
##       0   54202   84692   94814  139320  172792
# how many seconds are 24 hours
# 1 hr = 60 mins = 60 x 60 s = 3600 s
3600 * 24
## [1] 86400
# separate transactions by day
creditcard$day <- ifelse(creditcard$Time > 3600 * 24, "day2", "day1")

# make transaction relative to day
creditcard$Time_day <- ifelse(creditcard$day == "day2", creditcard$Time - 86400, creditcard$Time)

summary(creditcard[creditcard$day == "day1", ]$Time_day)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
##       0   38432   54689   52948   70977   86400
summary(creditcard[creditcard$day == "day2", ]$Time_day)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
##       1   37843   53425   51705   68182   86392
# bin transactions according to time of day

creditcard$Time <- as.factor(ifelse(creditcard$Time_day <= 38138, "gr1", 
# mean 1st Qu.ifelse(creditcard$Time_day <= 52327, "gr2", # mean mean
                   ifelse(creditcard$Time_day <= 69580, "gr3", # mean 3rd Qu
                                        "gr4"))))
creditcard %>%
  ggplot(aes(x = day)) +
    geom_bar(color = "grey", fill = "lightgrey") +

    theme_bw()

Pig2
Kita dapat melihat sekarang bahwa transaksi dalam dataset ini semuanya telah direkam dalam dua hari berturut-turut dan ada kira-kira jumlah transaksi yang sama pada dua hari ini.
Sekarang, saya akan hapus kolom (-Time_day)dan (-day) 


creditcard <- select(creditcard, -Time_day, -day)

# convert class variable to factor
creditcard$Class <- factor(creditcard$Class)
creditcard %>%
  ggplot(aes(x = Time)) +
    geom_bar(color = "grey", fill = "lightgrey") +
    theme_bw() +

    facet_wrap( ~ Class, scales = "free", ncol = 2)

Pig3
Pig4

summary(creditcard[creditcard$Class == "0", ]$Amount)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max.
##     0.00     5.65    22.00    88.29    77.05 25691.16
summary(creditcard[creditcard$Class == "1", ]$Amount)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
##    0.00    1.00    9.25  122.21  105.89 2125.87
creditcard %>%
  ggplot(aes(x = Amount)) +
    geom_histogram(color = "grey", fill = "lightgrey", bins = 50) +
    theme_bw() +

    facet_wrap( ~ Class, scales = "free", ncol = 2)
Transaksi fraud kartu kredit  memiliki jumlah uang rata-rata yang lebih tinggi, tetapi jumlah maksimumnya jauh lebih rendah dibandingkan dengan transaksi reguler.
Model.
Selanjutnya akan dibuat model untuk menyelesaikan analisa ini, analisanya akan dimuat  dipostingan selanjutnya.

Tidak ada komentar:

Posting Komentar

Kapan Puncak Covid19 di Indonesia ?

Prediksi Covid19, kapan mencapai puncaknya? Selamat Idhul Fitri from Home, menjawab pertanyaan kapan covid19 mencapai puncaknya? ...