主成分分析(PCA詳細) しゅせいぶんぶんせき
主成分分析PCA特徴抽出次元削減固有値分解
主成分分析(PCA詳細)について教えて
簡単に言うとこんな感じ!
古典的機械学習のセクションでのPCAは、次元削減の前処理だけでなく「データの構造発見・ノイズ除去・特徴抽出」のための重要な分析手法として使われるよ。「顧客の100項目のアンケートを少数の主成分に圧縮して傾向を分析する」みたいな使い方だ!
機械学習における主成分分析の役割
主成分分析(PCA)は、次元削減の前処理(→PCAを参照)だけでなく、古典的機械学習のパイプラインにおける特徴抽出手法としても重要です。
機械学習での主要な活用シーン
| 活用シーン | 内容 |
|---|---|
| 前処理・次元削減 | 多重共線性の解消、高次元データの圧縮 |
| 可視化 | 高次元データを2D/3Dでプロット |
| ノイズ除去 | 小さな主成分(ノイズ)を切り捨て |
| 特徴抽出 | 元の変数の意味を保った合成特徴量の作成 |
| 外れ値検出 | 主成分空間での距離(マハラノビス距離)を利用 |
Kernel PCA:非線形への拡張
標準PCAは線形変換しかできません。Kernel PCA は SVMのカーネルトリックと同様に、高次元空間への写像を介して非線形な主成分を抽出します。
from sklearn.decomposition import KernelPCA
kpca = KernelPCA(n_components=2, kernel='rbf', gamma=0.04)
X_kpca = kpca.fit_transform(X)
Incremental PCA:大規模データへの対応
大きなデータセットをメモリに乗せられない場合、Incremental PCA(ミニバッチPCA)が使えます。
from sklearn.decomposition import IncrementalPCA
ipca = IncrementalPCA(n_components=2, batch_size=200)
for X_batch in batches:
ipca.partial_fit(X_batch)
PCAと因子分析の違い
PCAとよく混同される因子分析(Factor Analysis)との違い:
| 比較項目 | PCA | 因子分析 |
|---|---|---|
| 目的 | 分散最大化(データ圧縮) | 潜在構造発見 |
| 仮定 | なし | 測定誤差を仮定 |
| 用途 | 前処理・可視化 | 心理学・社会科学 |
歴史と背景
- 1901年:ピアソンが発表
- 現在:scikit-learnの
PCAクラスで即座に実行可能な定番手法
関連用語
- PCA(次元削減セクション) — 基本的な使い方
- 次元削減 — PCAが属するカテゴリ
- 多重共線性 — PCAで解消できる問題
- SVMとカーネルトリック — Kernel PCAのアイデアの由来
- t-SNE — PCAの非線形代替(可視化向け)