機械学習モデルの自動作成

入門ガイド

概要

このチュートリアルでは、Amazon SageMaker Autopilot を使用して、機械学習 (ML) モデルを自動的に構築、トレーニング、調整し、モデルをデプロイして予測を行う方法について学びます。
 

Amazon SageMaker Autopilotは、データに基づいて最適な機械学習モデルを自動的に構築、トレーニング、および調整するのに役立つため、機械学習モデルを構築する手間を省きます。SageMaker Autopilot では、表形式のデータセットを提供し、予測するターゲット列を選択するだけです。SageMaker Autopilot はデータを調査し、問題のタイプに関連するアルゴリズムを選択し、モデルトレーニングのためにデータを準備し、さまざまなモデルをテストして、最もパフォーマンスの高いものを選択します。その後、候補モデルの 1 つをデプロイするか、さらに繰り返して予測品質を向上させることができます。

学習内容

このガイドでは、以下のことを行います。

  • SageMaker Autopilot を使用してトレーニング実験を作成する
  • トレーニング実験のさまざまなステージを調べる
  • トレーニング実験から最適なパフォーマンスのモデルを特定し、デプロイする
  • デプロイしたモデルを使用して予測を行う

前提条件

本ガイドを開始する前に、以下のものが必要です。

  • AWS アカウント: まだお持ちでない場合は、環境の設定入門ガイドに従って簡単な概要を確認してください。

 AWS の使用経験

初心者

 所要時間

45 分

 完了までのコスト

このチュートリアルにかかるコストの見積もりは、SageMaker の料金を参照してください。

 次のことが求められます

AWS アカウントにログインしている必要があります。

 使用するサービス

Amazon SageMaker Autopilot

 最終更新日

2022 年 7 月 12 日

ユースケース

このワークフローでは、合成的に生成された自動車保険の請求のデータセットを使用します。生の入力は、保険データの 2 つの表です: クレームの表と顧客の表です。クレームの表には、クレームが不正かそうでないかを示す不正列があります。このチュートリアルのために、私たちはデータセットの一部を選択しました。しかし、このチュートリアルの同じステップで、大きなデータセットを処理することができます。

 

ステップ 1: Amazon SageMaker Studio ドメインを設定する

AWS アカウントは、1 つの AWS リージョンにつき 1 つの SageMaker Studio ドメインのみを持つことができます。米国東部 (バージニア北部) リージョンに SageMaker Studio ドメインを既にお持ちの場合は、SageMaker Studio 設定ガイドに従って必要な AWS IAM ポリシーを SageMaker Studio アカウントにアタッチし、ステップ 1 をスキップして直接ステップ 2 に進みます。 

既存の SageMaker Studio ドメインがない場合は、ステップ 1 に進み、SageMaker Studio ドメインを作成し、このチュートリアルの残りの部分に必要なアクセス許可を追加する AWS CloudFormation テンプレートを実行します。

AWS CloudFormation スタックリンクを選択します。このリンクから AWS CloudFormation コンソールが開き、SageMaker Studio ドメインと studio-user というユーザーが作成されます。また、SageMaker Studio アカウントに必要なアクセス許可を追加します。CloudFormation コンソールで、右上に表示される [リージョン] が [米国東部 (バージニア北部)] であることを確認します。[スタック名] は [CFN-SM-IM-Lambda-Catalog] とし、変更しないようにします。このスタックは、すべてのリソースを作成するのに 10 分ほどかかります。

このスタックは、アカウントに既にパブリック VPC が設定されていることを想定しています。パブリック VPC がない場合、パブリック VPC の作成方法については、単一のパブリックサブネットを持つ VPC を参照してください。

[I acknowledge that AWS CloudFormation might create IAM resources] (私は、AWS CloudFormation が IAM リソースを作成する可能性があることを認めます) を選択し、[Create stack] (スタックの作成) を選択します。

[CloudFormation] ペインで、[スタック] を選択します。スタックが作成されると、スタックのステータスが [CREATE_IN_PROGRESS] から [CREATE_COMPLETE] に変更されるはずです。

CloudFormation コンソールの検索バーに [SageMaker Studio] と入力し、[SageMaker Studio] を選択します。

SageMaker コンソール右上にある [リージョン] のドロップダウンリストから、[米国東部 (バージニア北部)] を選択します。[Launch app] (アプリケーションの起動) で [Studio] を選択し、studio-user プロファイルを使用して SageMaker Studio を開きます。
 

ステップ 2: 新しい SageMaker Autopilot 実験の開始

機械学習 (ML) プロジェクトでは、多数の候補モデルを開発およびテストすることが重要です。Amazon SageMaker Autopilot は、さまざまなモデル候補を提供することで支援を行い、データに基づいて自動的に最適なモデルを選択します。このステップでは、金融サービスのマーケティングキャンペーンから成功を予測するために、SageMaker Autopilot 実験を設定します。このデータセットは、大手金融機関が預金証書の加入を促進するために実施したマーケティングキャンペーンを表しています。

新しい SageMaker Autopilot 実験を開始するには、+ アイコンをクリックして、新しいランチャーウィンドウを表示します。ランチャーウィンドウで、[ML tasks and components] (機械学習タスクとコンポーネント) のところまでスクロールダウンします。[新しいオートパイロット実験] の [+] アイコンをクリックします。

次に、実験に名前を付けます。[実験名] ボックスをクリックし、名前として autopilot-experiment と入力します。

 

次に、S3 にステージングされているデータに実験を接続します。[S3 バケットの場所を入力] のボックスをクリックします。[S3 バケットのアドレス] ボックスに、S3 パスの s3://sagemaker-sample-files/datasets/tabular/uci_bank_marketing/bank-additional-full.csv を貼り付けます。

マニフェストファイルオプションを [オフ] に設定したままにします。ターゲットドロップダウンで、モデルが予測しようとするターゲットの特徴量として [y] を選択します。

[出力データの場所 (S3 バケット)] の表で、独自の S3 バケットを選択します。[データセットディレクトリ名] フィールドに、sagemaker/tutorial-autopilot/output と入力します。実験が完了したら、ここに出力データが保存されます。

[自動デプロイ] オプションをオンにし、[自動デプロイエンドポイント] フィールドを空白にします。これにより、モデルが API エンドポイントとして自動的にデプロイされ、名前が割り当てられます。

次に、問題のタイプ、実験の完了、実行タイムの詳細、IAM アクセス、セキュリティ、暗号化などの詳細を制御する、オプションの詳細設定が多数存在します。実行時間ボタンをクリックすると、オプションの設定が表示されます。

このチュートリアルでは、[Max candidates] (最大候補) 数を [250] から [5] に減らします。こうすることで、より少ないモデルをより速く実行することができます。完全な実験は、モデルを真に最適化するための最良のアプローチですが、完了するまでに何時間もかかることがあります。このチュートリアルでは、オプションの設定をそのままにします。

[実験の作成] ボタンをクリックして、SageMaker Autopilot 実験の第一段階を開始します。SageMaker Autopilot は、実験の各フェーズを実行し始めます。実験ウィンドウでは、前処理、候補定義、特徴量エンジニアリング、モデルチューニング、説明可能性、インサイトの各フェーズでの進捗を確認することができます。

[実験の作成] ボタンをクリックして、SageMaker Autopilot 実験の第一段階を開始します。SageMaker Autopilot は、実験の各フェーズを実行し始めます。実験ウィンドウでは、前処理、候補定義、特徴量エンジニアリング、モデルチューニング、説明可能性、インサイトの各フェーズでの進捗を確認することができます。「最適なモデルをデプロイしますか?」というポップアップ通知が表示された場合は、[はい] をクリックします。

SageMaker Autopilot のジョブが完了すると、候補モデル、候補モデルのステータス、目的値、F1 スコア、および精度を示すレポートにアクセスできます。SageMaker Autopilot は自動的にエンドポイントをデプロイします。

ステップ 3: モデルパフォーマンスの解釈

実験が完了し、モデルができたので、次のステップは、そのパフォーマンスを解釈することです。ここでは、SageMaker Autopilot を使用してモデルのパフォーマンスを分析する方法を学びます。

SageMaker Autopilot の実験が完了したので、ランキング上位のモデルを開いて、モデルのパフォーマンスとメタデータの詳細を取得することができます。モデルのリストから、最初のモデルをハイライトして右クリックし、モデルオプションを表示させます。[モデルの詳細で開く] をクリックし、モデルのパフォーマンスの統計を確認します。

新しいウィンドウで、[説明可能性] をクリックします。最初に表示されるビューは、[Feature Importance] (特微量重要度) と呼ばれ、データセットの各インスタンスにおける各特微量の SHAP 値の集計を表しています。特微量重要度スコアは、データセット内でどの特微量が最も予測に影響を与える傾向があるかを示すため、モデル説明可能性の重要な部分です。このユースケースでは、顧客の期間または在籍および雇用変動率が、モデルの結果の原動力となる上位 2 つのフィールドです。

ここで、[パフォーマンス] タブをクリックします。精度、正確さ、再現性など、モデルのパフォーマンスに関する詳細情報が表示されます。また、モデルパフォーマンスを解釈し、モデルの追加調整が必要かどうかを判断することができます。

次に、モデルパフォーマンスをさらに説明するための可視化が提供されます。まず、混同行列を見てください。混同行列は、モデルラベルが予測されるクラスと真のクラスの間でどのように分かれるかを理解するために、一般的に使用されます。この場合、対角要素は正しく予測されたラベルの数を示し、対角要素から外れた部分は誤分類されたレコードを示します。混同行列は、偽陽性と偽陰性による誤分類を分析するのに有効です。

次に、正確さ対再現性の曲線を見てください。この曲線は、ラベルを確率閾値として解釈し、モデルの正確さと再現性のさまざまな確率閾値として発生するトレードオフを示しています。SageMaker Autopilot は、この 2 つのパラメータを自動的に最適化し、最適なモデルを提供します。

次に、受信者動作特性 (ROC、Receiver Operating Characteristic) と書かれた曲線を見てください。この曲線は、さまざまな潜在的確率閾値における真陽性率と偽陽性率の関係を示しています。対角線はランダムな推測に基づく仮想のモデルを表しています。この曲線がグラフの左上に寄るほど、モデルのパフォーマンスは良くなります。

破線は予測値が 0 のモデルを表し、これはしばしば null モデルと呼ばれます。null モデルは、0/1 のラベルをランダムに割り当て、ROC 曲線の下の面積は .5 となり、50% の確率で正しいことを表しています。

次に、[アーティファクト] タブをクリックします。ここには、特徴量エンジニアリングコード、入力データの場所、説明可能性のアーティファクトなど、SageMaker Autopilot 実験のサポートアセットが表示されます。

最後に、[ネットワーク] タブをクリックします。ネットワークの分離とコンテナトラフィックの暗号化に関する情報を見つけることができます。

ステップ 4: SageMaker のモデルエンドポイントをテストする

モデルの詳細を確認した後、エンドポイントをテストします。

+ アイコンをクリックして、新しい Python ノートブックを表示します。カーネルとして [Python3] を選択します。最初のセルに、以下のコードをコピーして貼り付けます。このコードでは、ペイロードを作成し、モデルのエンドポイントにリクエストを送信し、レスポンスを解析します。

リクエストを送信する場所を知るために、モデルエンドポイントの名前を調べます。左ペインで、SageMaker リソースアイコンをクリックします。SageMaker リソースペインで、[エンドポイント] を選択します。このチュートリアルの最初に作成した実験名に関連付けられているエンドポイントをクリックします。すると、[エンドポイントの詳細] ウィンドウが表示されます。エンドポイント名を記録し、Python 3 ノートブックに戻ります。

次のコードスニペットをコピーしてノートブックのセルに貼り付け、 シフトとエンターキーを押して現在のセルを実行します。このコードでは、環境変数 ENDPOINT_NAME を設定し、推論を実行します。コードが完了すると、モデルラベルと関連する確率スコアで構成される結果が表示されます。
import os
import io
import boto3
import json
import csv

#: Define the endpoint's name.
ENDPOINT_NAME = 'autopilot-experiment-6d00f17b55464fc49c45d74362f284ce'
runtime = boto3.client('runtime.sagemaker')

#: Define a test payload to send to your endpoint.
payload = {
    "data":{
        "features": {
            "values": [45,"blue-collar","married","basic.9y",'unknown',"yes","no","telephone","may","mon",461,1,999,0,"nonexistent",1.1,93.994,-36.4,4.857,5191.0]
        }
    }
}

#: Submit an API request and capture the response object.
response = runtime.invoke_endpoint(
    EndpointName=ENDPOINT_NAME,
    ContentType='text/csv',
    Body=str(payload)
)

#: Print the model endpoint's output.
print(response['Body'].read().decode())

おめでとうございます。 SageMaker Autopilot を使用して、機械学習モデルを自動的にトレーニングしてデプロイする方法を学びました。

ステップ 5: AWS リソースをクリーンアップする

意図しない料金が発生しないように、使用しなくなったリソースは削除することがベストプラクティスです。

ステップ 1 で CloudFormation テンプレートを実行して新しい SageMaker Studio ドメインを作成した場合は、次のステップに進み、CloudFormation テンプレートで作成したドメイン、ユーザー、リソースを削除してください。

CloudFormation コンソールを開くには、AWS コンソールの検索バーに [CloudFormation] と入力し、検索結果から [CloudFormation] を選択します。

CloudFormation ペインで、[スタック] を選択します。ステータスドロップダウンリストから、[アクティブ] を選択します。スタック名で、[CFN-SM-IM-Lambda-Catalog] を選択し、スタックの詳細ページを開きます。

CFN-SM-IM-Lambda-Catalog スタックの詳細ページで、[削除] を選択して、ステップ 1 で作成したリソースと一緒にスタックを削除します。

まとめ

おめでとうございます。 これで、機械学習モデルを自動的に作成するチュートリアルが終了しました。

SageMaker Autopilot を使用して、モデルを自動的に構築、トレーニング、調整し、最適な候補モデルをデプロイして予測を行うことができました。

このページは役に立ちましたか?

次のステップ

Amazon SageMaker Autopilot の詳細を学ぶ

ウェブページを訪問する
詳細はこちら »

SageMaker Autopilot ドキュメントを見る

Amazon SageMaker Autopilot の開始方法をご説明
続きを読む »
その他のハンズオンチュートリアルを探す
機械学習を活用する方法を学ぶためのその他のハンズオンチュートリアルを探す
使用を開始する »