समय फीचर

R में Fraud Detection

Bart Baesens

Professor Data Science at KU Leuven

समय का विश्लेषण

  • कुछ घटनाएँ अक्सर समान समय पर होती हैं
  • उदाहरण: ग्राहक समान घंटों में लेनदेन करते हैं
  • उद्देश्य: समय पहलू की जानकारी को अर्थपूर्ण फीचरों से कैप्चर करें
  • समय से निपटना पेचीदा हो सकता है
    • 00:00 = 24:00
    • प्राकृतिक क्रम नहीं; जैसे 23:00 $<$ या $>$ 01:00?
R में Fraud Detection
  • औसत टाइमस्टैम्प निकालने के लिए गणितीय माध्य का उपयोग न करें!
    • उदाहरण: लेनदेन 01:00, 02:00, 21:00 और 22:00 पर हुए
    • गणितीय माध्य 11:30 आता है, पर उस समय कोई ट्रांसफर नहीं हुआ!
head(timestamps)
"20:27:28" "21:08:41" "01:30:16" "00:57:04" "23:12:14" "22:54:16"
  • डिजिटल टाइमस्टैम्प को घंटों में दशमलव फॉर्मेट में बदलें
library(lubridate)
ts <- as.numeric(hms(timestamps)) / 3600

head(ts)
20.4577778 21.1447222  1.5044444  0.9511111 23.2038889 22.9044444
R में Fraud Detection

वृत्ताकार हिस्टोग्राम

library(ggplot2)

clock <- ggplot(data.frame(ts), aes(x = ts)) +
    geom_histogram(breaks = seq(0, 24), colour = "blue", fill = "lightblue") +
    coord_polar()


arithmetic_mean <- mean(ts) clock + geom_vline(xintercept = arithmetic_mean, linetype = 2, color = "red", size = 2)
R में Fraud Detection

अंकगणितीय माध्य के साथ वृत्ताकार हिस्टोग्राम

गलत_घड़ी

R में Fraud Detection

von Mises प्रायिकता डिस्ट्रीब्यूशन

  • समय को आवधिक वैरिएबल की तरह मॉडल करें, von Mises distribution से (Correa Bahnsen et al., 2016)
  • आवधिक नॉर्मल डिस्ट्रीब्यूशन = नॉर्मल डिस्ट्रीब्यूशन को वृत्त पर लपेटना
  • टाइमस्टैम्प के सेट की von Mises डिस्ट्रीब्यूशन $D= $ {$t_1, t_2, \ldots, t_n$}

$$D\sim vonMises\left(\mu,\kappa\right)$$

  • $\mu$ : आवधिक माध्य, लोकेशन का माप; डिस्ट्रीब्यूशन $\mu$ के आसपास क्लस्टर होता है
  • $1/\kappa$ : आवधिक वैरिएंस; $\kappa$ केंद्रित होने का माप है
R में Fraud Detection

पैरामीटर $\mu$ और $\kappa$ का आकलन

# दशमलव टाइमस्टैम्प को "circular" क्लास में बदलें
library(circular)
ts <- circular(ts, units = "hours", template = "clock24")

head(ts)
Circular Data: 
[1] 20.457889 21.144607  1.504422  0.950982 23.203917  4.904397
estimates <- mle.vonmises(ts)
p_mean <- estimates$mu %% 24
concentration <- estimates$kappa
R में Fraud Detection

आवधिक माध्य के साथ वृत्ताकार हिस्टोग्राम

सही_घड़ी

R में Fraud Detection

कॉन्फिडेंस इंटरवल

  • नए फीचर निकालें: लेनदेन के समय का कॉन्फिडेंस इंटरवल
  • $S= $ {$x_i^{time}|i=1,\ldots,n$} : एक ही ग्राहक द्वारा किए गए लेनदेन का सेट

(1) mle.vonmises() से $S$ पर आधारित $\mu(S)$ और $\kappa(S)$ का आकलन करें:

estimates <- mle.vonmises(ts)
p_mean <- estimates$mu %% 24
concentration <- estimates$kappa

(2) dvonmises() से टाइमस्टैम्प की density (= likelihood) निकालें:

densities <- dvonmises(ts, mu = p_mean, kappa = concentration)
R में Fraud Detection

फीचर निष्कर्षण

  • बाइनरी फीचर: नई ट्रांजैक्शन का टाइमस्टैम्प CI में है या नहीं, प्रायिकता $\alpha$ (जैसे 0.90, 0.95) के साथ
  • बाइनरी समय फीचर TRUE है यदि टाइमस्टैम्प CI के भीतर है, अन्यथा FALSE
  • टाइमस्टैम्प 90% CI में है यदि उसकी density cutoff value से बड़ी है:
alpha <- 0.90
quantile <- qvonmises(p = (1 - alpha)/2, 
                        mu = p_mean,
                        kappa = concentration) %% 24
cutoff <- dvonmises(quantile,
                      mu = p_mean, kappa = concentration)

time_feature <- densities >= cutoff
R में Fraud Detection

कॉन्फिडेंस इंटरवल

कॉन्फिडेंस_घड़ी

R में Fraud Detection

कॉन्फिडेंस इंटरवल

कॉन्फिडेंस_घड़ी_2

R में Fraud Detection

उदाहरण

$$ $$ समय_तालिका

R में Fraud Detection

मूविंग टाइम विंडो के साथ कॉन्फिडेंस इंटरवल

## ts में टाइमस्टैम्प 18.42, 20.45, 20.88, 0.75, 19.20, 23.65 और 6.08 हैं

time_feature = c(NA, NA) for (i in 3:length(ts)) { ts_history <- ts[1:(i-1)] ## (1) पिछले टाइमस्टैम्प
estimates <- mle.vonmises(ts_history) ## (2) ऐतिहासिक टाइमस्टैम्प पर mu और kappa का आकलन p_mean <- estimates$mu %% 24 concentration <- estimates$kappa
dens_i <- dvonmises(ts[i], mu = p_mean, kappa = concentration) ## (3) मौजूदा टाइमस्टैम्प की density का आकलन
alpha <- 0.90 ## (4) जाँचें: 90% कॉन्फिडेंस लेवल पर density cutoff से बड़ी है या नहीं quantile <- qvonmises((1-alpha)/2, mu=p_mean, kappa=concentration) %% 24 cutoff <- dvonmises(quantile, mu = p_mean, kappa = concentration) time_feature[i] <- dens_i >= cutoff }
print(time_feature)
NA    NA  TRUE FALSE  TRUE  TRUE FALSE
R में Fraud Detection

अभ्यास करते हैं!

R में Fraud Detection

Preparing Video For Download...