
どーも!
たかぽんです!
今回はAWS SageMaker Canvasを用いて、ノーコードで機械学習を試してみようと思います...!
AWS SageMaker Canvasとは?
先日AWSの機械学習に関する講座を聞いていて、ノーコードで楽にできる...!的なのを売りにしていたので興味を持ったのですが、AWS SageMaker Canvasは、CSVファイルから学習用のテストデータをインポートし、そのデータを元に機械学習による推論をできる機能になっています。
端的に説明すると、売り上げ予測や等、統計的な推論等ができるみたいですね..!
本来は会社の月毎・年ごと売り上げ等、csvで定期的に収集しているようなデータを使いますが、筆者はAWSでデフォルトで用意されているデータで試してみようと思います。
では、早速次節から試してみます...!
ドメインを作成する
Sagemaker Canvasを使うためには、ドメインを作る必要があります。
ドメインは下記のドメインを作成から作成することができます。

ドメインの作成を押すと、下記の様に出てくるので、取り合えず高速セットアップで、ドメイン名を"ml-test"で

ユーザープロファイルはデフォルトで入っていると思うので、それをそのまま使用しました。

また、筆者が初めてやった時、実は失敗しました...
失敗した際は下記のようなエラーがたくさん出ました。
(vpc周りのリソースつくりなおしたりしながらドメインを再度生成したらいつの間にか行ける様になった感じです...!)

また、うまく行った際も先ほど同様に下記のエラーはでたのですが、Sagemaker Canvasを使っている間は問題なさそうでした。
(たぶんSageMakerポートフォリオ?等別のサービスを使おうとしたら何か足りてなさそうですが...)
ここら辺のエラーログは調べてもなかなかヒットせず、よくわからん...って感じでした...w(こういうのガッツリ追える人憧れる...)

問題なく作れたら、最初の画像のように"In Service"となっていればSageMakerCanvasの画面へ遷移できるかと思います。
先ほどのドメインから、筆者の場合、"ml-test"のリンクを踏んで、詳細へ行くと、"起動"ボタンがあるので、作ったドメインから起動します。


起動できたら、下記の様な画面が出てくれば完璧です...!

SageMaker Canvasを試してみる...!
やっとこさ準備ができたので、早速使ってみましょう...!
本来はデータセット(学習にしようするcsv)を用意して、インポートしてからモデルの作成...といった形にするのですが、今回は初期画面に表示されている、Amazon側で用意されているお試し用のデータセットで試します。
(というのも、いくつかの機械学習向けのデータセットで試そうとしたのですが、csvそのままimportできるものがなく、ちょっと手直し等が必要そうだったので....)
筆者は"canvas-sample-sales-forecasting.csv"というものを選択して試してみました。
中身は下記の様な感じですね。

確認したら、"Create a model"でモデルの作成をしていきます...!

モデルを作成すると、下記のような画面が出てきます。
Buildタブから、色々と設定をしていきます。

設定項目は"Select a column to predict"(予想対象のカラム)、"Model type" モデルタイプの二つです。
今回、筆者は"Select a column to predict"としてsales(売り上げ)。

モデルタイプは"Time series forecasting"で、設定内容は下記の様な形で試してみました。

"Configure time series model"の箇所をクリックすると詳細設定画面が出てきます。

今回は上記の様な形で設定しました...!
(storeは一意なカラムをしていしていて、このカラム以外が推論される様です)
そのあとはbuildをしていきます。
今回はQuick buildを選択。

そして、buildの前にデータのvalidationが必要なので、実行します。

Validationがうまくいくと下記の様になるかと思います。

上記が出たら再度Quick buildボタンを押すと下記のようにbuildが走るはずです。

しばらくまつと...
下記のようなAnalyze画面が出てきます。

学習データについての簡単な分析ですね。
これで推論の準備が整ったので、Predictを行いましょう...!

ボタンを押すと、タブが切り替わり、"Predict"タブに来るかと思います。
この画面で"All items"を選択した状態で"Start Predictions"を選択すると...?

推論結果を作成中...

完成しました...!(readyになっていればOK)
出力結果はDownloadもできますが、今回はPreviewで見てみます。

"Preview"を選択すると...?

このように出力が出てきました...!
p10, p50, p90というのがtargetに指定したsalesの推論値で、storeを除く他のカラムが推論されているようです。
今回の場合、storeが18の店の翌日の売り上げが7022.798...より小さくなる確率は10%(p10)で、8425.066...より小さくなる確率は50%(p50)で、9811.43...より小さくなる確率は90%(p90)といった見方をするようです。(これ筆者全然知らず、最初はなんのこっちゃでした...w)
この統計の出し方はAmazon Forecastの説明にて記載されています。
ちなみに、元データは以下でした。

軽くみた感じ、store=4の値は予測値とsalesが大体同じレンジなので、予測もそれっぽく見えますね...!
また、promoの値やschooldayの値も0に書き変わっていたりしたんですが、それに関しては正直どんな推論されたんや...?ってなってたりします...w
実際、世に出回っている機械学習用のテストデータ等で試すともうちょっと具体的に見えてくる気がしますが、今回はあくまで試すくらいで終わらせておきます...
(いつか時間があれば....筆者も試したい...!)
さて、今回はSage Maker Canvasで出力をだすところまでやってみました...!
出力結果の見方とかちょっと曖昧な部分もありはしますが、ノーコードで機械学習が楽にできるのは助かりますね...!
ちょっとした所感として、思ったよりinputのデータに制約が多そうでした(何度か機械学習向けのテストデータセットを無償提供してくれているところからダウンロードして試そうとしましたが、うまくできず...)。
また、出力結果の活用方法がもう一段階掘り下げないと実用としてはなかなか難しそうな印象でした。
ただ、SageMakerの他の機能でもっと柔軟な推測とかもできる様なので、機会があればまた時間をとってチャレンジしてみたいなー...なんて。(たぶんやらないけど...w)
是非皆さんも試したいデータ等があれば使ってみてください...!
それでわ!