教師あり/なし/強化学習
田中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日の行動データ |
| アクション | 予測結果をどう活用するか? | 離反リスク高の顧客にクーポン配布 |
よくある問題設定のミス
- データリーケージ: 予測時には使えない未来の情報を特徴量に含めてしまう
- ラベルの定義が曖昧: 「離反」の定義が不明確で、学習データの品質が低い
- 目的とずれた評価指標: ビジネス上は「見逃し」が問題なのに正解率で評価
# データリーケージの例(やってはいけない)
# 「離反後のサポート問い合わせ回数」を特徴量に含める
# → 予測時にはまだ離反していないので、この情報は使えない
# 正しい特徴量の例
# 「過去30日間のサポート問い合わせ回数」
# → 予測時に利用可能なデータのみを使う
NetShop の離反予測はどのタイプ?
NetShop の離反予測は教師あり学習の分類問題です。
- 正解ラベル: 過去に離反した/しなかったという実績データがある
- 予測出力: 離反する(1)/ しない(0)の二値分類
- 目的: 離反リスクの高い顧客を事前に特定し、施策を打つ
まとめ
- 教師あり学習: ラベル付きデータで予測モデルを構築(分類・回帰)
- 教師なし学習: ラベルなしでデータの構造を発見(クラスタリング・次元削減)
- 強化学習: 報酬を最大化する行動を学習
- 問題設定が ML プロジェクトの成否を決める
- データリーケージや曖昧なラベル定義に注意
チェックリスト
- 教師あり・教師なし・強化学習の違いを説明できる
- 分類と回帰の違いを理解した
- ビジネス課題を ML 問題に変換する流れを把握した
- データリーケージの概念を理解した
次のステップへ
次のレッスンでは、機械学習のワークフロー全体像を学びます。データの分割方法や過学習の概念を理解し、正しくモデルを評価する方法を身につけましょう。
推定読了時間: 30分