Amazon Redshift ML で機械学習モデル構築 #1 インフラ構築
はじめに
サンプルデータを AWS Redshift にインポートし、Amazon Redshift ML で機械学習モデルを構築するまでの流れです。作成したばかりの AWS アカウントを想定しているので、周辺環境の設定内容で引っかかった方はご参照ください。
第1回の本記事は AWS環境の構築手順、第2回は機械学習モデルを作成するまでの手順をまとめました。
ターゲット
- SQL をメインで利用するデータエンジニア/アナリスト
- Amazon Redshift を利用
利用サービス
Amazon SageMaker Autopilot
- 自動機械学習 (AutoML) プロセスの主要なタスクを自動化
- 最適なアルゴリズムを選択し、モデルのトレーニングとチューニングが容易
- 最低料金や初期費用なし
- 回帰、二項分類、複数クラスの分類をサポート
Amazon Redshift ML
- SQL を利用して Redshift のデータから機械学習モデルをデプロイ
- 予測結果も Redshift から SQL で取得可能
- バックエンドでは Amazon SageMaker Autopilot が動作
利用データ概要
本記事ではこちらのウェブサイトの情報とデータを利用します。
イーコマースのログデータ元に組み上げられた単一の CSV データです。
背景
- 顧客をランダムに3つに分け、販促キャンペーンのメールを配信
- メンズ商品のキャンペーン
- レディース商品のキャンペーン
- 配信なし
- ウェブサイトの訪問履歴や購入金額をトラッキング
- トラッキングの期間はキャンペーンメール配信から2週間
目的
無作為にキャンペーンを打つのでは販促費の無駄になります。よって、
- 普段は購入する意欲は高くない
- 施策を打てば購入する可能性が大幅に上がる
といったユーザーに絞って販促費を投入できれば ROI が最大化できるはずです。
その手法の一つに Uplift Modeling があります。
本記事では Uplift Modeling のロジックへの組み込みを想定し、特定のキャンペーンを打つべきユーザーを予測する機械学習モデルを作成します。なお、モデル作成には2020年12月にパブリックプレビューになった Amazon Redshift ML を用います。
データセット
- 過去12か月以内に物品を購入した64,000人の顧客情報
-
ダウンロードURL
- Windows であれば、リンクを右クリック > リンク先を保存
スキーマ
カラム名 | データ型 | 概要 |
---|---|---|
Recency | int4 | 前回の購入から経過した月数 |
History_Segment | varchar(256) | 過去1年間の購入金額の区分 |
History | float (8) | 過去1年間の購入金額 |
Mens | boolean | 過去に男性向け製品を購入したかどうか |
Womens | boolean | 過去に女性向け製品を購入したかどうか |
Zip_Code | varchar(256) | 顧客の居住カテゴリ。Urban, Sunurban, Rural |
Newbie | boolean | 過去1年で新規顧客になったかどうか |
Channel | varchar(256) | 過去に顧客が購買した経路 |
Segment | varchar(256) | 受け取ったキャンペーンメールの種類。Mens E-mail, Womens E-mail, No E-mail |
Visit | boolean | 過去2週間にウェブサイトを訪問したかどうか |
Conversion | boolean | 過去2週間に購買に至ったかどうか |
Spend | float (8) | 過去2週間の購入金額 |
AWS 環境構築
IAM role
Redshift ML 経由で SageMaker Autopilot を操作できるようにするため、対応する権限を設定します。
画面下部の Reedshift - Customiable を選択
作成したロールを開き、アクセス権限のタブで AmazonS3ReadOnlyAccess と AmazonSageMakerFullAccess のポリシーアタッチ (ベストプラクティスに則って最小権限で実装する場合は本記事の下部のURL参照)
信頼関係のタブで、redshift と sagemaker を追加
TrustedEntity
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"redshift.amazonaws.com",
"sagemaker.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
S3
今回はシンプルにするため、以下の用途をカバーする単一S3バケットを構築します。
- Redshift テーブル用データの保存
- Redshiftml Amazon S3 からデータを読み込むための Amazon ML アクセス許可の取得
- Amazon S3 に予測を出力するために Amazon ML のアクセス許可を得る
アクセス許可 > バケットポリシーと進み、Amazon Redshift と SageMaker Autopilot が利用できるように以下の通りバケットポリシーを変更。先ほど作成したロールをプリンシパルに設定
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "{iam-role-arn}"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": "{s3-arn}/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "{iam-role-arn}"
},
"Action": "s3:ListBucket",
"Resource": "{s3-arn}"
}
]
}
実行権限が大きいので本番デプロイ時は以下を参照、権限を絞ることをお勧めします。
Redshift クラスタ
構築に iam role arn
と S3 ARN
が必要です。
設定 > サブネットグループと進み、任意で名称を設定、VPC のすべてのサブネットを追加、クラスターサブネットグループの作成をクリック
クラスタ識別子を任意で入力。dc2.large が最も安価なクラスタだが Redshift ML は対応していないので注意 (2021年3月12日時点)
Database Name、Port、Master User Name はデフォルト値でOK。Password を任意で入力。Master USer Name
と Password
を控えておく。
クラスタのアクセス許可から先ほど作成した IAM ロールの iam role arn
を選択、「IAM ロールを追加」を選択
今回ローカルの SQL クライアントからクエリをたたく。追加設定のデフォルトを使用を解除し、ネットワークとセキュリティの項目で、パブリックアクセスの有効化にチェックを入れる
メンテナンスタブ > メンテナンストラックでプレビューの sql_preview を選択。ここまで設定が完了したらクラスタの作成へと進む
VPC
Redshift クラスタをインターネット経由で操作できるよう、ネットワークを構成します。
先ほど作成したクラスタのプロパティから、VPC セキュリティグループと進む
デフォルトだと下記の状態。インバウンドルール > インバウンドルールを編集
ルールの追加 > タイプを Redshift に選択 > マイIP と進み、ルールを保存をクリック。この作業でローカル環境から Redshift への接続が通るようになる。
備考:Redshift クラスタの VPC サブネットのルートテーブルで、送信先 0.0.0.0/0 が blackhole になっている場合、SQL クライアントから接続する際、Connection Timeout が発生する。ルートの編集と進み、該当設定を再設定する
インターネットゲートウェイ
インターネットに接続するためのゲートウェイがない場合は以下手順で構築します。
Redshift クラスタのプロパティから VPC と進み、別タブで開いておく
VPC ダッシュボード > インターネットゲートウェイ > インターネットゲートウェイの作成
作成したインターネットゲートウェイを Redshift クラスタが稼働しているのVPCにアタッチ
データのアップロード
ダウンロードした CSV データを S3 にアップロード、S3 URI
をコピーしておく
今回は SQL クライアントに DBeaver を用いる。
DBeaber をインストールしたら、新しい接続を選択、Redshift へと進む
JDBC ホスト、Master USer Name
、 Password
を入力し、終了をクリック
JDBC ホスト名は、JDBC URL
から dbc:redshift://
と :5439/dev
を除いた文字列となるので注意
まとめ
以下第2回の記事です
参考リンク
Amazon Redshift ML の紹介記事です。
公式ドキュメント
Author And Source
この問題について(Amazon Redshift ML で機械学習モデル構築 #1 インフラ構築), 我々は、より多くの情報をここで見つけました https://qiita.com/Catetin0310/items/f3fbdcd7d2072875ac3b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .