하나의 계좌에 대한 빈도 특성 만들기
빈도(feature)란 과거에 특정 사건이 얼마나 자주 발생했는지를 세는 특성입니다. 이런 특성을 만들면 비정상적인 행동을 더 잘 탐지할 수 있어요. 영상에서는 범주형 특성을 바탕으로 빈도 특성을 만드는 방법을 배웠습니다.
지금은 Bob의 거래 데이터가 제공됩니다. 그중 channel_cd라는 열은 각 거래를 할 때 Bob이 사용한 결제 채널을 나타냅니다. 여기서는 rollapply() 함수를 사용해 channel_cd 열을 바탕으로 freq_channel이라는 빈도 특성을 만들어 볼 거예요. 함수 문서는 콘솔에서 ?rollaply로 확인할 수 있습니다.
데이터셋 trans_Bob과 zoo, dplyr 패키지는 작업 공간에 이미 로드되어 있습니다.
이 연습은 강의의 일부입니다
R로 배우는 사기 탐지
연습 안내
frequency_fun()함수를 작성하세요. 이 함수는steps와channel을 입력으로 받아, 단계 수를 세고 가장 최근channel이 과거에 몇 번 사용되었는지 합산합니다.transfer_id열에rollapply함수를 사용해freq_channel특성을 생성하세요. 이 특성은 특정channel_cd가 이전에 몇 번 사용되었는지를 세어야 합니다.channel_cd,freq_channel,fraud_flag특성을 출력하고, 새로 만든 특성을 확인하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Frequency feature based on channel_cd
frequency_fun <- function(steps, channel) {
n <- ___(___)
frequency <- ___(___[1:n] == ___[___])
return(frequency)
}
# Create freq_channel feature
freq_channel <- ___(trans_Bob$___, width = list(-1:-length(trans_Bob$___)), partial = ___, FUN = ___, trans_Bob$___)
# Print the features channel_cd, freq_channel and fraud_flag next to each other
freq_channel <- c(0, freq_channel)
cbind.data.frame(trans_Bob$___, ___, trans_Bob$fraud_flag)