先日、Kaggleのタイタニックコンペを課題とした社内研修を行いました。
その際の説明資料と参加者にやってもらった演習を共有します。
資料と課題はKaggleのNotebookとなっていますので、興味のある方はそちらも合わせてご確認ください。
ちなみにQiita初投稿です。
はじめに
なぜKaggleを選んだか
研修だけで全てを教える(学ぶ)ことはできないため、各個人で継続して取り組んでもらう必要があると考えました。
何かを学ぼうとしたときに環境構築で躓くこともあるため、それが不要となるKaggleを利用することにしました。
想定した参加者
- 機械学習に興味を持っている
- Kaggleを利用したことがない
- Python未経験
研修について
研修の目標
- 機械学習の流れを体験する
- 『自分でもプログラムが書けそう』と感じてもらう
説明資料、演習課題
Kaggleを使用するので、説明資料もKaggleのNotebookとして作成しました。
-
説明資料:Kaggleチュートリアル『Titanic生存者予測』をやってみよう!
https://www.kaggle.com/plasticgrammer/kaggle-titanic -
演習課題:Titanic: Predict survivors (ΦωΦ)
https://www.kaggle.com/plasticgrammer/titanic-predict-survivors
###進め方
説明と演習をバランスよく組み合わせようと思い、下記の流れで進めました。
- 資料を使ってデータ分析まで説明
- Pythonの基本
- Kaggleの使い方、用語説明
- 機械学習の流れを確認(データ読込,データ分析)
-
データ分析の演習
-
資料を使って予測まで説明
- 前処理
- モデル作成、学習、予測
- 予測精度向上の課題
用意した演習
下記内容は演習用のNotebookにも記載していますが、一応こちらの記事にも記載しておきます。
データ分析
step1) データの概要を確認
- トレーニングデータとテストデータの行数、列数を確認しましょう
- トレーニングデータの先頭5件を表示してみましょう
- テストデータの先頭5件を表示してみましょう
- トレーニングデータとテストデータの違いは何でしょうか?
機械学習で生存者を予測するとは、具体的にどのようなことでしょうか?
step2) データの詳細を確認
- infoメソッドでトレーニングデータの情報を表示してみましょう
- トレーニングデータの欠損値状況を確認しましょう
- テストデータの欠損値状況を確認しましょう
- ターゲット変数 Survived の値毎の件数を確認してみましょう
- 変数 Pclass にはどんな値が設定されているか確認してみましょう
- 変数 Age の分布をヒストグラムで確認してみましょう
- 変数 Age の最大値、平均値、中央値を確認してみましょう
- 変数 Sex の分布をvalue_counts+棒グラフで確認してみましょう
- pd.crosstabを使って、【Survived毎】の 変数 Sex の件数を確認してみましょう
Step3) 相関関係があるのか可視化
- 【Survived毎】の 変数 Sex の件数を棒グラフで確認してみましょう
相関関係はありそうですか?あるとしたらどのような傾向がありますか? - 【Survived毎】の 変数 Pclass の件数を棒グラフで確認してみましょう
相関関係はありそうですか?あるとしたらどのような傾向がありますか?
特徴量作成および予測
前提)Age(欠損値0埋め)、Sexを使用してRandomForestで予測する流れは作成済み
- Age の欠損値を中央値で埋めてみましょう
- Fare を予測に使ってみましょう
- Embarked を予測に使ってみましょう
- SibSp+Parch+1 を FamilySize として追加してみましょう
- FamilySize<=1 を IsAlone として追加してみましょう
- Cabin の1文字目を特徴量として追加してみましょう
振り返っての反省
今回の研修は5時間で行いました。
最後に用意していた予測精度を上げる課題を進めるのに、思った以上に時間かかり、
結果として難しかったという印象を持たれてしまいました。
後日、追加研修という形で再度実施しましたが、演習多めで1つ1つじっくりと進めるのが良いと感じました。
おわりに
タイタニックコンペについて書かれた記事は多く、色々と参考にさせて頂きました。
Python初心者向けの研修課題にしようとした時に、資料としてまとめることが多かったので、私も皆さんのお役に立てればと共有しました。