5))plt.show()どの変数がどのくらい選ばれたかが分かります。上記6つのモデル中4つ以上のモデルから選択された特徴量を使うことにしました。'Amount'],dtype='object')"""モデル学習ハイパーパラメータをグリッドサーチさせた複数のモデルに関する投票モデルを作ってみます。最初に、複数のモデルについて学習させてみます。後で精度を見ながらモデルを選びますので、ひとまず思いついたものをぶっ込んでみる。width=0.5)plt.grid()plt.show()安定のXGBoostに続いて、AdaBoost、バギング、勾配Boosting辺りが良いようです。ascending=False)な感じです。この中から精度の良いモデルを複数選んで、ひとまずハイパーパラメータをデフォルトのままで投票モデルを学習させてみます。よる予測確率の平均値からクラスを予測しています。グリッドサーチを行って、各モデルで最適なハイパーパラメータを選択してみます。best_search.best_params_model[1].set_params(**best_param)上記、実行後、再び投票モデルを学習させます。ascending=False)これはあまり効果はなさそうですね。関しては下がってしまいました。この辺りは割と、最後にわずかの数パーセントが上がってくれればといったくらいの気持ちだったりします。精度を確認してみます。Rate')axs[1].grid(True)plt.show()混合行列とROC曲線を可視化しました。データの方がたくさん存在する不均衡データですので、サンプリングで調整した分を戻して混合行列を出してみます。Negativeが発生するという感じですね。今回はさらに、いろいろと設定を仮定した上で、それぞれの場合の損益の効果まで考えてみます。クレジットカードといえば、盗難保険がついていますよね。不正利用により顧客が失った金額は、こういった盗難保険などといった形で、クレジットカード会社が負担するようになっているそうです。https://news.cardmics.com/entry/tonan-hoken-detail/ということは、不正利用がないと予測したけども、実際に不正利用があった時には、不正利用を見逃したことになり、結果負担コストが発生すると考えられます。保険会社的には、不正利用を予測することで、被害を抑えたいというモチベーションがあるわけですね。仮に、不正利用があると予測し、実際に不正利用されていた場合には、失うはずであった金額を抑えることが出来たと考えてみます。逆に、不正利用があると予測したけども、実際に不正利用はなかった時には、そのアカウントに迷惑をかけることになり、利用停止を解除するコストも発生すると考えてみます。https://kurumicat.com/zakki015また、不正利用がないと予測して、実際に不正利用はない時の1アカウント当たりの平均利益も考えてみます。このようにして考えた場合に、損益行列はと表せます。不正利用を検知できず悪用されてしまった場合の1アカウント当たりの平均負担額が100万円かかるとしてみます。すると、と置けそうです。と二重で計算してしまうことになるので、片方だけ計算するとして、こちらは0としておきます。{}'.format(bc_matrix.sum()))plt.show()となりそうなことが分かりました。予測確率が0.5以上でクラス判定としているので、この予測確率をどのくらいの閾値に設定しておけば、利益が最大となるかを可視化してみます。curve')plt.grid()plt.show()学習データと検証データのセットを何パターンか試してみるため、何回かの検証データを使って信頼区間を出してみて、その上で、最大利益となる閾値を求めました。0.1--0.9')plt.grid()plt.show()max_benefit_point0.820000000000000110.8200000000000001不正利用である確率が、上記閾値を超えているものに不正利用予測をすれば、利益が最大になるとのことなので、この閾値で再度損益行列を出してみます。Positiveを抑える(Precisionを高めにしておく)方が、コストがかからないということになりました。あとは既存で使われている予測モデルに対しても同様の分析を行って比較ができれば、どのくらいの費用対効果があるのかが分かりやすく示せるのではないかと思います。データの傾向についての分析ついでに、主成分の中身はわからないんですが、以下、決定木モデルによる主成分の傾向を分析してみました。pydotplus.graph_from_dot_data(dot_data.getvalue())graph.write_pdf('graph.pdf')Image(graph.create_png())何か、1つ目の切り分けルールでかなり分けられていることが、ジニ係数などを確認してみても分かります。そこで、データから1つ目ルールで切り分けられた集団ごとの不正予測の比率を確認してみます。それよりもルールで切り分けられた集団ごとに確率を出してみると、かなり異なることが分かりました。いうか、片方はもはや潰れてるし。値を出してみたものが以下。0.00022829478292065125冒頭の相関行列でも他の成分に比べて絶対値が大きめですし、意外と生データにおいて、不正利用かどうかを判断しやすいような項目があり、それが自然とこの主成分にまとめられたのかもしれません。まとめただのデータセットでしたが、今回は、意思決定者に対して、どこまでのモデル評価を実施できれば良いだろうかといったところを念頭に取り組んでみました。損益行列あたりの話は下記書籍が参考になりました。2014-07-19AmazonKindle楽天ブックス評価はがちゃがちゃしましたが、モデルの学習自体は、結構いつも通りのやり方でいっています。傾向的な要素が入らないため、実は使わない方がいいのかな?とか個人的に気になったりしているのですが、どうなんでしょう。コメントをキャンセルメールアドレスが公開されることはありません。・掲載されている広告について当サイトでは、第三者配信の広告サービス(Googleアドセンス)を利用しています。使用することがあります。Googleアドセンスに関する詳細やこのような情報が広告配信事業者に使用されないようにする方法については、こちらをご参照ください。・使用しているアクセス解析ツールについて当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。このGoogleアナリティクスはトラフィックデータの収集のために『Cookie』を使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。『Cookie』を無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはこちらをご覧ください。