LESSON

教師あり/なし/強化学習

田中VPoE:「機械学習にはいくつかの種類がある。NetShop の離反予測はどのタイプに当てはまるか、考えながら聞いてほしい。」

あなた:「種類によって使う場面が違うんですね。」

田中VPoE:「そうだ。問題設定を間違えると、どんなに良いアルゴリズムを使っても意味がない。まず問題を正しく定義することが最も重要だ。」

機械学習の3つのカテゴリ

1. 教師あり学習(Supervised Learning)

正解ラベル付きのデータを使ってモデルを学習する方法です。

# 教師あり学習の例: 離反予測
# 入力: 特徴量(購入履歴、ログイン頻度など)
# 出力: ラベル(離反した: 1, 継続: 0)

from sklearn.ensemble import RandomForestClassifier

X_train = df[['purchase_count', 'avg_amount', 'days_inactive']]
y_train = df['is_churned']  # 正解ラベル

model = RandomForestClassifier()
model.fit(X_train, y_train)  # 正解ラベルを使って学習

教師あり学習は、さらに2つに分かれます。

分類(Classification)

  • 離散的なカテゴリを予測する
  • 例: 離反する/しない、商品カテゴリ、スパム判定
  • 評価指標: 正解率、適合率、再現率、F1スコア

回帰(Regression)

  • 連続的な数値を予測する
  • 例: 顧客の生涯価値(LTV)、来月の売上、在庫需要
  • 評価指標: MAE、MSE、RMSE、R²

2. 教師なし学習(Unsupervised Learning)

正解ラベルなしでデータの構造やパターンを発見する方法です。

# 教師なし学習の例: 顧客セグメンテーション
from sklearn.cluster import KMeans

X = df[['purchase_count', 'avg_amount', 'days_inactive']]

kmeans = KMeans(n_clusters=4)
kmeans.fit(X)  # ラベルなしで学習
df['segment'] = kmeans.labels_  # クラスタ番号が割り当てられる

主な手法:

  • クラスタリング: 類似したデータをグループ化(K-means、DBSCAN)
  • 次元削減: 高次元データを低次元に圧縮(PCA、t-SNE)
  • 異常検知: 通常と異なるデータポイントを検出

3. 強化学習(Reinforcement Learning)

エージェントが環境と相互作用し、報酬を最大化する行動を学習する方法です。

  • ゲームAI、ロボット制御、レコメンデーションの最適化
  • NetShop での応用例: クーポン配布タイミングの最適化

問題設定の重要性

機械学習プロジェクトの成否は、問題設定の質で決まります。

NetShop 離反予測の問題設定

ビジネス課題: 顧客の離反を防ぎたい
    ↓ 機械学習の問題に変換
ML 問題: 「30日以内に離反する顧客」を予測する二値分類問題
    ↓ 具体化
入力: 顧客の行動データ(特徴量)
出力: 離反確率(0.0 ~ 1.0)
評価: F1スコアで0.75以上を目標

問題設定で考えるべきこと

観点質問NetShop の例
予測対象何を予測するのか?30日以内の離反
予測タイミングいつ予測するのか?毎日バッチで実行
予測期間どの時点の状態を予測するのか?今後30日間
データ利用可能性予測時にどのデータが使えるか?過去90日の行動データ
アクション予測結果をどう活用するか?離反リスク高の顧客にクーポン配布

よくある問題設定のミス

  1. データリーケージ: 予測時には使えない未来の情報を特徴量に含めてしまう
  2. ラベルの定義が曖昧: 「離反」の定義が不明確で、学習データの品質が低い
  3. 目的とずれた評価指標: ビジネス上は「見逃し」が問題なのに正解率で評価
# データリーケージの例(やってはいけない)
# 「離反後のサポート問い合わせ回数」を特徴量に含める
# → 予測時にはまだ離反していないので、この情報は使えない

# 正しい特徴量の例
# 「過去30日間のサポート問い合わせ回数」
# → 予測時に利用可能なデータのみを使う

NetShop の離反予測はどのタイプ?

NetShop の離反予測は教師あり学習の分類問題です。

  • 正解ラベル: 過去に離反した/しなかったという実績データがある
  • 予測出力: 離反する(1)/ しない(0)の二値分類
  • 目的: 離反リスクの高い顧客を事前に特定し、施策を打つ

まとめ

  • 教師あり学習: ラベル付きデータで予測モデルを構築(分類・回帰)
  • 教師なし学習: ラベルなしでデータの構造を発見(クラスタリング・次元削減)
  • 強化学習: 報酬を最大化する行動を学習
  • 問題設定が ML プロジェクトの成否を決める
  • データリーケージや曖昧なラベル定義に注意

チェックリスト

  • 教師あり・教師なし・強化学習の違いを説明できる
  • 分類と回帰の違いを理解した
  • ビジネス課題を ML 問題に変換する流れを把握した
  • データリーケージの概念を理解した

次のステップへ

次のレッスンでは、機械学習のワークフロー全体像を学びます。データの分割方法や過学習の概念を理解し、正しくモデルを評価する方法を身につけましょう。


推定読了時間: 30分