いう判別器を用いたら良いか。imblearnでオーバーサンプリングとアンダーサンプリングを行う。インバランスを考慮しなかった場合と性能を比較する。用いて、imblearnを使ってみる。imblearnで用いてる手法のアイデアは簡単にまとめた。aotamasaki.hatenablog.comデータの説明このデータは、クレジットカードのデータから不正使用されたかどうか当てるタスクに用いることができる。オリジナルデータは機密情報で会社としては公開できないので、このデータはオリジナルのデータをPCAしたものになる。説明変数は'Time'と'Amount'とV1とかV2とかで表される主成分である。Classが1であるサンプルが著しく少ないインバランスなデータである。分析の流れ可視化でどういう判別器を用いるか決定する。(線形判別できそうなのか否か)変数選択をする(詳しくは前のブログ記事を見てください)imblearnでオーバーサンプリングとアンダーサンプリングを行う。インバランスを考慮しなかった場合と性能を比較する。分析結果3と4が本記事のメインディッシュです。いう判別器を用いたら良いか。前の記事にも示したが、第三主成分まで見ただけでなんとなく線形分離できそうである。線形判別であるロジスティック回帰を適応することにする。分散分析の結果、有意だった上位5つと'Time'という特徴を分析に使うことにする。sklearn.feature_selection.SelectKBestによる選択"を見て欲しい。imblearnでオーバーサンプリングとアンダーサンプリングを行う。SMOTEENNを行ってみる。その結果、正常と異常の数がどう変化するか見てみる。271482圧倒的に多かった正常の数が13000点ほど減り、圧倒的に少なかった異常の数が正常の数と同程度まで水増しされている。インバランスを考慮しなかった場合と性能を比較する。オーバーサンプリングとアンダーサンプリングをしなかった場合と比較したいので、こちらの判別を先に行う。過去の記事でクロスバリデーションをした際、単純に層化K分割交差検証を行ったが今回は、層化シャッフル交差検証に変更した。0.41532673]インバランスを考慮しなかったときは、PR曲線の下の面積が0.4660というあまり性能の良くないものになった。次にSMOTE+ENNをかけたときを見てみましょう。SMOTE+Tomekではないのかというと、公式ドキュメントの図と今回のデータを見比べた所、ENNで除去したほうが判別境界がはっきりと分かれそうだと判断したからである。0.74382949]インバランスを考慮すると、PR曲線の下の面積が0.7343と大きく増えた。豆知識的な話だが、imblearnはsklearn同様、Pipelineを実装している。交差検証を行う際はこれを使うとよいだろう。Pipelineでインポートしよう。smote等を用いた後にsklearnのPipelineで交差検証するのはいけない。分割してから訓練データにSMOTE等をかけなければいけないからである。元のデータにSMOTEをかけてから分割すると、水増ししたデータをテストに使うことになってしまう。アンダーサンプリング、オーバーサンプリングも交差検証のループの内側で行う必要がある。imlearnのPipelineならばこれを簡単に行うことができる。thresholds)SMOTEENNを適応した方が改善されることが一目瞭然だ。PrecisionとRecallはThreshold(0,1に切るための確率の値)を動かしたときにトレードオフの関係にあるのだが、それが大きく改善されている。インバランスを考慮しなかったほうでは、precisionが0.8あっても、Recallが0.5しか達成できないモデルだったが、インバランスを考慮すると、precisionが0.8、recallが0.7あるモデルが得られた。分析結果インバランスを考慮した方が良い性能が出ることを確認したところでこのモデルを採用して、最後に判別をするための閾値を決定する。0.981939この表を使って良さそうな閾値を探すと、0.97程度(めちゃくちゃ大きいが...)が良さそう。これを使って判別してみると、以下のようになった。79]]もっとRecallとf1が欲しいところだが、今回はあくまで、imblearnを使ってモデルの改善をすることに重きを置くため、これを最終結果として今回の分析はおしまい。(前処理とかもしてないしね)まとめimblearnを使ってみた他のブログ記事では紹介されていなかったPipelineの機能を用いることでCVを実装した。SMOTE+ENNをしたときとしないときでモデルの改善を見た。お問い合わせはてなブログをはじめよう!aotamasakiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。