
110
4
章 異常検出
図 4-14 辞書学習による 28 成分を用いた場合の結果
この結果は、カーネル
PCA
、ガウス型ランダム射影、スパースランダム射影の結果よりもはるかに
良いが、通常の
PCA
ほどの性能は出ていない。
GitHub
上のコードを使って、このシステムを改良できるか試してみてほしい。いまのところ
PCA
に
よるものが、クレジットカードトランザクションデータセットに対する最良の不正検出システムだ。
4.9
ICA
による異常検出
最後に
ICA
(独立成分分析)を用いた不正検出システムを構築してみよう。
ICA
では利用する成分の数を指定する必要がある。ここでは
27
に設定した。
ICA
に関しては
scikit-
learn
が
inverse_transform
関数を提供してくれているので、独自に実装する必要はない。
# Independent Component Analysis
from sklearn.decomposition import FastICA
n_components = 27
algorithm = 'parallel'
whiten = True
max_iter = 200
random_state = 2018
fastICA = FastICA(n_components=n_components, \
algorithm=algorithm, whiten=whiten, max_iter=max_iter, \
random_state=random_state)
X_train_fastICA ...