Skip to main content

教師あり学習の基本的な流れ

タイタニックのような典型的な機械学習プロジェクトは、いくつかの決まったステップに沿って進められます。ここでは、教師あり学習の基本的な流れを追いながら、それぞれのステップで何を行うのかを理解しましょう。


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のタイタニック問題に体系的に取り組む準備が整います。