ノーコードで始める機械学習 Amazon SageMaker Canvasを使おう!

記事タイトルとURLをコピーする

re:invent 2021でもAmazon SageMakarのアップデートがありました。その1つがAmazon SageMaker Canvasです。昨年のre:invent 2020 ではAmazon SageMakerの新機能が発表され機械学習の開発環境として大幅に強化されました。今回発表されたAmazon SageMaker Canvasとはいったいどんなサービスなのでしょうか?

Amazon SageMaker Canvasとは?

aws.amazon.com

aws.amazon.com

Amazon SageMaker Canvasとは、Canvasという名の通り、GUIにてノーコードで機械学習を実行できる機能で、機械学習の知識がなくても使えるそうです。こういったサービスはいろいろあると思いますが、ついにAWS純正が登場したというわけです。

実際につかってみた

起動する

Amazon SageMaker Canvasの対応リージョンにてコンソールを開くとCanvasの項目が増えています。起動の仕方はAmazon SageMaker Studio同様で、「アプリケーションの起動」からCanvasをクリックするたけです。f:id:swx-mine:20211201122551p:plain

リダイレクトされ以下のような画面になります。環境作成・起動するまでしばらく待ちます。f:id:swx-mine:20211201122603p:plain

起動が完了すると以下のような画面になります。AWSサービスでは珍しくG○○gle感のあるおしゃれでいい感じの画面です。まだ初回の利用なので "You Haven't created any models yet" と言われています。f:id:swx-mine:20211201122957p:plain

データのインポート

まずはデータをインポートします。今回使用するデータはおなじみAbaloneのデータセットです。

archive.ics.uci.edu

サイドバーの三本線みたいなマークがデータセットです。こちらをクリックし、データセットの画面からインポートを実行します。f:id:swx-mine:20211201152400p:plain

今回はS3に置いたabaloneのデータセットをインポートします。直接アップロードできるようですが、権限の問題なのかなぜかできない。また、ソースは直接アップロードとS3以外にもSnowflakeとRedshiftも選択できるようです。f:id:swx-mine:20211201155539p:plain

データセット一覧に対象のデータが表示され、ステータスがProcessingからReadyに変わればインポート完了です。f:id:swx-mine:20211201160432p:plain

データを見てみる

データセット一覧からデータセットにマウスカーソルを合わせるとViewかDeleteができます。インポートしたデータをViewするとおなじみのデータを閲覧することができました。f:id:swx-mine:20211201160404p:plain

データセットのJoin

今回はabaloneのデータセット1つを利用しているのでしませんが、データのJoinも可能です。以下のAWS公式ブログではデータのJoinについても紹介されています。

aws.amazon.com

モデルの作成

データがインポートできたのでモデルを作成します。サイドバーの半円に囲まれた電球みたいなマークがモデルです。モデルの画面からあたらいしいモデルを作成していきます。

f:id:swx-mine:20211201153550p:plain

よさげに命名してCreate。f:id:swx-mine:20211201160531p:plain

4つのステップ

Canvasでモデルを作成・予測を実行するには4つのステップがあります。モデルの画面ではそれぞれタブになっています。左から順に実行していくことで簡単に機械学習が開始できます。

  1. Select datasets
  2. Build model
  3. Analyze results
  4. Generate predictions

f:id:swx-mine:20211201160608p:plain

Select datasets

この画面でも前述したようなインポートやJoinが可能なようですが、今回はすでにインポート済みなので選択して終わりです。f:id:swx-mine:20211201160658p:plain

Build model

データセットにおける予測のターゲットとなる列とModel typeを選択します。今回のターゲットはRings列(アワビの年齢)を予測します。データセットやターゲットによって自動的にModel typeをサジェストしてくれますが、なぜか「3+ category prediction」がサジェストされたので変更します。f:id:swx-mine:20211201161844p:plain

Model typeの変更

Rings列の値はカテゴリー変数ではないので「Number model type」に変更します。そのほかに選択できるのは「2 category prediction」と「Time series forecasting」があります。f:id:swx-mine:20211201161853p:plain

なぜだか「Number model type」は推奨されないそうですが気にしません。f:id:swx-mine:20211201164220p:plain

説明変数の選択

ターゲット列(目的変数)との相関をみて説明変数を選択します。Buildのデータのプレビュー画面では横三本線マークからは各列の以下の値が確認できます。外れ値は考慮されてるのでしょうか?

説明
Data type データの型。
Missing 欠損値の割合。Canvasでは自動的に補完してくれるそう。
Mismached 各列におけるデータの型と合わないデータの割合。欠損値として処理してくれるそう。
Unique 各列におけるユニークな値の数。カテゴリー変数なら役立ちそう。
Mean / Mode 平均値もしくは最頻値。数値の場合は平均値なのかな?
Correlation to target ターゲット列との相関。

f:id:swx-mine:20211201163701p:plain 縦三本線マークから各列のヒストグラムを確認することもできます。f:id:swx-mine:20211201162515p:plain フィルターマークでデータをフィルターすることもできます。f:id:swx-mine:20211201163737p:plain

まずは↑の値で見たときに相関が比較的高いDiam, Height, Length, Shell, Wholeを使用してみます。使用する列にだけチェックを入れます。f:id:swx-mine:20211201164135p:plain

モデルのプレビュー

Buildする前にプレビューを試してみます。「Preview model」を二乗平均平方根誤差(RMSE)と説明変数の列がターゲットにどれくらい影響するかが確認できます。f:id:swx-mine:20211201165052p:plain

これによると、なんだかShellだけのがよさそうなのでShellだけにしてみます。f:id:swx-mine:20211201165337p:plain

再度プレビューするには「Update」します。f:id:swx-mine:20211201165429p:plain

RMSEがちょっと大きくなっちゃった。f:id:swx-mine:20211201165903p:plain

なんだかんだあって今回はHeight, Length, Shellを利用することにしました。f:id:swx-mine:20211201165944p:plain

Buildの実行

BuildはQuick BuidかStandard Buildかが選べます。速さを優先するかAccuracyを優先するかです。今回はデフォルトのQuick Buidを実行します。f:id:swx-mine:20211201170339p:plain

Analyze results

Buildを実行するとAnalizeのタブに移ります。Overviewでは先ほどのpreviewと同じように各説明変数のImpactが確認できますがこちらはグラフも見れます。f:id:swx-mine:20211201170706p:plain

またScorringでも先ほどのpreviewと同じようにRMSEが確認できます。そしてグラフも表示されます、こちらでは平均絶対誤差(MAE)も確認できます。f:id:swx-mine:20211201170933p:plain

Generate predictions

Predictタブにて、Buildしたモデルを使用して予測を実行します。predictionはbatch predictionかsingle predictionかが選択できます。Batch predctionはその名の通り、まとまったデータに対してバッチで予測を実行します。今回、データセットを事前に分け忘れたので試しません。f:id:swx-mine:20211201171758p:plain

Single predictionはその名の通り、GUIで1つの値を予測します。各説明変数を入力するとターゲットの予測値が返されます。f:id:swx-mine:20211201171947p:plain

まとめ

今回は簡単にAmazon SageMaker Canvasにおいて一連のフローを試しました。画面が見やすく、AWSではないサードパティ製のSaaSかなと思えてしまいます。かなり簡単にデータのプレビュー~モデルのトレーニング~予測まで実行できます。今回試していませんがRedshiftへも接続、モデルのバージョン管理、Amazon SageMaker Studioへモデルを共有もできるようなので別の機会に試したいと思います。ノーコードで機械学習が実行できるといえどできるのは回帰分析のような簡単なものなので、今後のアップデートが期待されます。ノーコードで実行できるとは言え、まったくの初心者がとっつきやすいとは言えず、相関やRMSEなどを見るので統計・機械学習の知識がない人にとってはそのあたりのキャッチアップが必要と思われます。

Yusuke Mine(書いた記事を見る)

I get drunk but it's not enough 'Cause the morning comes and you're not my baby.