1. はじめに
- 2024年開始の新資格「AWS Certified Machine Learning Engineer - Associate」の受験準備をしている。
- 普段SageMakerを使う機会がなく、このままだとまた全て机上学習になってしまうため、可能な範囲で実機学習する。
- 初心者なので、内容を突き詰めるわけではなく、処理の流れや雰囲気が理解できることを目標とする。
2. やったこと
- 事前学習として、Kaggleの「タイタニックチュートリアル」を実施して、従来の方法(JupiterNotebook/Python/Pandasなど)を用いて、生存者を予測するモデルを作成して、テストデータに対して推論を行い、結果をKaggleに登録するプロセスを確認する。
- 本題として、同様のプロセスをSageMaker Canvasを用いて実施し、どれくらい簡単にできるのかを確認する。
3. 事前学習
3.1 タイタニックチュートリアルの実施
- 「タイタニックチュートリアル」を実施し、生存者予測作業の流れを確認する。
- このチュートリアルで学習できる内容は以下の通り。自分で分析環境を用意することも不要であり、なぞるだけであれば1時間程度で実施可能。
- 作業に必要なファイルを確認する。
- train.csv: トレーニング用データ(891人分、生存/死亡の値あり)
- test.csv: 予測用データ(418人分、生存/死亡の値がなく、どちらなのかを予測するのが課題)
- gender_submission.csv(418人分の生存/死亡の予測結果を提出する用)
- Kaggleのサイト上でNotebookを作成し、データロード、モデル作成、418人分の予測を行い、結果を登録する。
- 作業に必要なファイルを確認する。
- このチュートリアルで作成したモデル(ランダムフォレスト)を用いた予測では、スコア(正解率)は 0.77511 となる。なお、結果提出用ファイル(gender_submission.csv)の初期値は、単純に男性が死亡、女性が生存という値になっているが、その場合のスコア(正解率)は 0.76555 となる。
3.2 データ分析やモデル作成に関する追加確認
-
タイタニックはいろいろな人がやっているので、分かりやすい内容のものを自分でもやってみて少し理解を深める。
-
【最新決定版】タイタニックデータで学ぶ Pandasによるデータ加工からグラフ化まで
- データの読み込み、グラフ化、欠損値補完などの簡単な操作など
-
Kaggle Titanic Score-80.8%までの道のり
- どういう観点でスコアを上げればよいかの試行錯誤など
-
【最新決定版】タイタニックデータで学ぶ Pandasによるデータ加工からグラフ化まで
-
自分で練習する時の環境としては「SageMaker Studio Lab」を利用した。一日ごとの利用時間制限(CPU環境8時間/GPU環境4時間まで)はあるが、無料で上記の検証作業(タイタニックデータの読み込み・修正、モデル作成、予測など)が可能。
4. SageMaker Canvas の利用
4.1 事前準備
- SageMaker Canvas を利用する前に、まず SageMaker ドメイン(環境設定みたいなもの)を作成する必要がある。今回は「シングルユーザー向け」を選択する。
- 既定の設定でドメインが作成される(ドメイン名は分かりづらいが変更不可)。
- ドメインが作成されるのと同時にドメイン内にデフォルトユーザも作成される。
- デフォルトユーザを指定してSageMaker Canvasを起動する。
4.2 SageMaker Canvas でのタイタニック分析
データセットのアップロード
-
Dataset名を「train-titanic」、Data Sourceを「Local Upload」として学習用データ「train-titanic.csv」(生死の情報がある891人分のデータ)をアップロードする。同様に予測したいデータ「test-titanic.csv」(生死の情報がない418人分のデータ)もアップロードする。
- 2つのファイルが正しくアップロードされたことを確認する。
モデルの作成
- My models -> + New Model を選択する。「Problem Type」として「Predictive analysis」(データから予測を行う)を選択する。
-
「Target column」(予測したい列)としてSurvived(生死)を選択し、Quick Build(簡易的なモデル作成)を実行する。
- 訓練用データであれば82.682%の精度で予測できるモデルが作成される。Predict(予測)のステップへ進む。
予測の実行
- Batch prediction(1個1個の行に対する予測ではなく複数行まとめて予測)、Manual(1回限りのファイル指定でのDataset指定)を選択して、テストデータ(生死の値がない418人分)のファイルを指定し、Generate Predictionsを実行する。
- 実行後、テストデータの各行に対し、Survived(生死の値)とprobability(確度みたいなもの)が追加されたファイルがダウンロードできる。
- このファイルをKaggleへの提出形式(PassengerIdとSurvivedの2列だけ)に編集して提出する。残念ながら結果としてはスコア(正解率) 0.73684 と微妙な値になってしまった。
4.3 環境の停止
- SageMaker Canvas は使用中は常時課金され続けてしまうので、作業が終わったらログアウトする必要がある。(左下のログアウトボタン)
- Canvasが起動中かどうかはマネコンのSageMakerの画面(ドメインの詳細->リソース)でも確認できる。上がCanvasを実行中、下が停止中(ログアウトした状態)の画面。
5. 所感
- SageMaker Canvas、使いこなせばいろいろ便利で、業務として使う場合はよいかもだが、使用中は常に時間課金が発生(きちんとログアウトしないと課金が継続してしまう)、またデータ読み込みや予測などの処理に対してそれぞれ課金されるため、学習用としては精神的に気軽には使いにくいかな、、と感じた。(多少不便でもSageMaker Studio Labのような無料環境で落ち着いてやったほうが、、と思ってしまった。)
- 今回やったことの他にも、Wrangler(データの前処理)とか、簡単に試せそうな機能はあるので、もう少し触って理解できるようにしたい。