絶対に理解できるSageMaker Canvas

はじめに

クラウドネイティブ技術部クラウドコンサルタントの若林です。

普段は、クライアントに向けてAIやクラウドを活用したシステムの提案や、コンサルタント案件のアシスタントなどをしています。

 

そんなエンジニアでもない私ですが、フェンリルに入社してからAWSの認定資格の勉強をはじめました。現在はAWS Certified Cloud PractitionerとAWS Certified AI Practitionerまで取得しています。

 

これは、私がAWS Certified AI Practitioner1回目試験を受けて不合格通知を受け取ったときのこと…

予想問題集を何周もして自信を持って挑みましたが不合格で、かなりショックを受けました。しかし考えてみれば、AWSを実務でほとんど触ったことがないのに、試験勉強だけしている不健全な状態でした。

 

そこで、フェンリルのAWS勉強会の先輩方のお力を借り、SageMaker Canvasを実際に触れてみよう!となりました。ちなみにSageMaker Canvasを選んだ理由は、AIプラクティショナーの試験範囲のかなりの割合をSageMakerで占められていたのと、Canvasはノーコードで使えるので初心者にピッタリだと思ったからです。(この時はノーコード=簡単だと盛大な勘違いをしていました)

SageMaker Canvasは、AWSが提供する機械学習サービス Amazon SageMaker の機能の一つで、コードを書かずにAIモデルを作成できるツールです。

ちなみに私は、勉強を始めたばかりの頃、SageMakerを「サゲメーカー」と読んでいました笑



目次

  1. SageMaker Canvasを起動してみよう!
  2. タイタニック号沈没事故の生存率を分析しよう!
  3. 犬猫判定モデルを作ろう!

 

  1. SageMaker Canvasを起動してみよう!

まずは SageMaker Canvas を起動してみます。
AWSマネジメントコンソールから Amazon SageMaker AIを開き、左側のメニューから Canvas を選択すると起動できます。

SageMakerCanvasのホーム画面

ただし、ここで一つ重要な注意点があります。

SageMaker Canvasは、起動した時点で課金がスタートします。

起動して何もせずに放置しただけでも課金がされます。実際私はCanvasのログアウトを忘れるミスを2回して、計300ドルの請求が来ました。幸いフェンリルには優しいエンジニアの先輩しかいないので、「どんまい」「最初は皆やっちゃうよねー」と励ましの言葉をかけてくれました。作業が終わったら必ずSageMaker Canvasを終了するのを忘れないようにしましょう。

 

英語との戦い

Canvasを触っていてもう一つ困ったことがありました。

それはChromeの翻訳がなぜか機能しないという問題です。

普段は英語のサービスでもChromeの翻訳を使えば何とかなるのですが、Canvasではなぜか翻訳が機能せず、UIがすべて英語のままでした。英語が得意な方には問題ないと思いますが、英語が苦手な私にとってはかなりのハードルでした。

 

 

  1. タイタニック号沈没事故の生存率を分析しよう!

Canvasが起動できたので、次は実際に機械学習モデルを作ってみます。

今回使用するのは、機械学習の入門データセットとして有名な タイタニック号の乗客データです。
このデータには以下のような情報が含まれています。

  • 年齢

  • 性別

  • 乗船クラス

  • 運賃

  • 同乗家族数

これらの情報から、「その人が生存したかどうか」を予測するモデルを作ります。

 

予測対象と特徴量を設定する

まず、機械学習モデルを作るためには「何を予測するのか」を決める必要があります。

今回のデータでは Survived という列があり、
この値が

  • 0:死亡

  • 1:生存

を表しています。そこで今回は、この Survived を予測対象としてモデルを作成します。

 

Canvasでは Select a column to predict という設定があり、ここで予測対象の列を指定します。今回の場合はSurvivedをターゲットとして設定しました。

 

次に、モデルが予測を行うための材料となる特徴量(Feature)を見ていきます。

今回のデータには、次のような特徴量が含まれていました。

  • 年齢(Age)

  • 性別(Sex)

  • 乗船クラス(Pclass)

  • 運賃(Fare)

  • 同乗家族数(SibSp / Parch)

これらの情報をもとに、AIは「この人は生存する可能性が高いか」を学習していきます。Canvasでは、これらの特徴量を自動的に認識し、適切な機械学習モデルを提案してくれます。今回の場合は「生存 / 死亡」の2分類モデルとして自動設定されました。

ここまで設定したら、あとは Quick build を実行することでモデルの学習が始まります。

モデル作成の結果

Canvasの Quick build を実行すると、自動的にモデルが作成されました。

その結果がこちらです。

まず目に入ってきたのがこの数字です。Accuracy:82.682%

Accuracy(アキュラシー) は予測がどれくらい当たったかを表す指標らしく、このモデルは評価データでは約82%正解したという意味です。

 

Canvasの3つの分析ビュー

画面を見ていると、結果の表示には

  • Overview

  • Scoring

  • Advanced metrics

という3つのビューがあることが分かりました。それぞれ見ていきます。

Overview

Overviewでは、モデルが予測する際にどのデータがどれくらい影響したのか

を見ることができます。ここで表示されている Column impact は各項目が予測にどれくらい影響したかを示しています。

 

今回の結果では

1位 Name(25.254%)
2位 Ticket(14.204%)
3位 Sex(10.306%)
4位 Pclass(10.225%)

という順番になっていました。

この結果を見ると、AIが

  • 乗客の属性

  • チケット情報

  • 性別

  • 客室クラス

などを組み合わせて、生存確率を予測していることが分かります。

 

Scoring

次に Scoring を見てみます。

サンキー図

ここには、予測結果と実際の結果を比較した図が表示されていました。

最初は「なんだこの図…?」と思ったのですが、調べてみるとこれはSankey diagram(サンキー図)という可視化手法でした。サンキー図は、データの流れや割合の移動を可視化する図で、エネルギー分析やデータ分析などでよく使われるそうです。

 

この図は 左から右へデータの流れを見ることで理解できます。

図の構造は次のようになっています。

Total → Predicted → Actual

つまり、

  1. Total
    モデルが評価に使用したデータの総数

  2. Predicted
    AIが予測した結果

    • 0(死亡)

    • 1(生存)

  3. Actual
    実際の結果

    • Correct(正しく予測)

    • Incorrect(誤った予測)

という流れになっています。

今回のモデルでは

  • 0(死亡)を正しく予測:110件

  • 1(生存)を正しく予測:69件

となっており、ほとんどのデータが Correct(正解) に流れていることが分かります。

一方で、一部のデータはIncorrect(誤分類)に流れており、モデルが間違えて予測したケースも存在します。

このようにサンキー図を見ることで、モデルがどれくらい正しく分類できたか、どのクラスで誤分類が発生しているかを視覚的に確認することができます。

Advanced metrics

最後に Advanced metrics を見てみます。



ここではより詳しい評価指標が表示されています。

この画面を見たとき、思わず(あ、これAIプラクティショナーで勉強したところだ!)となりました。

  • Accuracy
    意味:正解率(全体の予測のうちどれくらい正しかったか)
  • Precision
    意味:適合率(予測した結果のうちどれくらい正しいか)
  • Recall
    意味:再現率(本当の正解をどれだけ拾えたか)
  • F1 score
    意味:PrecisionとRecallのバランスを評価する指標
  • AUC-ROC
    意味:モデルの分類性能を評価する指標(1に近いほど性能が良い)

資格の勉強では暗記していたのですが、実際の画面で使われているのを見ると理解度が全然違います。やはり、実際に触るという経験をしないと、知識はなかなか定着しません。資格試験の勉強も大事ですが、実際のサービスを触ることで初めて理解が深まるということを実感しました。

 

 

3.犬猫判定モデルを作ろう!

次は、画像を使った機械学習に挑戦してみます。今回はシンプルに、犬か猫かを判定するAIモデルを作ってみました。

学習データ

今回用意したデータは

  • 犬の画像:100枚

  • 猫の画像:100枚

合計 200枚の画像です。この画像をCanvasにアップロードし、犬 / 猫というラベルを付けて学習させます。

学習結果

学習が終わると、結果が表示されます。

 

 

今回のモデルの精度はAccuracy:97.5%でした。かなり高い精度と言えそうです。

 

サンキー図で結果を見る

Scoringの画面を見ると、今回もサンキー図が表示されていました。

サンキー図を見る限り、かなり正確に分類できているように見えます。

機械学習のモデルが、ちゃんと犬と猫を区別できているのを見ると、少し感動します。

Heatmapがおもしろい

Overview画面では Heatmap という機能もありました。

これは、AIが画像のどこを見て判断したのかを可視化する機能です。

赤い部分ほど、AIが「ここが重要」と判断している場所になります。

これを見たとき「なんか機械学習してるっぽい…!」と感動しました。

猫の顔や体のあたりに色が集中していて、AIがちゃんと猫の特徴を見ているように見えます。こういう可視化があると、AIがブラックボックスではなく、「どう判断しているか」を理解できるのが面白いところです。

 

犬を猫と間違えるケース

モデルはかなり高精度でしたが、完全ではありません中には犬なのに猫と判定される画像もありました。

こうした誤判定を見ると、

  • 背景

  • 毛の色

  • 体の大きさ

などが影響している可能性があります。機械学習モデルを改善するには、こうした誤判定のパターンを分析してデータを追加することが重要になります。

 

 

 

変わり種を入れてみる

せっかくなので、学習データにない画像も試してみました。今回投入したのはこちら。

カピバラ

 

さて、AIはこれをどう判定するのでしょうか。結果は…

犬:76%
猫:24%

でした。つまりカピバラは76%犬という判定です。機械学習モデルは「犬か猫か」しか知らないので、未知の動物をどちらかに無理やり分類するという挙動になります。(これを入れたら、どういう結果が返ってくるのだろうか…)といろいろ実験してみるのは面白いです。

 

まとめ

今回、実際に SageMaker Canvas を触ってみて、機械学習の理解がかなり深まり、AWS Certified AI Practitioner の試験にも無事合格することができました。実際に触れられる環境があることは、学習においてとても大きいと感じました。

今回触ってみて思ったのは、「ノーコード=簡単」ではないということです。SageMaker Canvasは確かにコードを書かずに機械学習モデルを作ることができますが、評価指標の意味、モデルの精度、データの解釈などを理解するには、やはりそれなりの知識が必要でした。

初心者の私にとっては正直難しい部分も多く、先輩社員のサポートを受けながらあれこれ試すことになりました。それでも「機械学習とは何か」を理解するにはとても良いハンズオンでした。

また、「SageMakerを触ってみたい!」という私の要望に対して、すぐに環境を用意してくれたフェンリルの環境にもとても感謝しています。

では次は、AWS Certified Machine Learning Engineer - Associateの合格目指して頑張るぞー!