機械学習は、Apple の Siri や Google のアシスタントなどのスマートフォンから、Amazon のような新製品を提案する推奨エンジン、Google や Facebook が使用する広告ランキング システムまで、私たちが毎日触れる多くの製品の長期的な原動力となっています。最近では、AlphaGo が韓国の囲碁名人イ・セドルに勝利したことや、画像認識や機械翻訳の分野で印象的な新製品のリリースなど、「ディープラーニング」の進歩により、機械学習が再び世間の注目を集めています。 機械学習における強力でありながら一般的に適用可能なテクニックをいくつか紹介します。これを読めば、自分の分野で具体的な機械学習実験を始めるための知識が得られるはずです。 これを Python 拡張機能の「ケース スタディ」と組み合わせます。クレジットカード詐欺を検出するための機械学習モデルをどのように構築できるでしょうか。(詐欺検出の言語を使用しますが、作業の多くは、広告クリック予測などの他の分類問題にも若干の変更を加えることで適用できます。) 時間の経過とともに、ロジスティック回帰、決定木、ランダム フォレスト、真陽性と偽陽性、クロス検証、受信者動作特性 (ROC) 曲線、曲線下面積 (AUC) 曲線など、機械学習の重要な概念や用語の多くに遭遇することになります。 ターゲット: クレジットカード詐欺 オンラインで商品を販売する企業は、必然的に詐欺に対処しなければなりません。典型的な不正取引では、詐欺師は盗んだクレジットカード番号を使用してオンライン サイトから商品を購入します。詐欺師たちは後にその商品を他の場所で割引価格で販売し、利益を手にするが、その一方で、企業は「チャージバック」の費用を負担しなければならない。クレジットカード詐欺の詳細については、こちらをご覧ください。 私たちが長い間詐欺に対処してきた電子商取引ビジネスであり、機械学習を使用して問題を解決したいと考えていると仮定しましょう。より具体的には、取引が行われるたびに、それが詐欺であると証明できるかどうか(たとえば、取引を承認したカード所有者が取引を行っている人物ではないかどうか)を予測し、それに応じて対応できるようにしたいと考えています。このタイプの機械学習の問題は分類と呼ばれます。これは、各支払いを不正か非不正かに分類するだけだからです。 過去の支払いごとに、取引が不正であったかどうか ( fraudulent ) を示すブール値と、米ドルでの支払い額 ( amount )、カードが発行された国 ( card_country )、同じ日に当社の事業所でこのカードを使用して行われた支払いの回数 ( card_use_24h ) など、不正を示している可能性があると考えられるその他の属性があります。したがって、予測モデルを構築するデータは、次の CSV のようになる可能性が非常に高くなります。
この説明では省略しますが、ここで紹介するモデル構築の問題と同じくらい、あるいはそれ以上に重要なので、覚えておく必要がある重要な詳細が 2 つあります。 まず、不正行為とみなされる特徴を特定することは、データ サイエンスの問題です。私たちの場合、不正行為を予測するのに効果的と思われる特徴として、支払額、カードが発行された国、過去 1 日間に受け取ったカード取引の数を特定しました。一般的に言えば、何が有用で何がそうでないかを判断するには、このデータを調べるのに多くの時間を費やす必要があります。 第二に、特徴値を計算するときにデータベースの問題があります。モデルをトレーニングするにはすべての過去のサンプル値が必要ですが、新しいトランザクションを正しくトレーニングするには、それらのリアルタイムの支払い値も追加する必要があります。不正行為を心配し始める前に、クレジットカードの使用状況を 24 時間記録して維持し、不正行為の検出に役立つ機能を見つけたら、実稼働環境とバッチ環境の両方で計算に使用するようにします。定義の特性に応じて、結果は異なる可能性があります。 これらの問題はまとめて特徴エンジニアリングと呼ばれることが多く、産業用機械学習の分野で最も一般的に関与する(そして影響力のある)部分となることがよくあります。 ロジスティック回帰 非常に基本的なモデルである線形モデルから始めましょう。係数a、b、...、zは次のように求められます。 各支払いについて、amount、card_country、card_use_24h の値を上記の式に代入し、確率が 0.5 より大きい場合は支払いが不正であると「予測」し、それ以外の場合は支払いが正当であると予測します。 a、b、...、z を計算する方法について説明する前に、2 つの緊急の問題に対処する必要があります。 確率(詐欺)は 0 から 1 の間の数値である必要がありますが、右側の数量は、amount と card_use_24h の値に応じて、任意に大きくなります(絶対値)。(これらの特徴の値が十分に大きく、a または b の少なくとも 1 つがゼロでない場合)。 card_country は数値ではなく、多くの値(US、AU、GB など)のいずれかです。これらの特徴はカテゴリと呼ばれ、モデルをトレーニングする前に適切に「エンコード」する必要があります。 ロジット関数 問題(1)を解決するために、p = Probability(fraud)を介して直接モデルを構築する代わりに、fraudsterと呼ばれる対数オッズモデルを構築します。したがって、モデルは次のようになります。 あるイベントの確率が p の場合、その確率は p / (1 - p) になります。そのため、式の左側は「対数オッズ」または「ロジット」と呼ばれます。 a、b、...、z の値と特徴を考慮すると、上記の式を逆にして予測される不正確率を計算し、次の式を得ることができます。 不正行為の確率 p は、変換関数 L = ax amount + bx card_use_24h + … の線形関数であり、次のようになります。 線形関数の値に関係なく、シグモイドは 0 から 1 の間の数値にマッピングされ、これが有効な確率となります。 カテゴリ変数 問題(2)を解くために、カテゴリ変数card_country(N個の異なる値のうち1つを取る)を使用し、それをN-1個の「ダミー」変数に拡張します。これらの新機能はブール形式であり、card_country = AU、card_country = GB などです。 N-1 個のダミー値がすべて false の場合、N 個の値が必ず含まれるため、必要なのは N-1 個の「ダミー」値だけです。簡単にするために、card_country は AU、GB、US の 3 つの値のうち 1 つだけを取ることができると仮定します。次に、この値をエンコードするために 2 つのダミー変数が必要になり、適合させる (つまり、係数値を見つける) モデルは次のようになります。 このモデルタイプはロジスティック回帰と呼ばれます。 モデルの適合 a、b、c、d、Z の値をどのように決定するのでしょうか? まず、a、b、c、d、Z をランダムに選択してみましょう。この推測セットの確率は次のように定義できます。 つまり、データセットから各サンプルを取得し、詐欺の予測確率 p を計算します。これを使用して、a、b、c、d、Z の値 (各サンプルの特徴値) を推測します。 実際に詐欺であるすべての例では、p が 1 に近くなるようにし、詐欺ではないすべての例では、p が 0 に近くなるようにする必要があります (つまり、1-p は 1 に近くなるはずです)。したがって、すべての不正なサンプルに対して p 個の製品を取得し、すべての不正でないサンプルに対して 1-p 個の製品を取得して評価を行い、a、b、c、d、Z がどの程度優れているかを推測します。尤度関数はできるだけ大きく(たとえば、できるだけ 1 に近く)する必要があります。推測から始めて、係数を変動させても値を改善できなくなるまで、a、b、c、d、Z を繰り返し調整して確率を改善していきます。一般的に使用される最適化手法は確率的勾配降下法です。 Python実装 ここで、標準の Python オープンソース ツールを使用して、これまで説明した原則を実践します。 R のようなデータフレームを Python に導入する pandas と、人気の機械学習パッケージである scikit-learn を使用します。先ほど説明した CSV ファイルに「data.csv」という名前を付けます。データをアップロードして、次のコードを見てみましょう。 次のコードを使用して、card_countryを適切なダミー変数にエンコードできます。 これで、大規模なデータフレームには、必要なすべてのデータ、ダミー変数、およびモデルをトレーニングするためのすべてのデータが含まれています。ターゲットを分割し (この詐欺事件の変数を予測しようとします)、scikit が必要とする属性を異なる入力パラメータとして使用します。 モデルのトレーニングに進む前に、もう 1 つ議論すべき問題があります。私たちはモデルが適切に一般化されることを望んでいます。たとえば、支払いの特定のパターンを計算する以前に見た方法だけでなく、以前に見たことのない方法で支払いを分類するときにも正確である必要があります。モデルを既存のデータに過剰適合させてノイズを発生させないようにするために、データを 2 つのトレーニング セットに分割します。1 つはモデル パラメーター (a、b、c、d、Z) と検証セット (テスト セットとも呼ばれます) を評価するために使用されるトレーニング セット、もう 1 つはモデルのパフォーマンス メトリックを計算するために使用されるデータセットです (これについては次の章で紹介します)。モデルが過剰適合されている場合、トレーニング セットではパフォーマンスは良好になりますが (そのセット内にパターンが学習されているため)、検証セットではパフォーマンスが低下します。クロス検証には他の方法(k 分割クロス検証など)もありますが、ここでは「テスト トレイン」分割が目的に適しています。 次のように sckit を使用して、データをトレーニング セットとテスト セットに簡単に分割できます。 この例では、データの 2/3 をモデルのトレーニングに使用し、データの 1/3 を検証に使用します。これでモデルをトレーニングする準備が整いました。この時点ではかなり簡単です。 fit 関数はフィッティング手順 (上記の尤度関数の最適化) を実行し、返されたオブジェクトに対して a、b、c、d (coef_ 内)、および Z (intercept_ 内) の値を照会できます。最終的なモデルは モデルのパフォーマンスの評価 モデルのトレーニングが完了したら、モデルが関心のある変数 (この場合は、支払いが不正であったかどうかを示すブール値) をどの程度正確に予測できるかを判断する必要があります。支払いを不正として分類し、確率 (不正) が 0.5 より大きい場合は正当な支払いとして分類したいと述べたことを思い出してください。モデルと分類ルールのパフォーマンス評価方法では、通常、次の 2 つの変数が使用されます。 誤検知率: 正当な請求のうち不正と誤認される割合。 真陽性率(リコールまたは感度メトリックとも呼ばれます)。不正収益全体のうち、不正として正しく分類される収益の割合です。 分類パフォーマンスを評価する方法は多数ありますが、ここではこれら 2 つの変数に焦点を当てます。 理想的には、偽陽性率は 0 に近くなり、真陽性率は 1 に近くなります。請求を不正と分類する確率のしきい値を変更すると (上記では 0.5 としましたが、0 から 1 の間の任意の値を選択できます。値が小さいほど、支払いを不正としてフラグ付けすることに積極的であり、値が大きいほど、より保守的であることを意味します)、偽陽性率と真陽性率は、モデルの良し悪しに応じて曲線を描きます。これを受信者動作特性曲線 (ROC 曲線) と呼び、scikit を使用して簡単に計算できます。 変数 fpr、tpr、およびしきい値にはすべての ROC 曲線のデータが含まれていますが、いくつかのターゲット サンプルを選択します。確率 (不正) が 0.514 より大きく、偽陽性率が 0.374、真陽性率が 0.681 の場合、請求は不正であると想定します。選択した ROC 曲線とプロット ポイントは次のとおりです。 モデルのパフォーマンスが優れているほど、ROC 曲線 (上の青い線) に近づき、グラフの左上の境界に近づきます。 ROC 曲線は、AUC 数値、つまり曲線の下の領域を使用して計算できる、モデルの良し悪しを示すことに注意してください。 AUC 値が 1 に近いほど、モデルのパフォーマンスは向上します。 もちろん、モデル値を本番環境に導入して使用する場合、通常は上記の方法でしきい値を比較して出力確率モデルに対してアクションを実行し、Probability(Fraud)>0.5 の場合は、請求が不正であると見なします。したがって、特定のアプリケーションでは、モデルのパフォーマンスは ROC 曲線上の点に対応し、曲線全体は、偽陽性率と真陽性率、つまり、ポリシー オプションの範囲内でのさまざまな処理の間のトレードオフを制御するだけです。 決定木とランダムフォレスト 上記のロジスティック回帰モデルは、線形機械学習モデルの例です。それぞれの支払い例が空間内の点であり、この点の座標が固有値であると想像してください。固有値が 2 つしかない場合、各例の点は XY 平面上の点になります。ロジスティック回帰のような線形モデルは、線形関数を使用して不正でないサンプルと不正なサンプルを分離できる場合、つまり、ほぼすべての不正なサンプルが線の一方の側にあり、ほぼすべての不正でないサンプルが線の反対側にある場合に、通常はうまく機能します。 多くの場合、特徴とターゲット変数の関係を予測する場合、予測しようとしている関係は非線形であり、その場合は非線形モデルを使用して関係を計算する必要があります。強力で比較的直感的な非線形モデルは、次のような決定木です。 各ノードについて、特定の特徴の値を何らかのしきい値と比較し、比較結果に基づいて左に行くか右に行くかを決定します。木の葉に到達するまで、この方法(20 の質問ゲームに似ていますが、数字が 20 レベルの深さである必要はありません)を続けます。リーフは、トレーニング セット内のすべてのサンプルで構成されます。ツリー上の各ノードの適切なパスを比較することにより、モデル レポートによって予測された確率によって、サンプル リーフの不正な部分が不正であると判断されます。分類する新しいサンプルがある場合、葉に到達する前にその特徴を生成し、「20 の質問ゲーム」を開始して、以下に説明するように不正の可能性を予測します。 ツリーの生成方法については詳しく説明しません (簡単に言うと、各ノードの特徴としきい値を選択し、情報ゲインまたは識別の概念 (上のグラフではジニ係数として報告されています) を最大化し、事前に指定された停止基準に達するまで再帰を続けます)。scikit を使用して決定木モデルをトレーニングするのは、ロジスティック回帰 (または実際には他のモデル) をトレーニングするのと同じくらい簡単です。 決定木の問題の 1 つは、過剰適合しやすいことです。非常に深いツリーの各リーフは、トレーニング データからの例にすぎません。通常、各サンプルの計算にはノイズがあり、一般的な傾向ではない可能性があります。ただし、ランダム フォレスト モデルは、この問題の解決に役立ちます。ランダム フォレストでは、多数の決定木をトレーニングしますが、各ツリーは利用可能なデータのサブセットのみでトレーニングされ、各ツリーを構築するときには分割からの特徴のサブセットのみを考慮します。予測される詐欺の確率は、森の中のすべての木によって生成される平均確率です。データのサブセットのみに基づいて各ツリーをトレーニングすると、各ノードの分離候補として機能のサブセットのみが考慮されるため、ツリー間の相関関係が減少し、過剰適合が減少します。 要約すると、ロジスティック回帰のような線形モデルは、特徴とターゲット変数の関係が線形である場合、またはタスク特徴が予測に与える影響を分離したい場合(その場合、回帰係数を直接読み取ることができるため)に適しています。一方、決定木やランダムフォレストなどの非線形モデルは解釈が難しいですが、より複雑な関係を計算するために使用できます。 機械学習モデルの製品化 機械学習モデルのトレーニングは、機械学習を使用してビジネス上の問題を解決するプロセスの最初のステップに過ぎないと考えることができます。前述のように、通常は特徴エンジニアリング作業を開始する前にモデルのトレーニングを完了する必要があります。モデルができたら、それを製品化、つまり本番環境で使用できるようにし、適切なアクション(たとえば、不正であると評価されたトランザクションをブロックする)を実行する必要があります。 ここでは詳細には触れませんが、本番環境への導入には多くの課題が伴います。たとえば、モデルを Python を使用してデプロイしても、本番環境のソフトウェア スタックでは Ruby が使用される場合があります。このような場合は、モデルをシリアル化された形式で Python から Ruby に変換し、実稼働 Ruby コードでシリアル化を読み取るか、サービス指向システム アーキテクチャを使用して Python から Ruby へのサービス要求を実装する必要があります。 まったく異なる問題として、検証データに対する大量の計算ではなく、運用環境でのモデルのパフォーマンスに関するメトリックを維持することも必要になります。モデルの使用方法によっては、このプロセスが困難になる場合があります。モデルを動作の制御のみに使用すると、メトリックを計算するためのデータがなくなる可能性があるためです。このシリーズの他の記事では、これらの問題のいくつかについて検討します。 サポート資料 すべてのサンプル コードとモデル トレーニング サンプル データを含む Jupyter ノートブックは、「元の記事を読む」の元のリンクにあります。 著者について Michael Manapat (@mlmanapat) は、Stripe Radar を含む Stripe の機械学習製品開発を率いています。 Stripe に入社する前は、Google のエンジニアであり、ハーバード大学で応用数学の博士研究員および講師を務めていました。彼はマサチューセッツ工科大学(MIT)で数学の博士号を取得しました。 |
<<: 機械学習の本質は数理統計学ですか?答えはそれほど単純ではないかもしれない
>>: マッキンゼーの中国人工知能レポートは3つの大きな課題に直面している
[51CTO.com クイック翻訳]職場における支援/拡張現実 (AR) と人工知能 (AI) の潜...
[[189678]]今日は、ディープラーニングにおける畳み込みニューラル ネットワークのいくつかの原...
すべての RSA 暗号化システムでは、強力な暗号化キーまたは類似のキーを作成するために、ユーザーが予...
遠隔医療の普及に伴い、便利で効率的な医療サポートを求める患者にとって、オンライン医療相談が第一の選択...
AI時代においては、セキュリティを早急に再定義する必要があります。人工知能やモノのインターネットなど...
[[411034]] AI 研究者は、新しい機械学習モデルを構築し、パラダイムをトレーニングする際に...
今年に入ってからは、ChatGPTやGPT-4などの技術の応用により、深層合成製品やサービスが増加し...
OpenAIは7月7日、今年3月にGPT-4をリリースしたが、テストへの参加を申請した一部の開発者の...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[342735]] [51CTO.com クイック翻訳] 人工知能(AI)が今日、さまざまな業界で...
01 自動運転とは自動運転は無人運転とも呼ばれ、その名の通り、車両が人間の操作なしに周囲の環境を認...
Xi Xiaoyao Technologyはオリジナル著者 | 王二狗 みなさんこんにちは、私は二...
人工知能 (AI): ChatGPT などのツールの最近の登場により、AI はビルダーの間で注目を集...