Python 機械学習の実践: クレジットカード詐欺検出

Python 機械学習の実践: クレジットカード詐欺検出

ストーリーの背景:元のデータは個人の取引記録ですが、データ自体のプライバシーを考慮して、元のデータは PCA に似た処理がされています。特徴データが抽出されたので、次の目標は、最高の検出効果を実現するモデルを構築することです。ここではデータに対して特徴抽出を実行する必要はありませんが、私たちが直面する課題はまだかなり大きいです。

  1. pandasをpdとしてインポートする
  2.  
  3. matplotlib.pyplot をpltとしてインポートします。
  4.  
  5. numpyをnpとしてインポートする
  6.  
  7. sklearn.cross_validationからtrain_test_split をインポートします
  8.  
  9. sklearn.linear_modelからLogisticRegression をインポートします
  10.  
  11. sklearn.cross_validationからKFold、cross_val_score をインポートします
  12.  
  13. sklearn.metricsから、confusing_matrix、recall_score、classification_report をインポートします。

データ分析とモデリングは肉体労働ではありません。時間はお金です (World of Warcraft のプレイヤーは皆これを知っています!)。Python を使用してデータを操作する場合は、これらが核兵器になります。この友達たちを簡単に紹介しましょう!

  • Numpy 科学計算ライブラリは、主に行列演算に使用されます。何ですか? 行列がどこで使用されるかわかりません。では、このように考えてみましょう。データは行 (サンプル) と列 (特徴) で構成されているため、データ自体は行列です。
  • Pandas - データ分析および処理ライブラリ 多くの友人が、Python でデータを処理するのは簡単だと言いますが、その簡単さはどこにあるのでしょうか? 実際、Pandas を使用すると、1 行のコードで非常に複雑な操作を解決することもできます。
  • Matplotlib - 可視化ライブラリ 分析でもモデリングでも、優れたメモリに頼るだけでは不十分です。結果とプロセスを視覚的に表示する必要があります。
  • Scikit-Learn-Machine Learning ライブラリは、非常に実用的な機械学習アルゴリズム ライブラリであり、基本的に使用できると思われるすべての機械学習アルゴリズムが含まれています。しかし、それだけではありません。探索できる前処理および評価モジュールが多数あります。
  • データ = pd.read_csv("creditcard.csv") data.head()

まず、pandas を使用してデータを読み取り、最初の 5 行を表示します。ご覧のとおり、pandas でデータを読み取るのはとても簡単です。ここでのデータは、ユーザーのプライバシーなどを考慮して PCA によって処理されています。これで、データを処理済みの特徴として扱うだけです。

次に、データ サンプル内のどれが不正であるかを検出することが私たちの主な目標です。

  1. count_classes = pd.value_counts(data[ 'Class' ], sort = True ).sort_index()
  2.  
  3. count_classes.plot(種類 = 'bar' )
  4.  
  5. plt.title( "不正クラスヒストグラム" )
  6.  
  7. plt.xlabel( "クラス" )
  8.  
  9. plt.ylabel( "頻度"  

この分類問題をモデル化するために機械学習アルゴリズムを急いで使用しないでください。まず、データの分布を見てみましょう。データ サンプルには、クラス 0 が通常の状態を表し、クラス 1 が不正行為が発生したサンプルを表すことを指定する明確なラベル列があります。これは上の写真からわかります。 。 。ちょっと待ってください、ケースは 2 つあると言っていませんでしたか? グラフにはクラス 0 のサンプルだけがあるのはなぜですか? よく見てください。 。 。クラス 1 のサンプルがないわけではありませんが、サンプルが少なすぎて、基本的に見えないほどです。現在、私たちは新たな課題に直面しています。サンプルが極端に不均衡です。次に、まずこの問題を解決する必要があります。これは非常に一般的で厄介な問題です。

ここでは、データ分析で最も一般的に使用される 2 つの方法であるダウンサンプリングとオーバーサンプリングという 2 つのソリューションを提案します。

まず弱点を取り上げましょう。ダウンサンプリングは実装が比較的簡単なので、まずは最初の解決策に取り組みましょう。ダウンサンプリングとは、2 種類のデータが不均衡になることを意味します。そのため、私はあなたのデータを同じだけ小さくします (つまり、1 の数が同じ数の 0 に減らされます)。これでバランスが取れているのではないでしょうか。

実装方法は非常に簡単です。0に属するデータで、クラス1と同じ数のサンプルをランダムに選択します。これで、非常に小さなデータの2つのグループが取得され、次にモデルを構築できます。ただし、機械学習モデルを構築する前に、データセットをトレーニングセットとテストセットに分割するという一般的な操作を忘れないでください。これにより、その後の検証結果の信頼性が高まります。

ロジスティック回帰モデルのトレーニングでよく行われることは、モデルの場合、アルゴリズムを選択するときに調整するパラメータが多数あることです。そのため、最適なパラメータを見つける方法は簡単ではありません。経験に頼るのはあまり信頼できません。通常、多くの実験、つまり最終的にこれらの適切なパラメータを取得するまでの継続的な試行が必要になります。

異なる C パラメータに対応する最終モデルの効果:

  1. Cパラメータ: 0.01
  2.  
  3. 反復 1: リコールスコア = 0.958904109589
  4. 反復2: リコールスコア = 0.917808219178
  5. 反復3: リコールスコア = 1.0
  6. 反復4: リコールスコア = 0.972972972973
  7. 反復5: リコールスコア = 0.954545454545
  8.  
  9. 平均再現スコア 0.960846151257
  10.  
  11. Cパラメータ: 0.1
  12.  
  13. 反復 1: リコールスコア = 0.835616438356
  14. 反復2: リコールスコア = 0.86301369863
  15. 反復3: リコールスコア = 0.915254237288
  16. 反復4: リコールスコア = 0.932432432432
  17. 反復5: リコールスコア = 0.878787878788
  18.  
  19. 平均再現スコア 0.885020937099
  20.  
  21. Cパラメータ: 1
  22.  
  23. 反復 1: リコールスコア = 0.835616438356
  24. 反復2: リコールスコア = 0.86301369863
  25. 反復3: リコールスコア = 0.966101694915
  26. 反復4: リコールスコア = 0.945945945946
  27. 反復5: リコールスコア = 0.893939393939
  28.  
  29. 平均再現スコア 0.900923434357
  30.  
  31. Cパラメータ: 10
  32.  
  33. 反復 1: リコールスコア = 0.849315068493
  34. 反復2: リコールスコア = 0.86301369863
  35. 反復3: リコールスコア = 0.966101694915
  36. 反復4: リコールスコア = 0.959459459459
  37. 反復5: リコールスコア = 0.893939393939
  38.  
  39. 平均再現スコア 0.906365863087
  40.  
  41. Cパラメータ: 100
  42.  
  43. 反復 1: リコールスコア = 0.86301369863
  44. 反復2: リコールスコア = 0.86301369863
  45. 反復3: リコールスコア = 0.966101694915
  46. 反復4: リコールスコア = 0.959459459459
  47. 反復5: リコールスコア = 0.893939393939
  48.  
  49. 平均再現スコア 0.909105589115
  50.  
  51. 選べるベストモデル クロスバリデーション  Cパラメータ= 0.01

機械学習アルゴリズムを使用する場合、パラメータの調整は非常に重要な部分です。ここでは、最も古典的な分類アルゴリズムであるロジスティック回帰を使用することを選択します。ロジスティック回帰を回帰アルゴリズムと考えないでください。これは最も実用的なバイナリ分類アルゴリズムです。ここで考慮する必要がある c パラメータは、正規化ペナルティ項の強度です。では、最適なパラメータを選択するにはどうすればよいでしょうか。ここでは、クロス検証が必要であり、異なる C パラメータを使用して同じデータを実行します。目的は、どのような C パラメータを使用すると、最終モデルが最適に機能するかを確認することです。さまざまなパラメータが最終結果に大きな影響を与えることがわかります。ここでの最良の方法は、検証セットを使用してそれを見つけることです。

モデルは構築されましたが、どのモデルが良くて、どのモデルが良くないかをどのように判断すればよいのでしょうか。ここは慎重に考える必要があります。

これは通常、精度、つまり正確度と呼ばれるもので測定されます。しかし、考えてみましょう。私たちの目的は何でしょうか? 異常なサンプルを検出することでしょうか? たとえば、病院から 1,000 人の患者の中から癌患者を検出するというタスクが与えられたとします。つまり、データセットには癌に罹っていない人が 990 人いて、癌に罹っている人は 10 人だけだとします。この 10 人を検出する必要があります。精度を基準として使用すると、これらの 10 人が検出されなかったとしても、精度は 990/1000、つまり 99% になりますが、このモデルには価値がありません。これは非常に重要です。評価方法が異なると、異なる答えが得られるからです。問題の性質に基づいて、最も適切な評価方法を選択する必要があります。

同様に、ここではリコールを使用してモデルの品質、つまり異常なサンプルがいくつ検出されたかを計算します。これも本来の目的です。ここでは、それを示すために混同行列がよく使用されます。

この図はとても美しいです!(絵が上手いというわけではありませんが、非常に直接的です。)この図から、元のデータ内のサンプルの分布とモデルの予測結果が明確にわかります。では、再現率はどのように計算されるのでしょうか?検出数(137)を異常サンプルの総数(10+137)で割り、この値を使用してモデルを評価します。混同行列を使用すると、モデルの精度と再現率を直感的に調べることができます。また、モデルを評価するときにこのグラフを表示して、現在のモデルの効果と既存の問題を直感的に確認できるようにすることも強くお勧めします。

これで話は終わりではありません。ダウンサンプリングされたデータセットでテストしたばかりなので、このテストは元のテスト セットではないため、完全に信頼できるものではありません。元の大規模なテスト セットで現在のモデルの有効性を再度測定する必要があります。実際には効果がかなり良いことがわかりますが、問題は何でしょうか? 誤って多くのサンプルを削除してしまったのでしょうか? 一部のサンプルは異常ではありませんが、誤って異常とみなしました。 この現象は、実際にはダウンサンプリング戦略自体の欠陥です。

ロジスティック回帰アルゴリズムの場合、最終結果の確率が、それを陽性サンプルまたは陰性サンプルと見なす度合いよりも大きいというしきい値を指定することもできます。未使用のしきい値は結果に大きな影響を与える可能性があります。

上の図では、異なるしきい値の影響が非常に大きいことがわかります。しきい値が小さいということは、モデルが非常に厳格であり、誤って破棄するよりも、破棄することを意味します。これにより、ほとんどのサンプルが異常なサンプルと見なされ、再現率は高くなりますが、精度はわずかに低くなります。しきい値が大きい場合、モデルはわずかに緩くなり、再現率は非常に低くなり、精度はわずかに高くなります。要約すると、ロジスティック回帰アルゴリズムを使用する場合は、実際のアプリケーションシナリオに応じて最も適切なしきい値を選択する必要もあります。

ダウンサンプリング戦略について説明した後、オーバーサンプリング戦略について説明を続けます。ダウンサンプリングとは対照的に、ここでの戦略はクラス 0 とクラス 1 のサンプル数を同じにすることです。つまり、データを生成する必要があります。

SMOTE アルゴリズムは、非常に広く使用されているデータ生成戦略です。プロセスは上の図で参照できます。非常にシンプルです。次に、既製のライブラリを使用して、オーバーサンプリング データ生成戦略を完了します。

ほんの数ステップで、オーバーサンプリング戦略が完了しました。これで、陽性サンプルと陰性サンプルの数はそれぞれ 200,000 を超え、同じ数になりました。混同行列を見て、オーバーサンプリングされたサンプルに適用されたロジスティック回帰の効果を確認しましょう。データ強化の応用範囲は非常に広く、多くの機械学習やディープラーニングの問題では、これが日常的になっています。

ダウンサンプリングとオーバーサンプリングの効果を比較してみましょう。リコール効果は良好で、どちらも異常なサンプルを検出できると言えますが、ダウンサンプリングの方が誤検出が少ないです。そのため、データを生成できれば、アンバランスなサンプルデータの場合は、オーバーサンプリングは試すことができる解決策です。

要約: 機械学習の場合、データには多くの課題や問題が伴うことは間違いありません。そのため、最も重要なのは、この一連の問題をどのように解決するかということです。専門家は私たちよりもコードを書くのが上手ではないかもしれませんが、問題を解決する方法は非常によく知っています。今日は、検出タスクを背景とした事例についてお話ししました。サンプルの不均衡の問題への対処方法とモデル評価の選択方法についてです。最後に、異なるしきい値でのロジスティック回帰の結果を示しました。ここでも、学生が事例を通してより多くの経験を積み、できるだけ早く専門家になれることを願っています。

<<:  機械学習研究開発プラットフォームの選択

>>:  話題の「人工知能」について、気になるNの質問にお答えします

ブログ    
ブログ    
ブログ    

推薦する

...

...

百度の女性デーのポスターはスマートライフの姿を描いている:人工知能は女性をより自由にする

社会の進歩と国民の意識の高まりに伴い、社会全体が女性の権利にますます注目するようになっています。 3...

...

インスパー・シャオ・シュエ:人工知能はモノのインターネットを「スマート」にする

「人類の発展以来、テクノロジーの継続的な進化により、接続性、インタラクション、オンライン機能が絶えず...

...

2022 年のソフトウェア開発に関する 5 つの予測

[[435157]] [51CTO.com クイック翻訳]すべての企業がソフトウェア企業になりつつあ...

モデル圧縮率95%、MIT Han Songらが新しいLite Transformerを提案

Transformer の高性能は非常に高い計算能力に依存しており、モバイル NLP に大きな制限が...

Geek+がダブル11の結果を発表:中国最大のインテリジェント倉庫ロボットネットワークが72時間で811万件の注文を配達

中国・北京(2019年11月21日) – 世界的に有名な知能ロボット企業であるG​​eek+は、今年...

ハッシュテーブルアルゴリズムの最初から最後までの徹底的な分析

注: この記事は 3 つの部分に分かれています。最初の部分は、Baidu の面接の質問における To...

ハーバード史上最短の在職期間! 53歳の女性校長、博士論文の盗作疑惑で辞職

ハーバード大学の第30代学長が正式に辞任を発表しました! 53歳のクローディン・ゲイ氏は昨年7月に就...

...

テクノロジー|軽量顔検出アルゴリズムの徹底レビュー

顔検出は、幅広いアプリケーションと多くの研究者を抱えるコンピューター ビジョンの古くからのトピックで...

ニューラルスタイル転送アルゴリズムで絵を描くことを学習する人間は、芸術分野で人工知能に負けるのでしょうか?

人工知能はますます多用途になり、すでに私たちの仕事のすべてを人工知能が引き継ぐことができるようです。...