AWS SageMaker Canvasから始める機械学習
はじめに
皆さんは機械学習やデータ解析をする際に何から着手しますか?
おそらく経験のない方は何から始めれば良いかわからなかったりするかと思います。
その答えの一つとしてAWS SageMaker Canvasを提案しようと思います。
今回はSageMaker Canvasについて
・使用感
・どの程度の予測精度が出るのか?
をお伝えできたらと思います。
目次
- 機械学習の事前知識
- SageMaker Canvasとは
- 予測精度の検証対象について
- 料金形態
- SageMaker Canvasの使用手順・結果
- まとめ
機械学習の事前知識
機械学習の分野を扱うため、初学者でも読みやすいよう簡単に説明します。
機械学習にはいくつか種類があります。今回対象とするのは最も一般的な「教師あり学習」と呼ばれるものになります。
教師あり学習というものは機械に対して学習データと正解のセットのデータ(データセット)を学ばせます。
この機械をモデルと言います。学習が終わったモデルを学習済みモデルということもあります。
学習済みモデルが手に入ったら、そのモデルに対してデータを入力することで、予測結果を得ることができます。
例えば、スーパーマーケットの曜日や立地などのデータと当日来客数(答え)がある場合、それらを使用し、学習モデルを作成します。
その学習モデルを使用し、曜日や立地などのデータから未来の来客数を予測することができます。
ざっくりとした機械学習の説明は以上になりますが、実際にはデータ作成やモデル選定・策定などもっとやることは多く、特にデータの作成・加工には特徴量エンジニアリングといった一学問があるくらい深いものとなっております。
SageMaker Canvasとは
今回使用するSageMaker CanvasはノーコードでGUIでモデルを作成し予測を得られる※AutoMLサービスです。
本来機械学習に取り組む際には特徴量エンジニアリングをはじめとした様々な知識・技術が必要となります。
これらの知識がなくとも簡単にデータ解析やモデル作成を行えるサービスとなっています。
初学者はもちろん、機械学習に慣れている方でも初動のアプローチとして利用することで、開発工程の短縮が望めます。
※AutoML:機械学習を現実の問題に適用するプロセスの自動化、データからモデルを構築するプロセスの自動化などを目的とした技術
予測精度の検証対象について
予測精度の検証には機械学習のコンペティションプラットフォームで最も有名なKaggleのチュートリアル「Titanic - Machine Learning from Disaster」を使用します。
データが揃っているのと、チュートリアルであるものの、ある程度人が考えないといけないくらい難易度が高いため、良いベンチマークになるかと思います。
興味がある方はご自身で試してみることをオススメします。
日本語で解説しているサイトも多いので、機械学習の導入としてはベストの課題ですので。
このコンペティション内容としましては映画にもなっているタイタニックの乗員データからそれぞれの生死を予測するといったものになっております。
データの中には性別やチケットのクラスなどがあり、映画を観た方なら分かると思いますが、女性や子供、チケットのクラスが高いお金持ちの人ほど助かる可能性が高いです。
実際にチュートリアルを行う際は上記のようなことを考察しながらデータを見ていき、データを加工したり、モデルを調整します。
今回使用するSageMaker Canvasがどこまでこのような考察を自動でやってくれるかが見所となります。
料金形態
SageMaker Canvasはコンソールの利用時間とデータの大きさによって従量課金されます。
・コンソール利用時間
SageMaker Canvasを利用した時間に応じて下記料金が発生します
$1.9/hour
SageMaker Canvasをログアウトするまでセッションが続くので使い終わったらさっさとログアウトしましょう。
・データの大きさ
トレーニングしたデータの大きさに応じて下記料金が発生します。
例えば10カラム×1000行のデータの場合
10000cellとなるので下記のようになります。
10000/1000000 = $0.3
なお、最新の料金形態についてはAWSのHPを確認してください。
HPには記載されていないですが、モデルの学習か予測の際にインスタンスを使用しているようで、その料金も発生します。
かかっても数時間程度の起動時間なのであまり気にしなくて良いかもしれませんが、一応ご注意ください。
また、無料枠も存在するので試しやすいのも良い点です。
参考:https://aws.amazon.com/jp/sagemaker/canvas/pricing/
SageMaker Canvasの使用手順・結果
事前作業として、Kaggleのアカウントを作成し、Titanicコンペティションのデータセットを取得しておいてください。
Kaggleのアカウントを作成後、Titanicコンペティションに遷移し、参加します。
その後、タブ「Data」の右下にあるDownload Allからダウンロードできます。
1.新規ユーザー作成
SageMaker Canvasを使用するためにはまずユーザーを作成する必要があります。
SageMaker のコントロールパネルへアクセス後、「ユーザーを追加」を押下し、すべてデフォルトのままで構わないのでユーザー作成をしてください。
上記のようにユーザーが追加されるかと思います。
2.SageMaker Canvasの起動・新規モデル作成
作成したユーザーの右側の三角マークを押下し、「Canvas」を押下してください。
しばらくするとコントロールパネルが表示されます。
初期画面だと登録されているデータセットが表示されます。
左のメニューより、モデルとデータセットの選択が可能です。
まず、モデルを作成しましょう。「Models」を押下してください。
「New model」より、新しいモデルを作成することができます。
3.データセットの登録・設定
SageMaker Canvasではデータセットを登録する際、ローカル環境から直接アップロードできるようなのですが、手順が複雑だったので、今回はS3にアップロードするようにします。
新しいS3バケットを作成し、事前作業で取得しておいたTitanicコンペティションのデータセットを保存してください。
その後、「Import」ボタンを押下し、
Import画面から先ほど作成したS3バケットを選択します。
バケット内にはデータセットが入っているかと思います。
train.csvを選択し、「Import data」を押下してください。
これでSageMaker Canvasにデータセットが登録されました。
test.csvも同様に登録しておいてください。
次はモデルの学習データとして先ほど設定したtrain.csvを使用するよう設定します。
test.csvを選択し、「Select dataset」を押下してください。
下記のように選択されたデータの情報が表示されます。
データの項目数・データ数ががどれだけあるか?
また、※データの欠損率までわかります。
※得られるデータは必ずしも完全なデータであるわけではありません。機械学習ではこれらの欠損したデータを適切に修正・保管する必要があります。
特に下記の赤丸部分を押下すると各種データがグラフ化されます。
この時点である程度どのようなデータなのか見ることができます。
データのなかで今回の答えとなるカラムを選択しましょう。
Target columnの中からSurvivedを選択してください。
Target columnを選択すると、それぞれのカラムとTarget columnとの相関が表示されるようになります。
この時点である程度相関がなさそうなものに関しては学習対象から外してしまっても良いです。
今回は何も外さずに進めていきます。
4.モデルの学習
データが揃いましたので、モデルの学習を開始します。
Quick buildの右側にある三角マークを押下すると
・Standard build:モデル作成をする。実行時間が結構かかります。
・Quick build:高速でモデル作成をする。Standard buildを行う前のチェックとして使用する。
が表示されますが、両方とも試してみてください。
今回の説明ではQuick buildを選択し、実行します。
Quick buildは数分、Standard buildは数時間かかります。
モデルの学習が完了したら、下記のような画面に遷移します。
Quick buildでも学習時点での精度は82%出ていますね。良いと思います。
また、学習の中で重要視したカラムも左下にランキングで表示されるのですが、1番目に性別(Sex)が上がっているのも大変良いですね。
Standard buildで試した結果は下記のようになります。
さらにチケットのクラス(Pclass)もランキングトップに上がってきました。
タイタニックについて知っている人が重要だと挙げそうなカラムが上位に来ているのは驚愕です。
SageMaker Canvasにはデータしか与えていないにもかかわらず、これだけの結果が得られてしまうのはすごいですね。
Scoringを押下するとグラフで確認することができます。
正答率がどうなっているか視覚的にわかりやすいのはGoodですね。
特にAdvanced metricsを押下すると下記のようにさらに詳細な情報を得ることができます。
F1値やAccuracyなどが一発で分かるのはほんとありがたいです。
5.モデルの予測
最後にモデルによる予測を行います。
「Predict」を押下すると下記画面に遷移します。
「Select dataset」を押下してください。
test.csvを選択し、「Generate predictions」を押下すると予測が開始します。
予測が完了するとStatusがReadyになります。
右側にある点を押下し、Downloadを選択してください。
予測結果のcsvデータが得られます。
これが機械学習において得たかったデータになりますね。
csvの中身は下記のようになっており、予測値(probability)と回答(今回はSurvived)が得られます。
さて、予測が得られたのでこの予測がどれだけ合っているか検証しましょう。
検証するためにはKaggleのタイタニックコンペティションのページより、予測結果をアップロードします。
今回の主題と外れるのでアップロード方法については割愛します。
アップロードした結果、下記のような結果になりました。
正答率は77%ですね。
以前チュートリアル通りに機械学習を進めた際の結果が75%だったので、ただ何もせずにSageMaker Canvasにデータを通すだけで、
チュートリアル以上の結果を得ることに成功してしまっています。
いい性能していますね!
これにてSageMaker Canvasの使い方・検証は完了です。
まとめ
今回はSageMaker Canvasを使用し、機械学習を行えることができました。
コードを一切描かず、グラフィカルな情報を得ることができ、予測精度が良いモデルを得ることができました。
機械学習の用途として利用せずとも、データの中で何が重要な情報なのか?などといった課題解決にも役立つと思います。
また、作業に関してもとても簡単ですので、機械学習の案件があったらとりあえず、SageMaker Canvasに投げてしまうというのもありだと思います。
色々な使い方はあると思いますが、是非ともこのサービスの触り、パワーを感じてもらいたいです。
機械学習の片鱗を触ることができ、とても刺激的な経験になるかと思います。
サーバ運用とWebサイト運用・システム運用などが業者が別々で問題解決が困難、もしくは業務をワンストップでお願いしたいなどございましたら遠慮なくご相談ください。
サーバの設計や構築のみなどミニマムな業務からも承ってますので是非コムデへご相談ください。