📝 概要
| 項目 | 内容 |
|---|---|
| 所要時間 | 約1.5時間 |
| メインサービス | AWS SageMaker Canvas |
| 学べること | Canvasで予測する方法、データ分析のプロセス |
| 想定費用 | 約500円(※実行時間により変動します) |
⚠️ 注意:以下のリソースを削除し忘れると課金が継続します。
- エンドポイント
- ワークスペース
まじで消し忘れで泣きます!!気を付けてください!
🎯 課題内容
タイタニックのデータを使って、予測モデルを構築します。
📊 分析フロー図
CRISP-DM に対応した CANVAS のフローです。
CRISP-DMとは
CRISP-DMは、データ分析の標準プロセスです。6つの手順を回すことでビジネス価値を生み出します。
- ビジネス理解:目的・KPIを定義
- データ理解:データの範囲・品質を把握
- データ準備:前処理、特徴量エンジニアリング
- モデリング:学習と検証
- 評価:指標の確認
- 展開:本番運用・改善
🔧 実装機能
事前準備
- Kaggleからタイタニックのデータを取得する
- Sagemakerのドメインを取得する
実装
- どんなデータか理解しよう
- データを登録しよう
- 性別ごとの生存フラグをみよう
- モデルを作って予測してみよう
- 評価をみよう(Confusion Matrix / F1)
- デプロイして呼び出してみよう
💡 実装のヒント
Kaggleからデータを取得する
Kaggleとは、データサイエンスのコンペティション(競技プログラミング)サイトです。
こちらから、タイタニックのデータを取得します。
- Kaggle アカウントを作成します。
- タイタニック生存予測 からダウンロードください。
-
train.csvとtest.csvを使用します。
このデータを使用して、データサイエンスの流れを体験してみましょう。
SageMakerでドメインを取得する
CANVASの利用には、SageMakerでドメインの作成が必要です。
シングルユーザー向けの設定から作成してください。
ユーザーは、デフォルトのままでも大丈夫です。
Studioを開くをクリックして、SageMaker Studioに入れたら成功です。
Q1. データを使ってどんな予測をしたいですか?
ビジネス理解では、データを使って予測したいことを決める必要があります。
今回のデータでは、どのような予測をしたいでしょうか?
Kaggleのコンペティションページを確認してみましょう。
※実案件では、顧客とのすり合わせが重要となります。データがあるからなんかできるやろってのはこのフェーズで消えます。
Q2-1. どんなデータがありますか?
ポイントは3つです。
- train と test の違いはなんでしょうか?
- 予測は、
関数:X → Yで行われます。XとYは具体的に何でしょうか? - X,Y は変数名です。どんな概念を変数で表現していますか?(=データの意味はなに?)
これらは、Kaggleのコンペティションにあります。確認してみましょう。
※実案件では、顧客から聞き出す必要があります。サボると、顧客の直感と合わない分析になります。
Q2-2. データの分布はどうですか?
データ理解のフェーズでは、データの分布を確認します。
例えば、
-
Survivedは、0と1でどの割合ですか? -
Survivedごとの、SexのBar Chartはどうですか?
など、いろいろなグラフを作成してみましょう。
※実案件では、かなりの時間をかけながら、統計量やグラフなどの視点で確認します。
🚀One Pointアドバイス🚀
分布の確認には、さまざまな手法があり、初学者は迷うことが多いです。
1つだけ、極めればいいものを紹介します。
それは、「ヒストグラム」です。
上の2つの例のように、各変数に対して描くものと、変数の値ごとに色分けして描くものがあります。
これさえ極めれば、データの分布はかなりわかるようになります。
ぜひ、いろんな組み合わせでヒストグラムを描いてみてください。
Q3. 欠損データはありますか?
欠損データがあるかどうかを確認しましょう。
欠損データがある場合、どう対処できるか調べてみましょう。
今回は、SageMaker Canvasの自動処理に任せますが、実案件では重要なフェーズです。
他にも、カテゴリデータをどう扱うか、外れ値をどう扱うかなど、データの前処理は重要です。
実務では、前処理に8割の時間を使うと言われています。
Q4. 何のモデルを使いますか?
予測モデルを作成します。
X → Y の関数を学習します。X, Yは何でしょうか?。
「分類」タスクでは、どのようなモデルがあるか調べてみましょう。
今回は、SageMaker Canvasの自動モデリングに任せます。
Q5-1. 予測に役立つ変数はなんですか?
どの変数が予測に役立つか調べてみましょう。
直感に合っているでしょうか?
合ってない場合は、モデルが間違っているか、データが足りていないか、
はたまた、直感が間違っているかもしれません。
いろいろな可能性を考えてみましょう。
Q5-2. F1スコアはどうですか?
予測の評価を行います。
Confusion MatrixやF1スコアを確認してみましょう。
Precision, Recall, Accuracyなどもどのように計算され、どういう意味があるか調べてみましょう。
また、第1種、第2種の過誤についても調べてみましょう。
※実案件では、KPIに合わせて、どの指標を重視するかを決める必要があります。
Q6. 予測結果はどうですか?
作成したモデルに、テストデータを入れて、予測結果を取得してみましょう。
テストデータには答えがないので、予測結果 0, 1を確認するだけになります。
✅ 完成後のチェックポイント
- [ ]どのようなデータかわかる
- 性別ごとの生存フラグが見れる
- Confusion Matrixが見れる
- 予測結果を取得できる
🧰 使用資材
🔗 リファレンスリンク
🛠️ 解答・構築手順(クリックで開く)
解答と構築手順を見る
✅ ステップ0:事前準備
1. Kaggleのアカウント作成
Kaggleのウェブサイトにアクセスします。
右上にある、Registerをクリックします。
Register with Emailの順にクリックします。
メールアドレス、パスワード、ユーザー名を入力します。認証ができたら、アカウント作成は完了です。
もちろん、Googleアカウントでも登録できます。
2. タイタニックデータのダウンロード
Kaggleのタイタニックのデータページにアクセスします。
Download Allをクリックして、zipをダウンロードします。

ダウンロードした、titanic.zipを解凍すると、train.csv と test.csv が入っています。
submission.csvは、今回は使用しません。
3. SageMaker ドメインの作成
SageMaker Canvasを使用するには、SageMakerドメインの作成が必要です。
Amazon SageMaker AI にアクセスします。
シングルユーザー向けの設定をクリックすると、
ドメインの作成をクリックします。
こちらで待ちます。
ドメインが作成できたら、Studioをクリックし、先ほどのuser profileでStudioを開くをクリックします。
すると、別画面でSageMaker Studioが立ち上がります。
Quick tourはスキップしても大丈夫です。
今回は、左上にある、Canvasをクリックします。
押すと、Canvasのページに移動します。
Run Canvasをクリックします。起動に数分かかります。
⚠️ 注意:終わったらこちらの画面でStopしてください。Runningだと1時間1.9USDかかります!
起動すると、こんな画面になります。
4. データセットの登録
import dataから、Tabularをクリックします。

データセットの名前を train_titanic とします。

先ほど解凍したtrain.csvをアップロードします。
preview datasetをクリックして、良さげだなあと思いながら、create datasetをクリックします。
すると、データセットが登録されます。同様の流れで、test.csvも登録しましょう。
✅ ステップ1: ビジネス理解
Q1. データを使ってどんな予測をしたいですか?
A1. タイタニック号の乗客が生存したかどうかを予測したい。
このフェーズは、コードを書くことはありません。が、非常に重要なフェーズです。
目的のないデータ分析は、結果が出ないだけでなく、誤った意思決定を招く可能性があります。
必ず、目的を明確にしましょう。
✅ ステップ2: データの理解
どんなデータがあるか確認してみましょう。
train_titanicをクリックします。すると、100件ほどデータが見れます。
create dataflowをクリックします。名前をtitanic_dataflowとします。するとData Wranglerが起動します。
Dataタブをクリックします。
各変数ごとの、ヒストグラムを見ることができます。
せっかくなので、 SurvivedとSexとAgeのヒストグラムを見てみましょう。
乗客はなくなってしまった人が多いですね。男性が多く乗船していたようです。
年齢は、0歳から70歳くらいまで幅広く乗船していたようです。
他にも色々と読み取れますので、いろんな変数も見てみてください。
Q2-1. どんなデータがありますか?
Q. train と test の違いはなんでしょうか?
A. trainは「学習」testは「予測の評価」をするデータです。
大きな違いは、trainには目的変数Survivedが含まれますが、testには含まれてません。
Q. 予測は、関数:X → Y で行われます。XとYは具体的に何でしょうか?
A. Xは説明変数(特徴量)、Yは目的変数(予測したい値)です。今回の場合、XはPclass, Sex, Ageなど、YはSurvivedになります。
Q. X,Y は変数名です。どんな概念を変数で表現していますか?(=データの意味はなに?)
A. 例えば、Pclassは乗客のクラス(1等、2等、3等)、Sexは性別、Ageは年齢、Survivedは生存フラグ(0:死亡、1:生存)です。
Q2-2. データの分布はどうですか?
A. Survivedは0が多く、1が少ないです。Sexは男性が多く、女性が少ないです。Ageは0歳から70歳くらいまで幅広く分布しています。上で見たヒストグラムを参考にしてください。
✅ ステップ3: データの準備
本当は、欠損値の処理や、カテゴリ変数の処理などを行う必要があります。
今回は、SageMaker Canvasの自動処理に任せます。
実際にしたい場合は、Data Wranglerで前処理を行うことができます。
今回はしません。
CANVASに戻りましょう。
My Modelsからcreate modelをクリックします。
モデル名をtitanicとします。Predictive analyticsを選択しcreateをクリックします。

データセットは、train_titanicとして、Select datasetをクリックします。

このタイミングで、欠損値も確認できます。
先ほど見た、SurvivedとSexに欠損はないようです。
しかし、Ageには欠損があります。
Data Visualizerをクリックしてみましょう。
ここで、SexごとのSurvivedのヒストグラムを見てみましょう。
(厳密には、生き残った人数がわかります)
他にもいろんな組み合わせでグラフを見てみましょう。
Q3. 欠損データはありますか?
A3. Ageに欠損があります。SexやSurvivedには欠損はありません。
✅ ステップ4: モデリング
上手くモデルを作ってくれることを祈りつつ、Quick buildをクリックします。
ある程度時間が経つと、モデルが完成します。

✅ ステップ5: 評価
作成したモデルが良いモデルかを評価します。
まず、予測に役立つ変数を確認してみましょう。
Ticket や Sexが重要な変数のようです。映画を見たことがある人にとっては、直感的ですね。
Scoringを見てみましょう。
Confusion Matrixと言われる👇の表を視覚的にわかりやすくまとめてくれていますね。
他の指標も確認してみましょう。
Q5-1. 予測に役立つ変数はなんですか?
A5-1. TicketやSexが予測に役立つ変数です。
Q5-2. F1スコアはどうですか?
A5-2. F1スコアは0.774です。
✅ ステップ6: デプロイ
予測をしてみましょう。
Predictをクリックします。
Batch predictionで、Manualを選択し、test_titanicを選びます。
そこから、Genarate predictionsをクリックします。
予測が完了すると、予測結果が入っcsvをダウンロードできます。
右側にあるstatusの3点リーダーからdownloadをクリックします。
得られたcsvには、予測結果であるsurvivedとその確率を表すProbabilityが入っています。

GUIベースに予測結果を得るだけだと、案件では使いにくいです。
時間のある方は、エンドポイントをデプロイして、API経由で予測結果を得られるようにしてみましょう。Code Editorを使うと、Python環境も使えるのでおすすめです。挑戦してみてください。
本教材では、扱わないことにします。
Q6. 予測結果はどうですか?
A6. 今回は、testデータに対して予測を行いました。テストには答え(ラベル)がないので、予測結果 0, 1を確認するだけになります。
🧹 片付け(リソース削除)
- ワークスペースを停止する
🏁 おつかれさまでした!
この課題では SageMaker Canvasを使って、データ分析の流れを体験してもらいました。
ここからのステップアップは、次のものがあります。全部チャレンジすると、インフラ構築もできるデータサイエンティストになれます!
- (ノーコード)SageMaker Canvasでデータ分析の自動化をしてみる
- (ローコード)SageMaker Data Wranglerでデータ前処理をして、エンドポイント経由で予測してみる
- (notebook)SageMaker StudioでJupyter Notebook と
scikit-learnを使ってみる - (python)optuna の LightGBM チューニングを使って、クラスを使いながらパイプライン(前処理〜予測)を作ってみる
- (Sagemaker Job) Sagemakerの学習ジョブも使って、一連のデータパイプライン(S3/Glue/Redshift/SageMaker Job / Athena / QuickSight)を作ってみる

































