1つの口座に対する頻度特徴量
頻度特徴量は、過去に特定のイベントがどのくらい起きたかを数えるものです。こうした特徴量を作ると、異常な振る舞いの検知に役立ちます。動画では、カテゴリ変数をもとに頻度特徴量を作る方法を学びました。
ここでは Bob の取引データが与えられています。channel_cd という列は、各取引で Bob が使用した支払いチャネルを表します。rollapply() 関数を使って、channel_cd 列に基づく freq_channel という頻度特徴量を作成しましょう。関数のドキュメントはコンソールで ?rollaply を参照できます。
ワークスペースにはデータセット trans_Bob、パッケージ zoo と dplyr が読み込まれています。
この演習はコースの一部です
Rで学ぶ不正検知
演習の手順
frequency_fun()という関数を作成します。入力はstepsとchannelとし、stepsの数を数え、直近の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)