
208
9
章 半教師あり学習
print('Training Log Loss: ', loglossTraining)
print('CV Log Loss: ', loglossCV)
loglossLightGBMGradientBoosting = log_loss(y_train, \
predictionsBasedOnKFolds.loc[:,'prediction'])
print('LightGBM Gradient Boosting Log Loss: ', \
loglossLightGBMGradientBoosting)
このモデルを使ってクレジットカードトランザクションのテストセット中の不正を検出してみよう。
図9-1に、結果を示す。
図9-1 教師ありモデルの結果
適合率
-
再現率曲線に基づく平均適合率は
0.62
だ。
75%
の不正を検出しようとすると適合率が
0.5%
になってしまう。
9.3
教師なしモデル
さて、教師なし学習による不正検出システムを構築してみよう。具体的には線形活性化関数を持つ
2
層過完備オートエンコーダを使う。隠れ層は
40
ノードで
2%
のドロップアウトを行う。
ただしここでは、トランザクションに対してオーバサンプリング(
oversampling
)を 行 っ て 、 不 正 例
の数を調整する。オーバサンプリングはデータセットのクラス分布を整える手法だ。正常
/
不正でない
トランザクションと異常
/
不正なトランザクションとを、訓練するオートエンコーダがより簡単に