re:invent 2021でもAmazon SageMakarのアップデートがありました。その1つがAmazon SageMaker Canvasです。昨年のre:invent 2020 ではAmazon SageMakerの新機能が発表され機械学習の開発環境として大幅に強化されました。今回発表されたAmazon SageMaker Canvasとはいったいどんなサービスなのでしょうか?
Amazon SageMaker Canvasとは?
Amazon SageMaker Canvasとは、Canvasという名の通り、GUIにてノーコードで機械学習を実行できる機能で、機械学習の知識がなくても使えるそうです。こういったサービスはいろいろあると思いますが、ついにAWS純正が登場したというわけです。
実際につかってみた
起動する
Amazon SageMaker Canvasの対応リージョンにてコンソールを開くとCanvasの項目が増えています。起動の仕方はAmazon SageMaker Studio同様で、「アプリケーションの起動」からCanvasをクリックするたけです。
リダイレクトされ以下のような画面になります。環境作成・起動するまでしばらく待ちます。
起動が完了すると以下のような画面になります。AWSサービスでは珍しくG○○gle感のあるおしゃれでいい感じの画面です。まだ初回の利用なので "You Haven't created any models yet" と言われています。
データのインポート
まずはデータをインポートします。今回使用するデータはおなじみAbaloneのデータセットです。
サイドバーの三本線みたいなマークがデータセットです。こちらをクリックし、データセットの画面からインポートを実行します。
今回はS3に置いたabaloneのデータセットをインポートします。直接アップロードできるようですが、権限の問題なのかなぜかできない。また、ソースは直接アップロードとS3以外にもSnowflakeとRedshiftも選択できるようです。
データセット一覧に対象のデータが表示され、ステータスがProcessingからReadyに変わればインポート完了です。
データを見てみる
データセット一覧からデータセットにマウスカーソルを合わせるとViewかDeleteができます。インポートしたデータをViewするとおなじみのデータを閲覧することができました。
データセットのJoin
今回はabaloneのデータセット1つを利用しているのでしませんが、データのJoinも可能です。以下のAWS公式ブログではデータのJoinについても紹介されています。
モデルの作成
データがインポートできたのでモデルを作成します。サイドバーの半円に囲まれた電球みたいなマークがモデルです。モデルの画面からあたらいしいモデルを作成していきます。

よさげに命名してCreate。
4つのステップ
Canvasでモデルを作成・予測を実行するには4つのステップがあります。モデルの画面ではそれぞれタブになっています。左から順に実行していくことで簡単に機械学習が開始できます。
- Select datasets
- Build model
- Analyze results
- Generate predictions
Select datasets
この画面でも前述したようなインポートやJoinが可能なようですが、今回はすでにインポート済みなので選択して終わりです。
Build model
データセットにおける予測のターゲットとなる列とModel typeを選択します。今回のターゲットはRings列(アワビの年齢)を予測します。データセットやターゲットによって自動的にModel typeをサジェストしてくれますが、なぜか「3+ category prediction」がサジェストされたので変更します。
Model typeの変更
Rings列の値はカテゴリー変数ではないので「Number model type」に変更します。そのほかに選択できるのは「2 category prediction」と「Time series forecasting」があります。
なぜだか「Number model type」は推奨されないそうですが気にしません。
説明変数の選択
ターゲット列(目的変数)との相関をみて説明変数を選択します。Buildのデータのプレビュー画面では横三本線マークからは各列の以下の値が確認できます。外れ値は考慮されてるのでしょうか?
値 | 説明 |
---|---|
Data type | データの型。 |
Missing | 欠損値の割合。Canvasでは自動的に補完してくれるそう。 |
Mismached | 各列におけるデータの型と合わないデータの割合。欠損値として処理してくれるそう。 |
Unique | 各列におけるユニークな値の数。カテゴリー変数なら役立ちそう。 |
Mean / Mode | 平均値もしくは最頻値。数値の場合は平均値なのかな? |
Correlation to target | ターゲット列との相関。 |
縦三本線マークから各列のヒストグラムを確認することもできます。
フィルターマークでデータをフィルターすることもできます。
まずは↑の値で見たときに相関が比較的高いDiam, Height, Length, Shell, Wholeを使用してみます。使用する列にだけチェックを入れます。
モデルのプレビュー
Buildする前にプレビューを試してみます。「Preview model」を二乗平均平方根誤差(RMSE)と説明変数の列がターゲットにどれくらい影響するかが確認できます。
これによると、なんだかShellだけのがよさそうなのでShellだけにしてみます。
再度プレビューするには「Update」します。
RMSEがちょっと大きくなっちゃった。
なんだかんだあって今回はHeight, Length, Shellを利用することにしました。
Buildの実行
BuildはQuick BuidかStandard Buildかが選べます。速さを優先するかAccuracyを優先するかです。今回はデフォルトのQuick Buidを実行します。
Analyze results
Buildを実行するとAnalizeのタブに移ります。Overviewでは先ほどのpreviewと同じように各説明変数のImpactが確認できますがこちらはグラフも見れます。
またScorringでも先ほどのpreviewと同じようにRMSEが確認できます。そしてグラフも表示されます、こちらでは平均絶対誤差(MAE)も確認できます。
Generate predictions
Predictタブにて、Buildしたモデルを使用して予測を実行します。predictionはbatch predictionかsingle predictionかが選択できます。Batch predctionはその名の通り、まとまったデータに対してバッチで予測を実行します。今回、データセットを事前に分け忘れたので試しません。
Single predictionはその名の通り、GUIで1つの値を予測します。各説明変数を入力するとターゲットの予測値が返されます。
まとめ
今回は簡単に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.