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の質問にお答えします

推薦する

AIスタートアップのRokidがKamino 18 AI音声チップをリリース、低電力ウェイクアップをサポート

昨日、国内のAIスタートアップ企業Rokidは杭州で新製品発表会を開催し、Meスマートポータブルスピ...

メッシのサッカーの試合とリーグ・オブ・レジェンドについての解説:OpenAI GPT-4ビジュアルAPIは開発者が新しい方法を作成するために使用されています

記事の冒頭では、サッカーの試合解説ビデオを見てみましょう。それは正しいように聞こえませんか?あなたの...

ChatGPT「ピクチャートーク」が大変身しました!舞台裏で新型GPT-4Vモデルが公開

ChatGPTに音声・画像機能が加わりました! ChatGPT にログインすると、より直感的なインタ...

...

人工知能も「ペンを手に取る」とき、人間に残される領域はどれほどになるのでしょうか?

「暗闇が私たちの光を引き立てる/そして私は漠然とした幻想しか見ることができない/孤独の瞬間のあなた...

なぜマスク氏の新しい「脳コンピューターインターフェース」は大きな進歩なのでしょうか?

昨日のマスク氏の発表を見た後、サイバーパンク映画をたくさん思い出し、一晩中夢を見ました。北京時間の昨...

AIは昨日のことを思い出せるが、過去を思い出すのはまだ少し難しい

[[285973]]人工知能が長期記憶を形成するには、脳科学、神経科学、心理学、行動経済学の分野にお...

人工知能はリモートセンシングデータの大きな可能性を解き放ち、国勢調査の手作業が置き換えられるかもしれない

畳み込みニューラルネットワーク(CNN)と衛星画像データを使用して地域の所得レベルを予測する手法がま...

人生の意味とは何でしょうか?ステーションBのUP司会者がAIに「究極の質問」を投げかけた

人生の意味とは何でしょうか?人はなぜ生きるのか?これらの「宇宙の究極の疑問」は、歴史を通じて数え切れ...

ハンズフリーロボットがゴミ分別の問題解決に役立つ

地球は私たちの共通の家であり、地球環境を保護するために私たちは協力しなければなりません。したがって、...

...

人工知能と機械学習がもたらす劇的な変化を示す6つの事例

[[219896]]現在、人工知能 (AI) と機械学習 (ML) ほど注目されているテクノロジーは...

完全なマーケティング効果評価におけるベイズ構造モデルの応用

著者についてCtrip のデータアナリストである Yiwen 氏は、ユーザー増加、因果推論、データサ...

LLaVA-1.6は非常に強力で、Gemini Proを上回り、推論機能とOCR機能が向上しています。

昨年 4 月、ウィスコンシン大学マディソン校、マイクロソフト リサーチ、コロンビア大学の研究者が共同...