第14回 統合・最終:目的関数の比較と手法選択¶
本日の到達目標¶
- 重回帰・PCA・k-means・PLSを目的関数の観点から統一的に比較できる
- 同一データに対して適切な手法を選択し結果を解釈できる
- 再現可能な実行手順(DAG含む)を最終レポートとして記述できる
1. 前半・後半の統括¶
1.1 課題全体のナラティブ¶
本科目の設計思想を振り返る:
核心メッセージ:
大規模データ分析において、統計的手法の正しさだけでなく、
計算可能性(I/O設計・スケーラビリティ)と再現可能性(整合性・DAG) が同等に重要。
2. 目的関数による4手法の統一的理解¶
2.1 各手法の目的関数一覧¶
| 手法 | 目的関数 | 最小化/最大化 | 対象 |
|---|---|---|---|
| 重回帰(OLS) | \(RSS = \|\mathbf{y} - \mathbf{X}\boldsymbol{\beta}\|^2\) | 最小化 | \(y\) と \(\mathbf{X}\boldsymbol{\beta}\) の差 |
| PCA | \(\text{Var}(\mathbf{X}\mathbf{w}) = \mathbf{w}^T\mathbf{S}\mathbf{w}\) | 最大化 | \(\mathbf{X}\) の射影後分散 |
| k-means | \(WCSS = \sum_j\sum_{i\in C_j}\|\mathbf{x}_i - \boldsymbol{\mu}_j\|^2\) | 最小化 | クラスタ内の距離 |
| PLS | \(\text{Cov}(\mathbf{X}\mathbf{w},\ \mathbf{y}\mathbf{q})\) | 最大化 | \(\mathbf{X}\) と \(\mathbf{y}\) の共変動 |
2.2 「何を最適化するか」から見た手法選択¶
目的:y を予測したい
├→ 説明変数が少なく共線性が低い → 重回帰(OLS)
└→ 説明変数が多く共線性が高い → PLS
目的:データの構造を探索したい
├→ 連続的な変動パターンを捉えたい → PCA(次元削減)
└→ データをグループに分けたい → k-means(クラスタリング)
2.3 数理的な関連性¶
PCA と k-means の関係: - k-means は「クラスタ重心を基底とした低次元表現」と解釈できる - 2クラスタの k-means は第1主成分方向の二分割に近い(Ding & He, 2004)
PLS と PCA の関係: - PCA:\(\mathbf{X}\) の固有ベクトルを求める - PLS:\(\mathbf{X}^T \mathbf{y} \mathbf{y}^T \mathbf{X}\) の固有ベクトルを求める(yで重み付けした共分散行列)
PLS と 重回帰の関係: - 成分数 \(A = p\)(全変数と同じ数)にすると PLS の解は OLS と一致する - 成分数 \(A < p\) にすることで正則化効果が生まれる
3. 同一データへの適用手順¶
3.1 第4回で設計した特徴量からのフルパイプライン¶
生データ
↓ 欠測処理(第1回:品質課題)
↓ 時間窓特徴量生成(第4回:ウィンドウ関数)
↓ スナップショット固定(第3回:整合性)
↓ 標準化
↓
┌──────────────────────────────────────────┐
│ │
│ A: 重回帰 → 偏回帰係数・VIF診断 │
│ B: PCA + 重回帰 → 主成分係数・寄与率 │
│ C: PCA + k-means → クラスタ構造の把握 │
│ D: PLS → 共分散成分・VIPスコア│
│ │
└──────────────────────────────────────────┘
↓ 各手法の予測/分類結果を比較
↓ RMSEP(交差検証)・シルエット係数
↓ 解釈:係数・ローディング・VIP・クラスタ重心
3.2 手法選択の判断フロー¶
Step 1: y(目的変数)があるか?
Yes → Step 2
No → Step 3
Step 2: 共線性(VIF)は高いか?
高い(VIF>10)→ PLS
低い → 重回帰
Step 3: グループに分けたいか?それとも連続的な変化を見たいか?
グループ → k-means(次元削減にPCAを前段として使う)
連続的変化 → PCA(可視化・特徴抽出)
4. 再現可能な実行手順の記述¶
4.1 再現性のための「3つの固定」¶
| 固定すべき要素 | 方法 | 関連回 |
|---|---|---|
| データ | スナップショットファイル(日付付き) | 第3回 |
| 処理手順 | DAGとして文書化 | 第4回 |
| 乱数シード | 設定ファイルに記録 | 第11回 |
4.2 最終レポートのDAG記述例¶
DAG: 最終レポート用パイプライン
nodes:
raw_data: "data/raw_sales_2024.parquet"
snapshot: "data/snapshot_20240101.parquet"
features: "data/features_window.parquet"
impute: "欠測処理(第1回の方針に基づく)"
window: "時間窓特徴量生成(MA7/14/30, ラグ1-3, 頻度7/30)"
standardize: "標準化(相関行列ベース)"
pca: "PCA(ランダム化SVD, k=10, random_seed=42)"
kmeans: "k-means(k=3, init=k-means++, random_seed=42)"
ols: "重回帰(AIC基準ステップワイズ)"
pls: "PLS(A=CV最適, walk-forward CV, fold=5)"
edges:
raw_data → impute → window → snapshot
snapshot → standardize
standardize → pca → kmeans
standardize → ols → vif_diagnosis
standardize → pls → vip_score
5. 近似と精密の使い分けの整理¶
本科目を通して出てきた「近似」と「精密」の対応:
| 場面 | 近似手法 | 精密手法 | 使い分け |
|---|---|---|---|
| 変数スクリーニング | HyperLogLog, Count-Min | 厳密な集計 | 探索段階 |
| カーディナリティ確認 | HyperLogLog | COUNT DISTINCT | 前段チェック |
| SVD計算 | ランダム化SVD | 完全SVD | 大規模・高次元 |
| クラスタリング | ミニバッチ k-means | 標準 k-means | \(n > 10^5\) |
| 交差検証 | 粗いCV(fold=3) | k=5〜10 fold CV | 成分数探索の序盤 |
6. コンセプトマップ(本科目全体の構造)¶
ビッグデータ(5V)
↓
品質課題(欠測・外れ値・偏り)
↓
┌───────────┼───────────┐
列指向 整合性 近似
(第2回) (第3回) (第5回)
\ | /
↘ ↓ ↙
DAGパイプライン(第4回)
時間窓特徴量
↓
┌─────────────────┼─────────────────┐
↓ ↓ ↓
重回帰 PCA PLS
RSS最小化 分散最大化 共分散最大化
(第6・7回) (第8・9回) (第12・13回)
↓ ↓
VIF診断 k-means(第10・11回)
変数選択 WCSS最小化
シルエット分析
↓
目的関数による統一理解(本日)
7. 最終レポートのガイドライン¶
7.1 レポートの構成(推奨)¶
- 分析課題の設定(第1回を参照):目的変数・説明変数・データの粒度
- 前処理・特徴量設計(第3・4回を参照):スナップショット日時、時間窓の定義
- 各手法の適用と結果(第6〜13回):
- 重回帰:偏回帰係数・VIF・残差プロット
- PCA:寄与率・バイプロット
- k-means:シルエット係数・クラスタ解釈
- PLS:VIPスコア・CV-RMSEP
- 手法選択の根拠:目的関数の観点から比較
- 再現可能な実行手順:DAGとして記述、乱数シード・データ版を明記
- コンセプトマップ:本科目の学習内容と自分の分析の関係を図示
7.2 評価基準(最終レポート 50%)¶
| 観点 | 内容 | 配点目安 |
|---|---|---|
| 正確性 | 各手法の目的関数と結果を正確に記述 | 30% |
| 統合的理解 | 手法間の関係と使い分けの根拠 | 30% |
| 再現可能性 | DAGと固定情報の記述 | 20% |
| 考察の深さ | 結果の解釈・限界・改善点 | 20% |
8. 本日のまとめ(=本科目のまとめ)¶
- 4つの多変量解析手法は目的関数(何を最小化/最大化するか) で統一的に理解できる
- 手法選択の原則:目的変数の有無・共線性の有無・探索か予測かで決まる
- どの手法も前半の基盤技術(列指向・整合性・DAG・近似)が計算可能性と再現性を支えている
- 最終レポートでは「なぜこの手法を選んだか」を目的関数の言葉で説明すること
最終レポート提出について¶
- 提出期限:最終授業から2週間後(LMSで確認)
- 形式:A4 5〜8枚(コンセプトマップ含む)
- データ:授業中に設計した自分のデータセット、または公開データセット
- コード・出力は付録として別添可(字数不算入)
参考文献(本科目全体)¶
前半(基盤技術)¶
- Kleppmann, M. (2017). Designing Data-Intensive Applications. O'Reilly.(第3〜4章:ストレージ・インデックス)
- Brewer, E.A. (2000). "Towards Robust Distributed Systems." PODC Keynote.(CAP定理)
- Halko, N., Martinsson, P.G., & Tropp, J.A. (2011). "Finding Structure with Randomness." SIAM Review.(ランダム化SVD)
後半(多変量解析)¶
- Johnson, R.A., & Wichern, D.W. (2007). Applied Multivariate Statistical Analysis. Pearson.
- Abdi, H. (2010). "Partial Least Squares Regression." Encyclopedia of Research Design.
- Jolliffe, I.T. (2002). Principal Component Analysis. Springer.
- Arthur, D., & Vassilvitskii, S. (2007). "k-means++: The Advantages of Careful Seeding." SODA.