SageMaker Canvasでの機械学習を試してみた

SageMaker Canvasがあればベッドでゴロゴロしながらでも機械学習ができます

こんにちは、小澤です。

常日頃からSageMaker Studioを開いてコードで実装してるし、 GUIで機械学習ができる機能は私には関係ないかな?と思ってた時代がありました。

そんなある日、ひょんなことからSageMaker Canvasデビューする日がやってきました。 そこで、我々は彼の地へと足を踏み入れてみることにしたのです。

なお、ここから足を踏み入れることが可能になっています。

SageMaker Canvasを構成する2つの要素

SageMaker Canvas(以下Canvas)には2つの要素があります。

  • モデル
  • データセット

名称はシンプルでわかりやすいですね。 データセットにデータを登録することでCanvasから利用可能な状態にして、それを使ってモデルを作成するという流れになります。

データセットを使ってみる

左メニューから「Datasets」を選択することでデータセットの一覧が表示されます。

最初はここに何も表示されていない状態となりますが、右上の「Import」を使って取り込んだものがここに表示されます。

データのインポートは以下のデータソースから選択できるようです。

  • ファイルのアップロード
  • S3のファイルを指定
  • Redshiftに接続
  • Snowflakeに接続

今回はS3にあるファイルを選択してみます。 ファイルの選択は下部にある一覧からバケット→プレフィックスを掘り下げていって選択できます。 また、チェックボックスではなくファイル名自体を選択すると、プレビュー表示もできます。

ファイルの選択が済んだのちは、右下の「Import Data」を押すことでインポートの処理が実行されます。 インポートしたデータは「Datasets」から確認できる一覧に表示され、StatusがReadyになると利用できます。

また、今回は利用しませんが、「Import」の左にある「Join Data」を使うことでインポート済みのデータセットを結合して新たなデータセットを作成することも可能です。 結合の際には以下のようなことが可能です。

  • 対象のデータセットをドラッグアンドドロップで選択
  • キーと内部結合・外部結合といった条件を指定
  • 結合した結果のデータから利用する列のみを選択したり、列名をリネームする

インポート済みのデータはこの後のモデル作成で選択できる状態となります。

モデルを作成してみる

モデル作成はメニューの「Models」から行います。

こちらもデータセットと同様、既に作成したものが一覧に表示されており「New model」で新規作成が可能です。

新規作成すると、以下のようなダイアログが表示されます。 ここでモデル名を指定するだけでモデルの枠が作成されます。

これだけで一覧にモデルが表示されるようになりますが、 実際にはこの後にどのような学習をするのかの具体的な設定を行っていきます。

モデル作成は以下の4つのプロセスに分かれています。

  • Select
  • Build
  • Analyze
  • Predict

「Select」では利用するデータセットを選択します。

続いてのBuildでは以下の項目を設定します

  • ターゲットとなる目的変数の列名の選択
  • モデルタイプの選択(※ 自動判定されます)
  • 利用する特徴量の選択

また、特徴量に関しては統計情報がなどが表示されていますが、中ほどのデータセット名が書かれている横のメニューからグラフ表示などもできます。

これらを設定してモデルを作成します。 モデルの作成方法には2種類あり「Standard build」と「Quick build」があります。 今回はStandard buildを利用して実行します。

この後、学習処理が実行されます。 Standard buildを選択しているため、この処理には数時間かかる場合があります(試しにやってみたもので3時間程度かかりました)。 処理中は、SageMakerの画面からもProcessingやTraining, Hyperparameter tuningのジョブが実行されているのが確認できます。

実行が完了すると、Analyzeにて学習結果の確認が出来ます。

今回は多値分類なので、出ている情報としては

  • 正解率
  • 特徴量のインパクト → Overviewタブ
  • 予測結果と正解の対応関係とラベルごとのPrecision, Recall → Scoringタブ

となっているようです。

最後のPredictは作成したモデルを利用して推論が実行できます。 この画面で利用可能なものは

  • データセットを選択してバッチ推論
  • その場でフォームから値を入力して単一レコードの推論を行う

となります。 以下の画面はUI上で推論を行うものとなります。

推論結果は画面上で確認できるほか、CSVファイルとしてダウンロードすることも可能です。

おわりに

かなり気軽に機械学習が実行できてしまいました。

「機械学習をとりあえず試しにやってみる」という観点では非常に楽ですし、 本格的にやってる人でも「まずは今のデータでどのくらい精度が出そうか確認しよう」という時にSageMaker Canvasでやるというのもありかもしれません。