ヤマムギ

growing hard days.

*

Amazon SageMaker Canvas Immersion Dayワークショップのエンドツーエンド機械学習の記録

   

Amazon SageMaker Canvas Immersion DayというAmazon SageMaker Canvasを試せるワークショップがあります。

その「エンドツーエンド機械学習」をやった記録です。
エンドツーエンドというだけあって、MLパイプラインをすべてSageMaker Canvasで実行するラボでした。

環境

SageMakerドメインとユーザープロファイルは、すでに構築済みで使用していたものを使いました。
ほぼセルフペースド ラボに書かれている内容と同じような環境です。

データセットの前処理

ラボに用意されている定期預金データをローカルにダウンロードしました。
定期預金データは、定期預金を紹介するキャンペーンのマーケティングに関係するデータです。
最後のy列に定期預金に加入したかどうかがyes/noの値です。
新しいデータでこのyを予測するモデルを作成します。

CanvasでData Wranglerをクリックして、[Import and prepare]でTabularを選択しました。

データソースにLocal uploadを選択して、ダウンロードした定期預金データをアップロードしました。

データプレビューが表示されましたので、[Import]をクリックしました。

まずGet data insightsをクリックしました。

Analysis type: Data quality and insights report
Analysis name: baseline
Probllemtype: Classification
Data size: Sampled dataset

上記の設定をして[Create]をクリックしました。

データ分析結果が表示されます。
ダウンロードボタンからレポートをダウンロードもできました。

警告が表示されていてわかりやすいです。
3点のMedium(中程度)の警告がありました。

0.0583%の行の重複があるようです。

monthの3月、9月、12月がレアなカテゴリーになっている。

pdaysの999という値が全体の96.3%になっている。

このままモデルの学習をした場合に、モデルの推論結果によくない影響を及ぼす可能性があるものが、警告としてピックアップされました。

データの分析が終わったので、前処理を設定します。
Data flowに戻って、Add transformを選択しました。

[Add transform]-[Manage columns]を選択しました。

Transform: Drop column
Columns to drop: emp.var.rate, cons.price.idx, cons.conf.idx, nr.employed, pdays, previous, poutcome, euribor3m

上記の設定で[Add]をクリックしました。
モデルトレーニングに不要な列を削除しました。

次に自然言語でのデータ分析と変換適用を試します。
Data flowに戻って、Chat for data prepを選択しました。

「”job” と “age” に関するボックスプロットを作成して」と入力して実行すると、ボックスプロットが表示されました。
職業別の年齢分布が表示されました。
retiredが高年齢ではあるが、いくつかのデータでは外れ値として、若い年齢のデータもあるようです。
studentは若い年齢層です。
ほかの職業はだいたい中ぐらいの年齢です。

「”age” と “duration” をそれぞれの標準偏差で割ってスケーリングして」と入力して実行すると、データを変換するためのPythonコードを生成してくれました。
[Add to steps]でデータ前処理のステップに追加しました。

モデルの学習

Data flowに戻って、Create modelを選択しました。

Dataset details: BankDataset
Model details: BankModel
Problem type: Predictive analysis
Target column: y

yがyesかnoかを予測するモデルを作成します。
[Export and create model]をクリックしました。

Buildタブに移動しました。
Targetになっているyではnoのデータが95.43%あるようです。
ここで、configure modelを選択しました。

モデルの学習時間を30分にしました。

Standard buildをクリックしました。

モデルの学習が始まりました。

モデルの評価

モデルの作成が完了すると、評価結果も表示されました。
89.597%の確率で正しく予測できるモデルになりました。
F1スコア(0-1、完璧なモデルは1)は0.603でした。
Column impactでは、予測にdurationが最も影響を与えていることがわかりました。
durationはキャンペーン電話の連絡秒数です。

Scoringタブにはサンキーダイアグラムがありました。
検証データでどのようにモデルが予測できたかを視覚化しています。

モデルがNoと予測した場合、96.06%が正解していました。
Noが正解のデータに対しては、モデルは92.052%でNoと予測しています。

Advanced meticsには混同行列があります。

適合率(Precision)-再現率(Recall)曲線もあります。

Model leaderboardでは複数の候補モデルの比較結果も表示できます。

推論の生成

PredictタブでSingle predictionを選択すると、1つの推論に対しての予測結果を確認できます。
durationが1の場合、Noとなりました。

durationを7にすると、Yesとなりました。

Batch predictionメニューもあるので、テスト用のデータセットでまとめて推論を実行できます。

デプロイ

Deployタブで[+ Create Deployment]ボタンをクリックすると、インスタンスタイプやインスタンス数を選択してエンドポイントをデプロイできます。

デプロイすると、モデル、エンドポイント設定、エンドポイントが作成されました。

右上のメニューからView Notebookを選択すると、ノートブックが確認できます。
ダウンロードして実行することもできます。

まさにエンドツーエンドの機械学習モデル作成を、ノーコードでできました。


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - AWS ,

ad

ad

  関連記事

S3 Intelligent-Tieringのオブジェクトの階層移動をCloudWatchメトリクスで確認

CloudWatchメトリクスの保存期間は現時点で15ヶ月(455日)なのでそろ …

Backlogの実績工数をAmazon QuickSightでの可視化 – 仕組み編

Backlogの実績工数をAmazon QuickSightで可視化してわかった …

RDS ProxyをAurora MySQLで

Lambda関数をたくさん同時実行してMySQLにアクセスしても大丈夫なようにR …

AWS Systems Manager Session ManagerでLinuxインスタンスのRun Asサポートを有効にする

AWS Systems Manager Session Managerの設定画面 …

Systems Manager パッチマネージャでベースラインを作成して適用する

ベースラインの作成 Systems Managerのパッチマネージャーでパッチベ …

ヤマムギ vol.7 AWSアカウント作成 & 最初の設定ハンズオン 手順

ヤマムギとは from Mitsuhiro Yamashita 「AWSではじめ …

EC2 Instance Connect エンドポイントの作成

このブログのSystems Managerは機能としてセッションマネージャーしか …

プライベートサブネットのEC2でセッションマネージャを使うようVPCエンドポイントを構成する

インターネットゲートウェイへのルートがないルートテーブルに関連付けられたプライベ …

CloudWatchアラームをAWS CLIでテスト

CloudWatchアラームをテストするコマンドです。 –state …

EC2にSystems MangerからCloudWatchエージェントをインストール

CloudWatchエージェント EC2の標準メトリクスでは収集できないメモリの …