Vertex AI: AutoML を使ったローンのリスクの予測
概要
このラボでは、Vertex AI を使用して ML モデルをトレーニングおよびサービングし、表形式データセットをもとにローンのリスクを予測します。
目標
次の方法について学びます。
- Vertex AI にデータセットをアップロードする
- AutoML で ML モデルをトレーニングする
- モデルのパフォーマンスを評価する
- モデルをエンドポイントにデプロイする
- 予測を取得する
設定
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は制限されており、一時停止することはできません。[ラボを開始] ボタンをクリックするとタイマーが開始され、Cloud リソースを利用できる時間が表示されます。
この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。一時的な認証情報が新しく提供されるため、ラボ受講中の Google Cloud Platform へのログインおよびアクセスにはその認証情報を使用してください。
前提条件
このラボを完了するには、次のものが必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)。
- ラボを完了するために必要な時間。
注: すでに個人の GCP アカウントやプロジェクトをお持ちの場合でも、そのアカウントやプロジェクトはラボでは使用しないでください。
ラボを開始してコンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側のパネルには、このラボで使用する必要がある一時的な認証情報が表示されます。
-
ユーザー名をコピーし、[Google Console を開く] をクリックします。 ラボでリソースが起動し、別のタブで [アカウントの選択] ページが表示されます。
注: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。 -
[アカウントの選択] ページで [別のアカウントを使用] をクリックします。[ログイン] ページが開きます。
-
[接続の詳細] パネルでコピーしたユーザー名を貼り付けます。パスワードもコピーして貼り付けます。
- その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
しばらくすると、このタブで Cloud コンソールが開きます。
Vertex AI の概要
このラボでは、ML モデルをトレーニングおよびデプロイするために、Google Cloud の統合型 AI プラットフォームである Vertex AI を使用します。Vertex AI プラットフォームには、ML モデル構築のオプションが 2 つあります。ひとつは AutoML を使ったコード不要のソリューション、もうひとつは Vertex Workbench でカスタム トレーニングを行うコードベースのソリューションです。ここでは AutoML を使用します。
このラボでは、ある顧客のローン返済の可能性を判定するための ML モデルを構築します。
タスク 1. トレーニング データを準備する
Vertex AI ダッシュボードを初めて開くと、ML モデルをトレーニングおよびデプロイするための主な段階(トレーニング データの準備、モデルのトレーニング、予測の取得など)を確認できます。その後ダッシュボードには、最近のアクティビティ(最近使用したデータセット、モデル、予測、エンドポイント、ノートブック インスタンスなど)も表示されるようになります。
データセットを作成する
- Google Cloud コンソールのナビゲーション メニューで、[Vertex AI] > [データセット] をクリックします。
- [作成] をクリックします。
- データセットに「LoanRisk」という名前を付けます。
- データタイプと目標には、[表形式] をクリックして [回帰 / 分類] を選択します。
- [作成] をクリックします。
データをアップロードする
Vertex AI にデータをインポートするには、3 つのオプションがあります。
- パソコンから CSV ファイルをアップロード
- Cloud Storage から CSV ファイルを選択
- テーブルまたはビューを BigQuery から選択します。
ここでは、すでにデータセットが Cloud Storage にアップロードされています。
-
データソースとして、[Cloud Storage から CSV ファイルを選択] を選択します。
-
[インポート ファイルのパス] に、次のように入力します。
- [続行] をクリックします。
(省略可)統計情報を生成する
-
データセットの各列の記述統計を確認するには、[統計情報を生成] をクリックします。
特に初回は、統計情報の生成に数分かかる場合があります。 -
統計情報が生成されたら、列名をクリックして分析のグラフを表示します。
タスク 2. モデルをトレーニングする
データセットをアップロードしたので、顧客のローン返済の可能性を予測するためのモデルをトレーニングする準備ができました。
- [新しいモデルのトレーニング] をクリックし、[その他] を選択します。
トレーニング方法
-
データセットには、すでに「LoanRisk」という名前が付いています。
-
[目的] で、[分類] を選択します。
ここで回帰ではなく分類を選択するのは、連続する数値ではなく、特定の数値(顧客がローンを返済する場合は 0、債務不履行となる場合 / 返済しない場合は 1 のいずれか)を予測しようとしているためです。
- [続行] をクリックします。
モデルの詳細
モデルの名前とターゲット列を指定します。
-
モデルに名前を付けます(「LoanRisk」など)。
-
[ターゲット列] で [デフォルト] を選択します。
-
(省略可)[詳細オプション] を開いて、トレーニング データとテスト用データをどのように割り当てるかを決定し、暗号化方法を指定します。
-
[続行] をクリックします。
-
[特徴の追加] で、[続行] をクリックします。
トレーニング オプション
トレーニング モデルに含める列を指定します。たとえば、ClientID はローンのリスクの予測とは無関係であると考えられます。
-
[ClientID] 列のマイナス記号をクリックしてトレーニング モデルから除外します。
-
(省略可)[詳細オプション] を開いて、最適化の目標を選択します。
表形式 AutoML モデルの最適化の目標について詳しくは、表形式の AutoML モデルの最適化目標ガイドをご覧ください。 -
[続行] をクリックします。
コンピューティングと料金
-
[予算] はトレーニングに費やすノード時間を表します。ここでは「1」を入力します。
一般的に、特徴と選択したラベルとの関連性を調べるには、まず 1 コンピューティング時間ほど AutoML モデルをトレーニングするのがよいでしょう。そこから、特徴を変更してさらにトレーニングすることで、モデルのパフォーマンスを向上させることができます。 -
[早期停止を有効にする] はオンのままにします。
-
[トレーニングを開始] をクリックします。
トレーニングには、データサイズとトレーニング方法によって数分から数時間ほどかかります。トレーニング ジョブが完了すると通常は Google Cloud からメールが届きますが、Qwiklabs 環境ではメールは届きません。
モデルのトレーニングを待たずにすむよう、タスク 5 で事前トレーニング済みモデルをダウンロードし、それを使ってタスク 6 で予測を取得します。この事前トレーニング済みモデルは、タスク 1 とタスク 2 のステップに沿って作業した場合のトレーニング結果と同じものです。
タスク 3. モデルのパフォーマンスを評価する(デモのみ)
Vertex AI には、モデルのパフォーマンスを評価するための指標が多数あります。ここでは次の 3 つに注目します。
- 適合率と再現率の曲線
- 混同行列
- 特徴の重要度
適合率と再現率の曲線
信頼度のしきい値によって、ML モデルがどのように陽性をカウントするかが決まります。しきい値が大きいと、適合率は高くなり、再現率は低くなります。しきい値が小さいと、適合率は低くなり、再現率は高くなります。
手動でしきい値を調節して適合率と再現率への影響を観察することによって、ビジネスニーズに合った最適なバランスを見つけてください。
混同行列
混同行列により、テスト用データセット内の各クラスにおいてモデルが正しく予測したサンプルの割合がわかります。
この混同行列は、最初のモデルを使って、テストセット内の返済サンプルの 100%、債務不履行サンプルの 87% を正しく予測できたことを示しています。まずまずのパフォーマンスです。
この割合をさらに高めるには、サンプルを追加する(データを増やす)、新しい特徴を作成する、トレーニング方法を変えるといった方法があります。
特徴の重要度
Vertex AI では、特徴の重要度が棒グラフで表示され、これによって各特徴が予測にどのくらい貢献したかがわかります。棒が長いほど、あるいは特徴に関連付けられた数値が大きいほど、重要度が高くなります。
特徴の重要度の値は、モデルを改善し、より自信を持って予測を行えるようにするために活用できます。たとえば、次にモデルをトレーニングする際に最も重要度の低い特徴を削除したり、重要度の高い 2 つの特徴を組み合わせて特徴クロスを作成したりして、モデルのパフォーマンスが高まるかどうかを確認できます。
特徴の重要度は、Vertex AI の包括的な ML 機能である Explainable AI の一例です。Explainable AI は、ML モデルによる予測結果を理解し解釈するためのツールとフレームワークのセットです。
タスク 4. モデルをデプロイする(デモのみ)
モデルのトレーニングが完了している場合、次のステップは Vertex でのエンドポイントの作成です。Vertex のモデル リソースには複数のエンドポイントを関連付けることができ、これらの間でトラフィックを分割できます。
エンドポイントを作成して定義する
-
モデルページで、[デプロイとテスト] をクリックし、[エンドポイントにデプロイ] をクリックします。
-
[エンドポイント名] に、「LoanRisk」と入力します。
-
[続行] をクリックします。
モデルの設定とモニタリング
-
トラフィック分割の設定はそのままにします。
-
[マシンタイプ] で、[e2-standard-8, 8 vCPUs, 32 GiB memory] を選択します。
-
[説明可能性のオプション] で、[特徴量のアトリビューション] をクリックします。
-
[完了] をクリックします。
-
[続行] をクリックします。
-
[モデルのモニタリング] で、[続行] をクリックします。
-
[モデルの目標] > [トレーニング データソース] で、[Vertex AI データセット] を選択します。
-
プルダウン メニューからデータセットを選択します。
-
[ターゲット列] に、「Default」と入力します。
-
残りの設定はそのままにして、[デプロイ] をクリックします。
エンドポイントのデプロイには数分かかります。完了すると、名前の横に緑のチェックマークが表示されます。
これで、デプロイしたモデルの予測を取得する準備が整いました。
タスク 5. SML 署名なしトークン
署名なしトークンの取得
パイプラインを認証させ、エンドポイントを呼び出して予測を取得する認可を受けるには、署名なしトークンを提供する必要があります。
トークンを取得するには、以下の手順を行います。署名なしトークンを取得できない場合、シークレット ウィンドウの Cookie が原因である可能性があります。この場合は、シークレットでないウィンドウでこの手順を試してください。
-
ログインする際は、受講者用メールアドレスとパスワードを使用します。
-
[Copy] ボタンをクリックします。非常に長いトークンがクリップボードにコピーされます。
このトークンは約 60 秒しか表示されません。コピーして次のステップに進みます。
タスク 6. 予測を取得する
このセクションでは、共有 ML(SML)サービスを使用して既存のトレーニング済みモデルを扱います。
環境変数 | 値 |
---|---|
AUTH_TOKEN | 前のセクションの値を使用します |
ENDPOINT | https://sml-api-vertex-kjyo252taq-uc.a.run.app/vertex/predict/tabular_classification |
INPUT_DATA_FILE | INPUT-JSON |
トレーニング済みモデルを使用するには、環境変数を作成する必要があります。
-
Cloud Shell ウィンドウを開きます。
-
INSERT_SML_BEARER_TOKEN
を、前のセクションの署名なしトークンの値で置き換えます。
- ラボのアセットをダウンロードします。
- ラボのアセットを抽出します。
- 環境変数 ENDPOINT を作成します。
- 環境変数
INPUT_DATA_FILE
を作成します。
INPUT-JSON
ファイルは次の値で構成されています。
age | ClientID | income | loan |
---|---|---|---|
40.77 | 997 | 44964.01 | 3944.22 |
-
環境変数で指定したパラメータを渡すことによって、SML サービスをテストします。
-
SML サービスに対して次のリクエストを実行します。
このクエリには、次のようなレスポンスが返されます。
- 新しいシナリオをテストするために、
INPUT-JSON
ファイルに変更を加えます。
age | ClientID | income | loan |
---|---|---|---|
30.00 | 998 | 50000.00 | 20000.00 |
-
INPUT-JSON
ファイルを編集して元の値を置き換えます。 (任意のエディタ(vim
、nano
、emacs
)または Cloud Shell コードエディタを使用できます) -
環境変数で指定したパラメータを渡すことによって、SML サービスをテストします。
-
SML サービスに対して次のリクエストを実行します。
このモデルは、対象の人物の年収が 50,000 ドル、年齢が 30 歳、ローンが 20,000 ドルの場合、ローンが返済されると予測しています。
このクエリには、次のようなレスポンスが返されます。
次のイメージは、Google Cloud コンソールを使用している場合に同じアクションを実行する方法を示しています。
お疲れさまでした
Vertex AI を使って以下のことを行えるようになりました。
- データセットをアップロードする
- AutoML でモデルをトレーニングする
- モデルのパフォーマンスを評価する
- トレーニングした AutoML モデルをエンドポイントにデプロイする
- 予測を取得する
Vertex AI のさまざまな部分の詳細については、Vertex AI のドキュメントをご覧ください。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。