そもそも「Amazon SageMaker Canvas」とは?
Amazon SageMaker自体はAWSで機械学習の文脈でよく聞くサービスで、機械学習のデータ準備(ラベリング)、モデル作成、運用に必要なさまざまなツール・機能が用意されています。とはいえ、これはやっぱりデータサイエンティストなど機械学習に関する知識・スキルがある人が利用することが前提。また、要件定義して、データを準備して、モデルを開発して、デプロイして、モニタリングして、結果を受けて再度要件定義して……とすると、なかなか時間もかかるし、「ちょっとこれ試してみたい」も気軽にはできません。
というなかで、挙がってきたキーワードが「AutoML」。コードを書かずに(ノーコードで)自動でモデル生成をおこなうもので、知識がなくてもいろいろ試せるようになるというモノです。そして、それを実現するのが、「Amazon SageMaker Canvas」ということですね。データをインポートすれば勝手にモデルを構築して、予測をおこなってくれる……と言っています。さらに、GUIでデータのクレンジングや変換もできて、ワンクリックでモデルができて、結果もいろいろとグラフィカルに表示してくれる、らしい。では、実際どんな感じなのか、試していきましょう!
チュートリアルで、「荷物の到着予定日数」予測にチャレンジ
さて、どこから手をつけようか……という感じですが、Amazon SageMaker CanvasのチュートリアルをAWSが公開していたので、それに沿って進めることにしました。用意されていたのは、荷物の到着予定日数を予測するユースケース。荷物の配送元、キャリア(運送会社)、優先順位、出荷日、配送日数などが入った出荷データから予測モデルの作成を目指します。
予測データイメージ
<STEP 1>Amazon CloudFormationを使って、必要な環境を構築する
まずは、必要な環境のセットアップから。ここでは、用意されていたAWS CloudFormationスタック(テンプレート)を使って、Amazon SageMaker Studioドメインとユーザを作成します。やりたいのはAmazon SageMaker Canvasなのに……?と思いましたが、どうやら、Amazon SageMaker Studioドメインのなかで、Amazon SageMaker Canvasを起動する、というイメージの様子。とりあえず、言われた通りに進めます。
<STEP 2>データをアップロード→インポート→紐づけて、使えるようにする
続いてはデータの用意です。最初に、チュートリアルで用意されていた「出荷ログ」「製品の説明」という2種類のデータをAmazon S3にアップロードします。さっきAWS CloudFormationで必要な環境を作ったときに、今回用のS3バケットもできているので、そこにアップロード。
次にこれらのデータをAmazon SageMaker Canvas側にインポートしていきます。いよいよAmazon SageMaker Canvasでの操作ですが、まずは「Datasets」のメニューから。
さらに、データセットの結合として、キーの紐づけまでやるようです。
「Inner」を指定し、結合列は「ProductId」であると確認して保存、つまりProductIdをキーに内部結合させる、という設定ですね。内部結合とか懐かしすぎて忘れていましたが、DB・SQLの一般知識なので、詳細は皆さん検索してみてください(説明を放棄)。
真ん中のボードっぽいところに統合したいデータをドラッグすると勝手につながって、なにで紐づけるかを選べばOK、というのは、なかなか簡単で面白かったです。
<STEP 3>データを選択したら、ワンクリックでモデル構築!
はい、ここまででようやく準備が整いました。前準備だけでも、結構いろいろやることがあるものですね……。
気を取り直して、いよいよモデルの作成に入っていきます。ここでは、Amazon SageMaker Canvasの「Models」というメニューに切り替えて進めるのですが、「Select(選択・データの設定)」「Build(構築)」「Analyze(分析)」「Predict(予測)」と4つのステップごとにタブが用意されていて、それに沿って進んでいきます。いまいちピンと来なかったのですが、おそらく分かりやすい構成なんだと思います。
まずはデータをセット。先ほどデータ統合で作ったものを指定します。
すると、自動でBuildのタブに切り替わり、ここでいよいよ予測の対象などを指定します。「Target Column」として「ActualShippingDays」を選択。要するに、ログにある「実際かかった出荷日数」をもとに、これから出荷する荷物が届くまでの日数を予測する、ということになります。
ここで、項目を指定すると、どんなモデルで分析するか、「Model type」も自動で出てきます。ただ、今回はデータに日時の情報が含まれるため、時間の経過に沿って変化するものを予測する「時系列予測(Time series forecasting)」が出ていました。今回のチュートリアルでは、「時系列予測になっていたら、数値モデルタイプ(Numeric predction)に変更する」となっていたので、変更します。
……が!実はですね。ここで「Numeric prediction」を選択したところ、なにやら「うまくできないよ」的な黄色い三角のアラートが表示されました。なにが間違えた?と不安になりましたが、よく読めば、「ActualShippingDaysは数値予測モデルで予測します」といったことが書いてあります。要するに、モデルを変更したよ、というアラートの様子。紛らわしいな……。とりあえず、そのまま先へと進めます。
ここまでくれば、あとはモデル構築を開始すればOKです!Amazon SageMaker Canvasでは、短時間でモデルを構築する「クイックビルド」と、時間がかかるけれどもより精度の高いモデルを構築する「スタンダードビルド」の2種類が用意されています。今回はクイックビルドで実行!
<STEP 4>作ったモデルで予測をしてみよう!
待つこと数分、結果が表示されました!予測される日数は、実際の値と+-1.15の誤差があると。左下の枠には、各項目が影響度の高い順に並べられています。
さらに「予測(Predict)」のタブに移ると、このモデルを使って実際に予測することができます。予測したいデータをまとめたファイルをインポートして予測させることもできますし(Batch prediction)、単一予測(Single prediction)として必要な情報を手入力して予測することもできます。
モデル構築だけなら、だれでもできそう!
というわけで、Amazon SageMaker Canvasを使えば、確かに機械学習の専門知識がなくてもモデル構築自体はすることができました。所要時間は1時間ほど(チュートリアルには20分と書いてありましたが、コラム用に画面をキャプチャしながら進めたので時間がかかった、ということにしてください)。途中でどんなアルゴリズムを使うのかと聞かれることもありませんし、「データさえ指定すれば、あとはよしなにやってくれた!」という印象ではあります。
ただ、出てきた結果をどう理解すればよいのか、となると途端にハードルが高くなり、「これを実業務にそのまま使って大丈夫なんだっけ?」「特定の要素に影響され過ぎてない?」などを自分で判断するとなると、ちょっと……というかだいぶ手に余るな、というのが感想です。
とはいえ、今回のものに関しては、サンプルデータを使っていて、どんな事情のどんなデータなのかサッパリ分からないまま言われたとおりにやっただけなので、結果の正しさが分からないのも「そりゃそうだよな」としか言えません。もし自分の業務で使うデータだったら、「これは大丈夫っぽいな」くらいは判断できるのかもしれない、とも思います。
余談ですが、Amazon SageMaker Canvasも従量課金で、使った分だけ課金されます。チュートリアルと言っても、普通に環境を作成して実行しているので、課金対象になります。ただし、Amazon SageMaker Canvasも無料枠がありまして、「最大100万セルを使用するモデルを、最初の2か月間で10個まで」は無料で使えるので、今回程度のものはこれに収まる範囲です。とはいえ、放っておくと、いつの間にか課金対象に!となりかねないので、使わないものは削除しておきたいところ。
というわけで、さっさと使ったリソースを削除、と思ったところで、盛大につまずきました。Amazon SageMakerのアプリケーション(つまりAmazon SageMaker Canvasのこと)やユーザ、ドメインを削除する画面にたどり着けず、小一時間コンソールをさまよう羽目に。最終的には見つけられたのでよかったことにします。
最後に、ソニービズネットワークスでは同じくノーコードで使えるAI予測分析ツール「Prediction One」を提供しております。無料でのトライアルもありますので、気になる方はぜひお問い合わせください。このほか、Amazon SageMaker Canvasの導入支援サービスも提供にむけて鋭意準備中など、AI活用をサポートするサービスを拡充していくと聞いております。ぜひご期待ください。以上、シイノキでした!