
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a dataset
/ 25
Load Data to BigQuery Tables
/ 25
Explore and Investigate the Data with BigQuery
/ 10
Prepare Your Data
/ 10
Train an Unsupervised Model to Detect Anomalies
/ 10
Train a Supervised Machine Learning Model
/ 10
Predict Fraudulent Transactions on Test Data
/ 10
このラボでは、金融取引データにおける不正行為分析について学びます。BigQuery ML を活用して、特徴量エンジニアリングや ML の手法を応用し、不正行為を検出します。
ここでは、一般公開されている金融取引データを使用します。データには次の列が含まれます。
isfraud
フラグターゲット列である isfraud には、不正なトランザクションのラベルが含まれています。こうしたラベルを使用して、不正行為検出のための教師ありモデルのトレーニングや、教師なしモデルを適用した異常の検出を行います。
The data for this lab is from the Kaggle site. If you do not have a Kaggle account, it's free to create one.
学習内容:
このラボでは、特徴量エンジニアリング、モデルの開発、評価、予測に BigQuery インターフェースを使用します。
Participants that prefer Notebooks as the model development interface may choose to build models in AI Platform Notebooks instead of BigQuery ML. Then at the end of the lab, you can also complete the optional section. You can import open source libraries and create custom models or you can call BigQuery ML models within Notebooks using BigQuery magic commands.
If you want to train models in an automated way without any coding, you can use Google Cloud AutoML which builds models using state-of-the-art algorithms. The training process for AutoML would take almost 2 hours, that's why it is recommended to initiate it at the beginning of the lab, as soon as the data is prepared, so that you can see the results at the end. Check for the "Attention" phrase at the end of the data preparation step.
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
ウィンドウで次の操作を行います。
接続した時点で認証が完了しており、プロジェクトに各自の Project_ID、
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
unzip
コマンドを実行します。1 つのファイルが展開されます。
finance
という BigQuery データセットを作成し、このラボ用のテーブルとモデルを保存します。上記のコマンドが正常に実行されると、次の結果が出力されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
BigQuery にデータを読み込むには、BigQuery ユーザー インターフェース、または、Cloud Shell のコマンド ターミナルを使用します。次のいずれかのオプションを選択し、データを読み込みます。
finance.fraud_data
にデータを読み込みます。オプション --autodetect
が、テーブルのスキーマ(変数の名前やタイプなど)を自動的に読み込みます。
Cloud コンソールにて BigQuery を開くことで、Cloud Storage バケットからデータを読み込むことができます。
[テーブルを作成] のポップアップ ウィンドウで、Source
を Google Cloud Storage に設定し、Cloud Storage バケット内の生の CSV ファイルを選択します。
テーブル名に fraud_data と入力し、[スキーマ] で [自動検出] オプションを選択すると、未加工ファイルの 1 行目から自動的に変数名が読み込まれます。
[テーブルを作成] をクリックします。
読み込みプロセスには 1~2 分かかる場合があります。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
まだ Cloud コンソールで BigQuery を開いていない場合は、今すぐ開いてください。
次に、データを確認してより理解を深め、ML モデルで使用できるように準備を整えます。
クエリエディタに以下のクエリを追加し、[実行] をクリックして、データを確認します。
[クエリを新規作成] をクリックして、次のクエリを開始します。こうすることで、完了したときに簡単に結果を比較できるようになります。
1 = 「はい」として、isFraud
列を確認します。
isFraud
の数量が表示されます)。ここまでの振り返り:
isfraud
数で割ると、不正なトランザクションの割合が判明します。次のセクションでは、こうした疑問への対処方法と、ML モデルでの使用に対応したデータの改善について説明します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
新しい特徴を追加し、不要なトランザクション タイプをフィルタして、アンダーサンプリングの適用によりターゲット変数、isFraud
の割合を増加させることで、モデリングのデータを改善することが可能です。
分析フェーズでの結果に基づくと、分析が必要なトランザクション タイプは "TRANSFER"
と "CASH_OUT"
のみなので、残りはフィルタします。また、既存の数値から新しい変数を計算することもできます。
データセットには、不正行為として極めて不均衡なターゲットが含まれています(元データの不正率は 0.0013%)。不正行為では稀な事象が発生することも珍しくありません。ML アルゴリズムにとって不正行為のパターンをより明確にし、結果を簡単に解釈できるようにするため、データを階層化し、不正行為フラグの割合を増加させます。
[実行] をクリックしてクエリを実行します。
ランダムサンプルを 20% として、TEST のデータテーブルを作成します。
このデータは分けて保存され、トレーニングには含まれません。最終段階でモデルのスコアリングを行う際に使用します。
BigQuery ML と AutoML では、トレーニングデータと検証データの両方でエラー率をテストして、過学習を防ぐために、ML アルゴリズムを使用する際に、モデルのデータを TRAIN と VALIDATE に自動的にパーティショニングします。
モデリングのために作成したサンプルデータには、約 228,000 行のバンキング トランザクションが含まれています。
特に AutoML や AI Platform のようなさまざまな環境でモデルを比較して、整合性を持たせたいときなどには、手動でデータセットを TRAIN、VALIDATE、TEST にパーティショニングすることも可能です。
ここまでの振り返り:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
教師なしの手法は、異常なパターンを持つデータを確認する目的として、不正行為の検出ではよく使用されます。また、不正行為のラベルがない場合や、イベントレートが非常に低く、発生件数の低さから教師ありモデルを構築できない場合にも役に立ちます。
このセクションでは、K 平均法クラスタリングのアルゴリズムを使用してトランザクションのセグメントを作成し、各セグメントを分析して、異常のあるセグメントを検出します。
kmeans
に設定します。これにより、fraud_data_model
から選択した変数を使用した 5 つのクラスタを持つ model_unsupervised
という K 平均法モデルが作成されます。
モデルのトレーニングが完了すると、Finance > Models に表示されます。
K 平均法アルゴリズムが、centroid_id という出力変数を作成します。各トランザクションに、centroid_id が割り当てられます。類似のトランザクションが、アルゴリズムによって同じクラスタに割り当てられます。
Davies-Bouldin インデックスは、クラスタがどれほど均質であるかを示す指標です。値が低いほどクラスタ間の距離が離れており、望ましい結果であるということです。
数値特徴量は、[評価] タブでセントロイド(クラスタ)ごとに棒グラフで表示されています。棒グラフの横の数字は、各クラスタ内の変数の平均値を示しています。ベスト プラクティスとして、クラスタリングの距離計算で大きい数字や外れ値の影響を避けるために、入力変数を標準化するか、バケットにグループ化することをおすすめします。わかりやすくするために、この演習ではオリジナルの変数を使用します。
入力として使用されるカテゴリ変数は、別に表示されます。以下の各セグメントで、TRANSFER と CASH_OUT のトランザクションの分布を確認することができます。
ご自身のモデルではグラフの画面表示が異なる場合がありますが、より小さなセグメントに注目して、分布の解釈に取り組んでください。
ターゲット変数の isFraud
は、この教師なしモデルでは使用されていません。この演習では、プロファイリングのために変数を保存し、各クラスタ内での不正行為の分布の確認に使用することが推奨されています。
このモデルを使用してテストデータ (fraud_data_test
) をスコアリングし、各 centroid_id
の不正なイベント数を確認します。クラスタリングのアルゴリズムが、観測結果により同種のグループを作成します。このクエリでは、ML.PREDICT
がモデルを呼び出し、test data 内の各トランザクションの centroid_id
を生成します。
新しいクエリで次のコードを実行します。
ここまでの振り返り:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
これで、BigQuery ML を使用した教師ありモデルの構築を開始する準備が整ったので、不正なトランザクションが含まれている可能性を予測していきます。まず、シンプルなモデルから始めます。BigQuery ML を使用して、分類のために 2 項ロジスティック回帰モデルを作成します。このモデルは、トランザクションが不正であるか否かを予測しようと試みます。
すべての非数値列の変数(カテゴリ変数)に対し、BigQuery ML は自動的にワンホット エンコーディング変換を行います。この変換により、変数内の固有の値ごとに個別の特徴が生成されます。この演習では、BigQuery ML は自動的に TYPE の変数に対してワンホット エンコーディングを行います。
準備が整うと、Finance > Models に model_supervised_initial
テーブルが追加で表示されます。
モデルが作成されると、BigQuery コンソール UI からモデルのメタデータ、トレーニング、評価の統計情報を取得することができます。
[評価] タブでは、分類モデルに特化したさまざまなパフォーマンス指標を確認することができます。
ML では、モデルのパフォーマンスに対する理解が主要なトピックとなっています。分類のためにロジスティック回帰モデルを実行している場合は、以下の主なコンセプトが理解の助けになります。
こちらの Wikipedia ページのグラフが、適合率と再現率のコンセプトをうまく説明しています。
この回帰モデルの ROC 値は、非常に高くなっています。異なる確率のしきい値で結果をテストすることで、精度への理解を深めることができます。
それでは、モデル内で最も影響がある特徴について確認していきます。
変数のスケーリングへの影響を除去するために、重みは標準化オプションを使用して標準化されています。より重い方が重要度が高くなっています。ターゲットとの相関または逆相関関係に基づいて、重みの記号が方向を示します。
ここまでの振り返り:
oldbalanceOrig
と type
が、最も重要な変数です。[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
それでは、楽しい演習に移ります。新しいモデルを 1 つ作成し、2 つのモデルをトレーニングして、精度を高めていきます。
次に、作成した 2 つのモデルを比較して、より良い方を選びます。
新しい変数を追加して、既存のロジスティック回帰モデルを改善します。
モデルを作成したら、ML.EVALUATE
関数を使用して、分類器のパフォーマンスを評価します。ML.EVALUATE
関数は、結果または予測された値を実際のデータと照らし合わせて評価します。
ここまでの振り返り:
ML の最後のステップとして、新しいデータセットの結果をチャンピオン モデルを使用して予測していきます。
BQML 内の ML アルゴリズムが、predicted_<target_name\>_probs
というネストされた変数を作成します。この変数には、モデルによる判断に対する確率スコアが含まれます。モデルによる判断は、「不正」または「正当」のいずれかとなります。
ここまでの振り返り:
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 10 月 12 日
ラボの最終テスト日: 2023 年 10 月 12 日
Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください