
4.3
スパース
PCA
による異常検出
101
下のコードで確認してみよう。
preds.sort_values(by="anomalyScore",ascending=False,inplace=True)
cutoff = 350
predsTop = preds[:cutoff]
print("Precision: ",np.round(predsTop. \
anomalyScore[predsTop.trueLabel==1].count()/cutoff,2))
print("Recall: ",np.round(predsTop. \
anomalyScore[predsTop.trueLabel==1].count()/y_train.sum(),2))
結果は下のようになる。
Precision: 0.75
Recall: 0.8
Fraud Caught out of 330 Cases: 264
これだけでも十分良いシステムだが、他の次元削減手法を用いた不正検出システムを構築してみよ
う。
4.3
スパース
PCA
による異常検出
スパース
PCA
を用いた不正検出システムを設計してみよう。スパース
PCA
は通常の
PCA
と似てい
るが、密でない表現を作るバージョンだということを思い出そう。つまり、スパース
PCA
は主成分の
スパースな表現を与える。
この手法の場合も、通常の
PCA
と同様に必要な主成分の数を指定しなければならないが、それに加
えてスパースな度合いを制御するための
alpha
パラメータも指定しなけ ...