教師あり学習の基本的な流れ
タイタニックのような典型的な機械学習プロジェクトは、いくつかの決まったステップに沿って進められます。ここでは、教師あり学習の基本的な流れを追いながら、それぞれのステップで何を行うのかを理解しましょう。
1. 問題設定 (Problem Definition)
「何を予測したいのか?」を明確にするステップです。
- 目的の明確化: このタスクは「分類」なのか「回帰」なのかを定義します。
- 評価指標の決定: モデルの性能を測るための指標(例: 正解率、適合率、再現率など)を決めます。
タイタニックの例:
- 目的: 乗客が「生存(Survived=1)」するか「死亡(Survived=0)」するかを予測する。これは二値分類問題です。
- 評価指標: 一般的には正解率 (Accuracy) が使われます。つまり、全乗客のうち、どれくらいの割合を正しく予測できたかを見ます。
2. データ収集 (Data Collection)
予測モデルを学習させるためのデータを集めます。
多くの場合、データはCSVファイルやデータベース、APIなどを通じて提供されます。Kaggleのコンペティションでは、学習用のtrain.csvと、予測対象のtest.csvが提供されるのが一般的です。
タイタニックの例:
- Kaggleから提供される
train.csv(乗客情報と生存結果)とtest.csv(乗客情報のみ)を使用します。
3. データの前処理と特徴量エンジニアリング
集めたデータを機械学習モデルが学習しやすい形に整える、非常に重要なステップです。「Garbage in, garbage out(ゴミを入れればゴミしか出てこない)」という言葉があるように、このステップの質がモデルの性能を大きく左右します。
- 欠損値の処理: データに存在する「抜け」や「漏れ」(NaNなど)をどう扱うか決めます。(例: 平均値で埋める、中央値で埋める、行ごと削除する)
- カテゴリカルデータの変換: 「男性/女性」や「乗船港」といった文字列データを、モデルが扱える数値に変換します。(例: One-Hotエンコーディング、ラベルエンコーディング)
- 特徴量の作成 (Feature Engineering): 既存のデータから、予測に役立ちそうな新しい特徴量を自ら作り出します。(例: 「兄弟/配偶者の数」と「親/子供の数」を足して「家族の人数」という新しい特徴量を作る)
- スケーリング: 年齢や運賃など、数値のスケールが大きく異なる特徴量を、同じ範囲に収まるように変換します。(例: 標準化、正規化)
4. モデルの選択 (Model Selection)
問題の種類やデータの特性に応じて、使用する機械学習アルゴリズムを選びます。
最初はシンプルなモデルから試し、徐々に複雑なモデルを試していくのが一般的です。
分類問題でよく使われるモデル:
- ロジスティック回帰 (Logistic Regression)
- 決定木 (Decision Tree)
- ランダムフォレスト (Random Forest)
- サポートベクターマシン (SVM)
- 勾配ブースティング (Gradient Boosting)
5. モデルの学習 (Model Training)
選んだモデルに、前処理済みの学習用データ(train.csv)を与えて学習させます。
このプロセスで、モデルはデータ内のパターンや関係性を学び、予測のための内部的なルールを構築します。
6. モデルの評価 (Model Evaluation)
学習済みモデルが未知のデータに対してどれくらいの性能を持つかを評価します。
重要: 学習に使ったデータで評価してはいけません(カンニングと同じで、良い性能が出て当然だからです)。学習データをさらに「学習用」と「検証用」に分割し、検証用データで性能を測るのが一般的です。(これをホールドアウト法や交差検証法と呼びます)
評価結果が目標に達しない場合は、ステップ3〜5に戻り、前処理の方法やモデルの選択、パラメータの調整(ハイパーパラメータチューニング)を繰り返します。
7. 予測 (Prediction)
モデルの性能に満足したら、いよいよ本番です。
学習に使っていない新しいデータ(test.csv)に対して、学習済みモデルを使って予測値を生成します。
タイタニックの例:
test.csvの乗客データを使って、各乗客の生存確率を予測し、Kaggleに提出するファイルを作成します。
これらのステップを理解することで、Kaggleのタイタニック問題に体系的に取り組む準備が整います。