機械学習の基礎のきそ
- 1. 機械学習とは何か
- 2. 3つの大分類
- 3. 教師あり学習の2タイプ
- 4. 絶対に覚える4つの言葉
- ① 特徴量(Feature/説明変数)
- ② 目的変数(Target/正解ラベル)
- ③ 学習(fit/train)
- ④ 推論・予測(predict)
- 5. データの3分割
- 6. 過学習(Overfitting)── 最重要の敵
- たとえ話
- 症状
- 対策
- 汎化性能(Generalization)
- 7. 交差検証(Cross Validation/CV)
- ホールドアウト法(単純な分け方)
- k分割交差検証(k-Fold Cross Validation)
- 代表的なCVの種類
- 8. 評価指標(Metric)をもう一段くわしく
- 分類でよく使うもの
- 回帰でよく使うもの
- 9. モデルの種類(どれを使えばいいか)
- 覚えておくべき経験則
- 決定木 → ランダムフォレスト → GBDT の関係
- 10. 特徴量エンジニアリング(Feature Engineering)
- カテゴリ変数の扱い(文字列の列)
- 欠損値の扱い
- 11. リーク(Leakage)── やってはいけない事故
- 12. アンサンブル(Ensemble)
- まとめ:このページで覚えた言葉
前のページで動かしたコードが「何をしていたのか」を、日本語の言葉で固めます。数式は出しません。言葉の意味をつかむことが目的です。
1. 機械学習とは何か
機械学習= 大量のデータから「規則性」をコンピュータに見つけさせ、未知のデータに対して答えを出させる技術。
人間が「女性なら生存とする」とルールを書くのが従来のプログラム。データを見せるだけで、その手のルールを自動で大量に作るのが機械学習です。
タイタニックの例で言えば、
「Sexがfemaleで、Pclassが1か2なら、生存の確率が非常に高い」
「Sexがmaleで、Ageが16以上で、Fareが低いなら、死亡の確率が高い」
:
(こういうルールを数百〜数千個、自動生成する)
という作業をしています。
2. 3つの大分類
| 種類 | 日本語 | 中身 | Kaggleでの比率 |
|---|---|---|---|
| Supervised Learning | 教師あり学習 | 正解つきデータから学ぶ | 9割以上 |
| Unsupervised Learning | 教師なし学習 | 正解なし。似たもの同士をまとめる等 | 補助的に使う |
| Reinforcement Learning | 強化学習 | 試行錯誤して報酬を最大化 | 一部のコンペのみ |
Kaggleのほとんどのコンペは 教師あり学習 です。train.csv に正解(Survived)が付いているのが「教師あり」の意味です。
3. 教師あり学習の2タイプ
| タイプ | 日本語 | 当てるもの | 例 |
|---|---|---|---|
| Classification | 分類 | カテゴリ(どれか) | 生存/死亡、犬/猫、不正/正常 |
| Regression | 回帰 | 数値 | 住宅価格、来月の売上、気温 |
- Titanic → 分類(2値分類:答えが2種類)
- House Prices → 回帰
分類はさらに、2値分類(binary) と 多クラス分類(multi-class) に分かれます。
4. 絶対に覚える4つの言葉
① 特徴量(Feature/説明変数)
予測の材料になる列のこと。Titanicなら Pclass, Sex, Age, Fare...。コードでは慣習的に X と書きます。
② 目的変数(Target/正解ラベル)
当てたい列のこと。Titanicなら Survived。コードでは慣習的に y と書きます。
③ 学習(fit/train)
特徴量Xと目的変数yのセットを見せて、XからYを当てる法則をモデルに覚えさせること。
model.fit(X, y)
④ 推論・予測(predict)
覚えた法則を使って、答えを知らないデータに答えを出させること。
pred = model.predict(X_test)
この4つは、どのコンペでも、どのモデルでも共通です。
5. データの3分割
Kaggleで混乱しやすい最重要ポイントです。
┌─────────────── 主催者が配るデータ ───────────────┐
│ │
│ train.csv (正解あり) test.csv(正解なし)│
│ │ │ │
│ │ 自分でさらに分割 └─→ 提出用に予測する
│ ↓ │
│ ┌──────────┬──────────┐ │
│ │ 学習用 │ 検証用 │ │
│ │ (train) │ (valid) │ │
│ └──────────┴──────────┘ │
│ 法則を学ぶ 手元で採点する │
└──────────────────────────────────────────────────┘
| 名前 | 日本語 | 役割 |
|---|---|---|
| train | 学習データ | モデルに法則を覚えさせる |
| validation (valid) | 検証データ | 自分で精度を測るために取っておく |
| test | テストデータ | 提出用。正解は主催者しか知らない |
なぜ検証データが必要か?学習に使ったデータで採点すると、丸暗記しているだけでも満点になってしまうからです。学校の試験で、答えを見ながら解くようなものです。
6. 過学習(Overfitting)── 最重要の敵
過学習= 学習データを「丸暗記」しすぎて、未知のデータに弱くなった状態。
たとえ話
過去問だけを丸暗記した受験生は、過去問では満点ですが、本番で少し出題が変わると解けません。これが過学習です。
症状
| 学習データのスコア | 検証データのスコア | 判定 |
|---|---|---|
| 0.99 | 0.72 | 過学習(差が大きすぎる) |
| 0.65 | 0.64 | 未学習(そもそも学べていない) |
| 0.84 | 0.81 | 良好 |
対策
- 使う特徴量を減らす/増やしすぎない
- モデルを単純にする(決定木の深さ
max_depthを浅くする等) - データを増やす
- 正則化(regularization) というブレーキをかける
- 交差検証で常に監視する
対義語は 未学習(Underfitting):モデルが単純すぎて規則性を捉えきれていない状態です。
汎化性能(Generalization)
未知のデータに対しても通用する力のこと。Kaggleで求められているのは、学習データでの点数ではなく 汎化性能 です。Private LBはそれを測るための仕組みです。
7. 交差検証(Cross Validation/CV)
検証データの取り方を工夫した、Kaggleの標準手法です。
ホールドアウト法(単純な分け方)
データの80%で学習、20%で検証。簡単だが、たまたま分け方が良かった/悪かったの影響を受けます。
k分割交差検証(k-Fold Cross Validation)
データを k個(通常5個) に分け、検証役を順番に交代させて k回測り、平均を取ります。
Fold1: [検証][学習][学習][学習][学習] → 0.81
Fold2: [学習][検証][学習][学習][学習] → 0.79
Fold3: [学習][学習][検証][学習][学習] → 0.83
Fold4: [学習][学習][学習][検証][学習] → 0.80
Fold5: [学習][学習][学習][学習][検証] → 0.82
平均 → 0.81 ← これが「CVスコア」
この平均値を CVスコア と呼びます。Kagglerが毎日口にする数字です。
代表的なCVの種類
| 名前 | 使う場面 |
|---|---|
| KFold | 基本形 |
| StratifiedKFold | 分類で、各Foldの正解の比率を揃えたいとき(ほぼ常用) |
| GroupKFold | 同一人物・同一店舗が学習と検証に分かれないようにしたいとき |
| TimeSeriesSplit | 時系列データ(未来のデータで学習して過去を予測しない) |
8. 評価指標(Metric)をもう一段くわしく
分類でよく使うもの
Accuracy(正解率)全体のうち何%当たったか。直感的だが、不均衡データに弱い。(例:不正利用が0.1%しかないデータでは、全部「正常」と答えるだけで99.9%になってしまう)
混同行列(Confusion Matrix)予測と正解の組み合わせを表にしたもの。
| 予測:陽性 | 予測:陰性 | |
|---|---|---|
| 実際:陽性 | TP(真陽性) | FN(偽陰性・見逃し) |
| 実際:陰性 | FP(偽陽性・誤検知) | TN(真陰性) |
- Precision(適合率)= 陽性と予測したうち本当に陽性だった割合(誤検知の少なさ)
- Recall(再現率)= 本当の陽性のうち見つけられた割合(見逃しの少なさ)
- F1スコア= PrecisionとRecallのバランスを取った指標
AUC(ROC-AUC)「陽性のものに高いスコアを付けられているか」の順位的な指標。0.5=当てずっぽう、1.0=完璧。2値分類のコンペで最も多く使われます。
LogLoss(交差エントロピー)確率の確からしさを測る。自信満々に外すと大きく減点される。低いほど良い。
回帰でよく使うもの
| 指標 | 特徴 |
|---|---|
| MAE | 誤差の絶対値の平均。外れ値に強い |
| RMSE | 二乗してから平均→ルート。大きな外れを強く罰する |
| RMSLE | 対数を取ってからRMSE。価格・売上など桁が大きく動くデータ向け |
| R²(決定係数) | 1に近いほど良い |
9. モデルの種類(どれを使えばいいか)
| モデル | 日本語 | 特徴 | 入門での位置づけ |
|---|---|---|---|
| 線形回帰 / ロジスティック回帰 | — | 単純・速い・説明しやすい | 最初のベースライン |
| 決定木(Decision Tree) | 決定木 | if文の木。人間が読める | 考え方の基礎 |
| ランダムフォレスト | — | 決定木を数百本作って多数決 | 入門の定番 |
| GBDT(LightGBM / XGBoost / CatBoost) | 勾配ブースティング決定木 | 表形式データの最強クラス | ここが本命 |
| ニューラルネット / ディープラーニング | — | 画像・音声・自然言語で圧倒的 | 画像系コンペ向け |
覚えておくべき経験則
CSVのような表形式(テーブル)データなら、まず LightGBM。 画像・音声・テキストなら、ディープラーニング。
これはKaggle界の常識です。表データでディープラーニングを頑張っても、たいていLightGBMに勝てません。
決定木 → ランダムフォレスト → GBDT の関係
- 決定木:「Sexはfemale? → はい → Pclassは3未満? → はい → 生存」のような分岐の木を1本作る。単体では精度が低く、過学習しやすい。
- ランダムフォレスト:木を数百本、データや特徴量をランダムに変えて作り、多数決を取る。ばらつきが減って安定する(バギング)。
- GBDT:木を1本作る → 外した部分(誤差)を重点的に 次の木で修正する → これを数百回繰り返す(ブースティング)。精度が非常に高い。
10. 特徴量エンジニアリング(Feature Engineering)
既存の列を加工・組み合わせて、予測に効く新しい列を作ること。
Kaggleで 最も差が付く作業 です。モデル選びよりも効きます。
| 手法 | 例 |
|---|---|
| 四則演算で合成 | FamilySize = SibSp + Parch + 1 |
| 文字列から抽出 | 名前から敬称(Mr / Mrs / Master)を取り出す |
| 日付の分解 | 日時 → 年・月・曜日・時間帯・祝日か |
| 集約(グループ統計) | 「その人が属するグループの平均購入額」など |
| ビニング(離散化) | 年齢 → 子ども/成人/高齢の3区分に分ける |
| 対数変換 | 価格や金額の歪みをならす |
カテゴリ変数の扱い(文字列の列)
| 手法 | 内容 | 注意 |
|---|---|---|
| Label Encoding | 各カテゴリに0,1,2…と番号を振る | 決定木系ならこれでOK |
| One-Hot Encoding | カテゴリごとに0/1の列を作る | 種類が多いと列が爆発する |
| Target Encoding | カテゴリごとの目的変数の平均値に置き換える | 強力だが リークしやすいので要注意 |
欠損値の扱い
- 中央値・平均値で埋める(数値)
- 最頻値や「欠損」という新カテゴリで埋める(カテゴリ)
- 「欠損だったかどうか」自体を新しい列にする(欠損に意味があることが多い)
- LightGBMは欠損値のまま扱えるので、埋めない選択肢もある
11. リーク(Leakage)── やってはいけない事故
リーク= 本来知り得ないはずの情報が、学習に紛れ込むこと。
典型例:
- 検証データの情報を使って前処理をしてしまう(全データの平均で欠損を埋める等)
- 「予測時点では確定していない未来の情報」を特徴量に入れる
- IDや並び順に正解が紛れている(データ側の不備。これはコンペの醍醐味にもなる)
リークがあると CVスコアは異常に良いのに、LBスコアが悪い という現象が起きます。
12. アンサンブル(Ensemble)
複数のモデルの予測を組み合わせて精度を上げる手法。上位陣は必ずやります。
| 手法 | 内容 |
|---|---|
| 平均(Averaging) | 複数モデルの予測値を単純平均する。簡単で効果大 |
| 加重平均 | 精度の良いモデルに重みを多く与える |
| 多数決(Voting) | 分類で多数決を取る |
| スタッキング(Stacking) | モデルの予測値を特徴量にして、さらに別モデルで学習する |
異なる種類のモデル(LightGBM と ニューラルネット など)を混ぜるほど効果が高いのが経験則です。
まとめ:このページで覚えた言葉
特徴量 / 目的変数 / 学習 / 推論 / 学習データ / 検証データ / テストデータ /過学習 / 未学習 / 汎化性能 / 交差検証 / CVスコア / 評価指標 / AUC / RMSE /決定木 / ランダムフォレスト / GBDT / 特徴量エンジニアリング / エンコーディング /欠損値 / リーク / アンサンブル
全部わからなくて大丈夫です。用語集にも載せてあるので、出てくるたびに戻ってください。