Amazon Web Services ブログ
Amazon SageMaker Canvas でノーコード機械学習を行うために Google Cloud Platform BigQuery からデータをインポートする
現代のクラウド中心のビジネス環境では、データが複数のクラウドやオンプレミスのシステムに分散していることが多くあります。この断片化は、お客様が機械学習 (ML) イニシアチブとして、データを統合し、分析する作業を複雑にしています。
本稿では、さまざまなクラウド環境の中でも Google Cloud Platform (GCP) BigQueryに焦点を当て、データソースを移動することなく、データを直接抽出するアプローチをご紹介します。これにより、クラウド環境間でデータ移動の際に発生する複雑さとオーバーヘッドを最小限に抑えることができるため、組織は ML プロジェクトで様々なデータ資産にアクセスし、活用できるようになります。
今回焦点を当てるのは、Amazon Athena Federated Query を使用して、GCP BigQuery からデータを抽出し、Amazon SageMaker Data Wrangler を使用してデータ準備を行い、準備されたデータをノーコードの ML インターフェースである Amazon SageMaker Canvasで ML モデルを構築する、という一連のプロセスです。
SageMaker Canvas では、ビジネスアナリストは、コーディングや幅広い機械学習の経験がなくても、50 を超えるソースのデータにアクセスしてインポートし、自然言語と 300 を超える組み込みの変換を使用してデータを準備し、高精度のモデルを構築してトレーニングし、予測を生成し、モデルを本番環境にデプロイすることができます。また、コネクタとして用意されていない場合も、Amazon Athena などのサービスを通じて、データを活用することもできます。今回は、コネクタを通じて利用できる Amazon Athena を活用して、GCP BigQuery へライブクエリを行う方法についてご紹介します。
ソリューション概要
ソリューションでの、主なステップは以下の 2 点です。
- CGP BigQuery から Federated Query を Amazon Athena でセットアップし、Athena から直接 GCP BigQuery でライブクエリを実行できるようにします。
- Athena を中継し、BigQuery から SageMaker Canvas にデータをインポートします。
データソースのクエリ結果が SageMaker Canvas へインポートされた後は、ノーコードのインターフェースを使用して ML モデルを構築し、インポートされたデータに基づいて予測を生成できるようになります。
SageMaker Canvas を使用すると、コードを書かずに初期データ準備のルーチンを作り、正確な予測を生成することができます。ただし、ML の要件が進化したり、より高度なカスタマイズが必要になった場合は、ノーコード環境からコードファーストのアプローチに移行しなくてはならなくなる可能性があります。SageMaker Canvas と Amazon SageMaker Studio を統合すると、本番規模のデプロイのための、データ準備ルーチンの運用を実現できます。詳細については、「Seamlessly transition between no-code and code-first machine learning with Amazon SageMaker Canvas and Amazon SageMaker Studio」を参照してください。
以下のアーキテクチャ概要は、AWS サービスを使用して GCP BigQuery データウェアハウスにシームレスにアクセスし、SageMaker Canvas に統合して ML モデルを構築およびデプロイする方法を示しています。
ワークフローには以下のステップが含まれています。
- SageMaker Canvas インターフェース上で、ユーザーは GCP BigQuery データウェアハウスに対して実行する SQL クエリを作成します。SageMaker Canvas はこのクエリを Athena に受け渡します。Athena は 中継として機能し、SageMaker Canvas と BigQuery 間の通信を促します。
- Athena は、Athena Google BigQuery connector を使用します。Athena Federated Query は、AWS Lambda 関数を利用してデータソースに接続し、クエリを実行する機能です。この Lambda 関数は、GUI 上で構成が可能です。また、必要な BigQuery の認証情報 (service account private key ) を取得します。
- 認証後は、Lambda 関数は、取得した認証情報を使用して BigQuery へクエリし、目的の結果セットを取得します。さらにこの結果セットをパースし、Athena に返送します。
- Athena は、BigQuery からクエリされたデータを SageMaker Canvas へ返します。ノーコードインターフェース上で、ML モデルの学習や開発にそのデータを利用することができるようになります。
このソリューションには、次のメリットがあります。
- シームレスな統合 – SageMaker Canvas を使用すると、BigQuery などのクラウド データウェアハウスを含む、様々なソースからのデータを、ノーコードの ML 環境へ直接統合し、使用できるようになります。この統合で、追加のデータ移動や複雑な統合が不要になります。データエンジニアリング タスクのオーバーヘッドがなくなるため、ML モデルの構築とデプロイに集中できるようになります。
- セキュアなアクセス – Secrets Manager を使用すると、BigQuery の認証情報を安全に保存し、アクセスできるようになるため、ソリューション全体のセキュリティが強化されます。
- スケーラビリティ – Lambda 関数のサーバレスの性質と、Athena の大規模データセットを処理する能力により、増大するデータ量に対応できるようになります。さらに、複数のクエリを使って、データをソースに対して並列に、パーティション分割することができます。
次のセクションでは、技術的な実装の詳細を詳しく説明し、このソリューションを順に説明します。
データセット
本稿では、ノーコード ML を行うために SageMaker Canvas にデータをインポートする方法の例を示しています。この例では、GCP BigQuery から Athena を介して、データをインポートする方法を示しています。
データセットとしては、通信携帯電話キャリアのデータセット (synthetic dataset) を使用します。このサンプルデータセットは、5,000 件のレコードが含まれ、各レコードでは、顧客プロファイルとして 21 個の属性を使用しています。データセットの Churn 列は、顧客が解約したかどうか (true/false) を示します。この Churn 属性は、ML モデルが予測するターゲット変数です。
前提条件
以下の前提条件のステップを完了させてください。
- GCP の service account と service account key を作成します。
- private key を JSON ファイルでダウンロードします。
- JSON ファイルを Secrets Manager へ保存します。
- Secrets Manager コンソール上で、ナビゲーションペインの「シークレット」を選択し、「新しいシークレットを保存する」を選択します。
- シークレットのタイプは「その他のシークレットのタイプ」を選択します。
- JSON ファイルの内容をコピーし、「キー/値のペア」の「プレーンテキスト」タブへ入力します。
- SageMaker ドメインをまだ作成していない場合、ユーザープロファイルと共に作成してください。手順については「Quick setup to Amazon SageMaker」を参照してください。
- 以下のリソースに対して、SageMaker ドメインのユーザープロファイルの AWS Identity and Access Management (IAM) ロールに、
glue:GetDatabase
とathena:GetDataCatalog
の権限が付与され、Athena を呼び出せるようになっていることを確認します。既定では以下の権限は付与されていないため、必要に応じて付与してください。設定には、次の例を参照してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"glue:GetDatabase",
"athena:GetDataCatalog"
],
"Resource": [
"arn:aws:glue:*:<AWS account id>:catalog",
"arn:aws:glue:*:<AWS account id>:database/*",
"arn:aws:athena:*:<AWS account id>:datacatalog/*"
]
}
]
}
Athena データソースコネクタを登録する
以下の Athena data source connector のセットアップを完了させてください。
- Athena コンソール上で、ナビゲーションペインの「データソース」を選択します。
- 「データソースの作成」を選択します。
- 「データソースを選択」ページで、「Google BigQuery」を選択し、「次へ」を選択します。
- 「データソースの詳細を入力」ページで、以下の情報を入力します。
- 「データソース名」で、任意の名前を入力します。
- 「説明」で、オプションとして説明を入力します。
- 「Lambda 関数」で、接続の設定を行うために「Lambda 関数の作成」をクリックします。
- Lambda 関数の作成画面の「アプリケーションの設定」で、以下の情報を入力します。
- 「SpillBucket」で、Lambda 関数のレスポンスサイズ制限を超えるデータを保存するための、アカウント内の S3 バケットの名前を入力します。
- 「GCPProjectID」で、GCP の project ID を入力します。
- 「LambdaFunctionName」で、作成した Lambda 関数の名前を入力します。
- 「SecretNamePrefix」で、Secrets Manager で保存した GCP 認証情報が含まれるシークレットの名前を入力します。
- 「デプロイ」を選択します。「データソースの詳細を入力」ページに戻ります。
- 「接続の詳細」セクションで、「Lambda 関数」で更新アイコンを押します。
- 先ほど作成した Lambda 関数を選択します。Lambda 関数の ARN が表示されます。
- オプションとして、「タグ」で、データソースに紐づける「キー/値」のペアを追加します。タグについて詳細は「Tagging Athena resources」を参照してください。
- 「次へ」を選択します。
- 「確認と作成」ページで、データソースの詳細を確認し「データソースを作成」を選択します。
データソースのページでの「データソースの詳細」セクションでは、新しいコネクタの情報が表示されます。Athena クエリで、そのコネクタを利用することができます。クエリでのデータコネクタを利用する事について、詳細は「Running federated queries」を参照してください。
Athena から クエリするには、Athena SQL エディタを開き、先ほど作成したデータソースを選択してください。BigQuery のデータセットに対して、ライブクエリを行うことができます。
Athena をデータソースとして SageMaker Canvas に接続する
Athena からデータをインポートするために、以下のステップを完了させてください。
- SageMaker Canvas コンソールで、ナビゲーションペインの「Data Wrangler」を選択します。
- 「Import data and prepare」を選択します。
- 「Tabular」を選択します。
- データソースとして、「Athena」を選択します。
SageMaker Canvas の SageMaker Data Wrangler では、データの準備、特徴量エンジニアリング、分析を行うことができます。コーディングをほとんど使わず、またはノーコードで、 SageMaker Data Wrangler データ準備フローを ML ワークフローに統合することができます。データの前処理、特徴量エンジニアリングを簡素化し、合理化します。
- 左ペインの AWSDataCatalog で Athena テーブルを選択し、テーブルを右ペインへ ドラッグ & ドロップ します。
- 「Edit in SQL」を選択し、次の SQL クエリを入力します。
SELECT state, account_length, area_code, phone, intl_plan, vmail_plan, vmail_message, day_mins, day_calls, day_charge, eve_mins, eve_calls, eve_charge, night_mins, night_calls, night_charge, intl_mins, intl_calls, intl_charge, custserv_calls, churn FROM "bigquery"."athenabigquery"."customer_churn" order by random() limit 50 ;
上記のクエリでは、
bigquery
は Athena で作成されたデータソース名、athenabigquery
はデータベース名、customer_churn
はテーブル名です。 - データセットの準備のため「Run SQL」を選択します。データが十分であれば、「Import」を選択します。
ML を使用する場合、データセットをランダム化、またはシャッフルすることが重要です。数百万または数十億のデータポイントにアクセスできる場合でも、データセットの全量が必要ない場合は、ランダムにサンプリングすることで、学習用のサブセットを作成できます。データをシャッフルして準備したら、データの準備、特徴量評価、モデルの学習、学習済みモデルのホスティングという、反復的なプロセスを開始できます。
- SageMaker Data Wrangler を使うと、データを処理したり、ML ワークフローに適した場所にエクスポートできます。例えば、変換されたデータを、SageMaker Canvas データセットとしてエクスポートし、そこから ML モデルを作成できます。
また、ML モデル作成に利用する学習用のデータセットと別に、推論評価用のデータセットを分けて保存しておくことをお勧めします。その場合、SageMaker Data Wrangler の組み込みのデータ変換「Split data」を Steps の一つとして追加すると、容易に分割を行うことができます。
- データをエクスポートした後、「Create model」を選択して、データから ML モデルを作成します。
データは、Athena の特定のテーブルからデータセットとして SageMaker Canvas にインポートされます。これで、このデータセットを使用してモデルを作成できます。
モデルの学習
データがインポートされると、SageMaker Canvas の「Datasets」ページに表示されます。この段階になると、モデルを構築することができます。そのためには、次の手順を行ってください。
- データセットを選択してから、「Create a model」を選択します。
- 「Model name」で、任意のモデル名を入力してください。(本稿では
my_first_model
)SageMaker Canvas では、予測分析、画像分析、テキスト分析のモデルを作成できます。 - 今回は顧客が解約したかどうかを分類したいため、「Problem type」で「Predictive analysis」を選択します。
- 「Create」を選択します。
「Build」ページで、欠損値の割合やデータのモードなど、データセットに関する統計情報を確認できます。
- 「Target column」で、予測したい列を選択します。(本稿では
churn
)SageMaker Canvas では、予測を生成するために、2 種類のモデルが提供され。Quick build は、制度よりも速度が優先され、2 〜 15 分でモデルが提供されます。Standard build では、速度よりも精度が優先され、30 分 〜 2 時間でモデルが提供されます。 - この例では、「Quick build」を選択します。
モデルの学習後は、モデルの精度を分析できます。
「Overview」タブでは、列の影響、つまり、ターゲット列を予測する時の、各列の推定重要度が表示されます。この例では、
Night_calls
列が顧客が解約するかどうかを予測する上で最も大きな影響を与えています。この情報は、マーケティングチームが顧客離れを減らすための対策を講じる際の、洞察を得るのに役に立ちます。例えば、CustServ_Calls
が低い場合も高い場合も、顧客離れの可能性が高いことがわかります。マーケティングチームは、これらの学びに基づいて、顧客離れを防ぐための対策を講じることができます。例えば、Web サイトに詳細な FAQ を作成して、カスタマーサービスへの問い合わせを減らしたり、FAQ に関する顧客向け教育キャンペーンを実施してエンゲージメントを維持することが挙げられます。
予測を生成する
「Predict」タブでは、バッチ予測と単一予測の両方を生成できます。バッチ予測を生成するには、以下の手順を実施します。
- 予測を生成するために、サンプルの inference dataset をダウンロードします。
- バッチ予測のテストを行うために、「Batch prediction」を選択します。SageMaker Canvas を使用すると、手動で、またはスケジュールに従って自動的にバッチ予測を生成できます。スケジュールに従って、バッチ予測を自動化する方法は、「Manage automations」を参照してください。
- 本稿では、「Manual」を選択します。
- 先ほどダウンロードしたファイルをアップロードします。
- 「Generate prediction」を選択します。
数秒後に予測が完了すると、「View」を選択して、予測を確認することができます。
必要に応じて、「Download」を選択して、すべてのアウトプットを含む CSV ファイルをダウンロードすることができます。SageMaker Canvas は、データの各行の予測と、予測が正しい確率を返します。
オプションとして、モデルをエンドポイントにデプロイして予測をこなうことができます。詳細については「Deploy your models to an endpoint」を参照してください。
クリーンアップ
将来の不要な請求を避けるために、SageMaker Canvas で作業が完了したら、Canvas アプリケーションからログアウトしてインスタンスを終了するか、ワークスペースインスタンスを自動終了するようにアプリケーションを設定することをお勧めします。詳細な情報は、「log out of SageMaker Canvas」を参照してください。
- SageMaker Canvas からのログアウト
- Canvas からログアウトしても、モデルとデータセットは影響を受けませんが、クイックビルドタスクをキャンセルできます。ログアウトすると、Canvas は別のタブで再起動するよう指示します。クイックビルド実行中の場合は、アプリケーション再起動が完了するまで、ビルドが中断される可能性があります。ログアウトしても、標準ビルドは続行されます。
- Canvas アプリケーションからログアウトするには、「Log out」アイコンを選択してください。
- SageMaker Canvas を自動的にシャットダウンする
- アクティブな Canvas アプリケーションをシャットダウンするスケジュールを作成するか、アイドル状態になったらすぐにシャットダウンするオートメーションを作成することができます。ソリューションの詳細は、ブログ「自動シャットダウンソリューションを使ってAmazon SageMaker Canvas のコストを最適化する方法」を参照してください。
まとめ
本稿では、Athena Federated Query とサンプルデータセットを使用して、BigQueryからデータを抽出するソリューションを紹介しました。次に、抽出したデータを使用して、ノーコードで SageMaker Canvas で ML モデルを構築し、解約リスクがある顧客を予測しました。SageMaker Canvas を使用すると、ビジネスアナリストはノーコードのインターフェースを通じて ML モデルを簡単に構築、およびデプロイできるため、組織全体で ML を民主化することができます。これにより、高度な分析と ML の力を活用して、専門的な技術スキルの必要なく、ビジネスインサイトとイノベーションを推進できます。
より詳しい情報は、「Query any data source with Amazon Athena’s new federated query」と「Import data from over 40 data sources for no-code machine learning with Amazon SageMaker Canvas」を参照してください。もし、SsageMaker Canvas についてよく知らない場合は、「Build, Share, Deploy: how business analysts and data scientists achieve faster time-to-market using no-code ML and Amazon SageMaker Canvas」を参照してください。
本稿は、Import data from Google Cloud Platform BigQuery for no-code machine learning with Amazon SageMaker Canvas の翻訳となります。
翻訳は、ソリューションアーキテクト 加藤 菜々美が担当しました。
著書について
Amit GautamAmit Gautam は、英国のエンタープライズ顧客のクラウド導入をサポートする AWS シニアソリューションアーキテクトであり、ビジネス成果の達成に役立つアーキテクチャに関するアドバイスやガイダンスを提供しています。 |
|
Sujata SinghSujata Singh は、英国のエンタープライズ顧客のクラウド導入をサポートする AWS シニアソリューションアーキテクトであり、ビジネス成果の達成に役立つアーキテクチャに関するアドバイスやガイダンスを提供しています。 |