結論
主成分分析は、データのばらつき(分散)が大きい方向を順に求め、多くの変数を少数の主成分にまとめる分析の手法で、特異値分解は、どんな形の行列も3つの行列の積に分ける線形代数の計算です。平均を引いて中心化したデータ行列を特異値分解すると主成分が求まるため、特異値分解は主成分分析を計算する道具としても使われます。
比較表
| 観点 | 主成分分析(PCA) | 特異値分解(SVD) |
|---|---|---|
| 英語 | principal component analysis | singular value decomposition |
| 何をするものか | データのばらつきをできるだけ保つ、互いに無相関な少数の合成変数(主成分)を見つける | 行列をA = UΣVᵀの形に分解する |
| 対象 | データ行列(行がサンプル、列が変数) | 任意のm行n列の行列(正方行列でなくてよい) |
| 平均を引く処理(中心化) | 必ず行う。単位の異なる変数は標準化もする | 必須ではない。潜在意味解析(LSA)などでは平均を引かずに分解する |
| 得られるもの | 主成分の方向、各主成分の分散、寄与率・累積寄与率 | 左特異ベクトル(U)、特異値(Σ)、右特異ベクトル(V) |
| 互いの対応 | 主成分の方向は、中心化したデータ行列の右特異ベクトル(Vの列)に当たる | 中心化したデータ行列の特異値を2乗し「データ数−1」で割ると、各主成分の分散(不偏分散)になる |
| 主な用途 | 次元削減、可視化、相関の強い変数の要約、ノイズの低減 | 低ランク近似によるデータ圧縮、潜在意味解析(LSA)、推薦システム、主成分分析の計算 |
| シラバス項目 | 技術分野 項目8 教師なし学習(キーワード「主成分分析(PCA)」) | 技術分野 項目8 教師なし学習(キーワード「特異値分解(SVD)」) |
| G検定での問われ方 | 分散が最大の方向を順に求める考え方、主成分どうしが無相関になる点、寄与率と累積寄与率の計算 | 正方行列以外にも使えること、大きい特異値だけを残す低ランク近似、主成分分析や推薦システムとの関係 |
最終確認日:2026年11月1日
それぞれの説明
主成分分析と特異値分解は、どちらも次元削減の話題で出てくるため、混同されがちです。主成分分析は「データをどうまとめたいか」を決める分析の手法で、特異値分解は「行列をどう分けるか」を決める計算の手法です。
主成分分析
主成分分析は、ばらつき(分散)が最も大きい方向を第1主成分とし、それと直交する方向の中で分散が最も大きい方向を第2主成分とする、という手順で新しい軸を取り直します。各主成分の分散が全体に占める割合を寄与率といい、残す主成分の数を決める目安にします。
平均のまわりのばらつきを扱うので、計算の前に各変数から平均を引きます。単位の異なる変数を扱うときは、標準化もします。
特異値分解
特異値分解は、m行n列の行列AをA = UΣVᵀの形に分けます。UとVは直交行列で、Σの対角には0以上の特異値が大きい順に並びます。正方行列でなくても使えるのが特徴です。
大きい特異値の成分だけを残すと、元の行列を少ない数値で近似できます(低ランク近似)。この近似が二乗誤差の意味で最良になることは、1936年にエッカートとヤングが示しました。文書×単語の行列に使う潜在意味解析(LSA)や、画像の圧縮などに使われます。
2つの関係
平均を引いたデータ行列を特異値分解すると、右特異ベクトル(Vの列)が主成分の方向になり、特異値の2乗を「データ数−1」で割った値が各主成分の分散になります。共分散行列を作って固有値分解しても同じ主成分が得られます。ただ、特異値分解ならデータ行列から直接求められるので、よく使われます。scikit-learnのPCAも、データを中心化してから特異値分解で計算しています。
平均を引かずに特異値分解すると、結果は一般に主成分分析と一致しません。ただしLSAのように、平均を引かずに疎な行列のまま分解する使い方もあり、目的によって使い分けます。
見分けるコツ
- 「分散が最大の方向」「寄与率」「主成分」が出てきたら主成分分析、「特異値」「行列を3つの積に分ける」「低ランク近似」が出てきたら特異値分解です。
- 2つは競合する手法ではありません。主成分分析は何を求めたいかという目的、特異値分解はそれを計算するための道具、という関係で整理します。
- 主成分分析と同じ結果になるのは、平均を引いて中心化したデータ行列を特異値分解したときです。中心化しないで分解すると、一般には主成分分析と別の結果になります。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
文書×単語の出現回数の行列に特異値分解を使う潜在意味解析(LSA)では、主成分分析と同じく、各列の平均を引いてから分解しなければならない。
答えを見る
答え × 誤り
LSAでは、平均を引かずに行列をそのまま分解するのが一般的です。平均を引くと0の多い疎な行列が密な行列になり、計算の負担が増えます。scikit-learnのTruncatedSVDも中心化せずに分解します。
-
ユーザー×商品の評価行列に空欄(未評価)が多くても、通常の特異値分解は、空欄を含めたまま計算できる。
答えを見る
答え × 誤り
通常の特異値分解は、すべての要素が埋まった行列を前提にしています。推薦システムでは、観測された評価だけから低ランクの因子を学ぶ行列分解の手法がよく使われます。
-
中心化したデータ行列を特異値分解して主成分分析を行うとき、各主成分の寄与率は、特異値そのものではなく、特異値を2乗した値の比で求める。
答えを見る
答え ◯ 正しい
各主成分の分散は、特異値の2乗を「データ数−1」で割った値です。寄与率は分散の比なので、各特異値の2乗を、すべての特異値の2乗の和で割って求めます。
関連問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目8 教師なし学習)
- Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press (2016) (5.8.1 Principal Components Analysis(式5.85〜5.95))
- scikit-learn API Reference, sklearn.decomposition.PCA
- scikit-learn API Reference, sklearn.decomposition.TruncatedSVD
- Carl Eckart, Gale Young, The Approximation of One Matrix by Another of Lower Rank, Psychometrika 1(3), 211–218 (1936)
- Yehuda Koren, Robert Bell, Chris Volinsky, Matrix Factorization Techniques for Recommender Systems, Computer 42(8), 30–37 (2009)
ほかの違い比較
- アジャイルとウォーターフォールの違い 進め方とAI開発での使い分け
- 赤池情報量規準(AIC)とベイズ情報量規準(BIC)の違い 罰則の重さ
- バギングとブースティングの違い 並列か逐次か、減らす誤差の違い
- バッチ正規化とレイヤー正規化の違い 平均と分散を計算する範囲の違い
- バッチ学習・ミニバッチ学習とオンライン学習の違い 更新回数とぶれ
- BERTとGPTの違い エンコーダとデコーダ、学習課題の違い
- CBOWとスキップグラムの違い 予測の向きと学習の速さ
- 分類問題と回帰問題の違い 出力の形で見分けるコツと評価指標
- CNN・RNNとTransformerの違い 得意なデータと計算の並列性
- 協調フィルタリングとコンテンツベースフィルタリングの違い 仕組み
- 共分散と相関係数の違い 式の関係と単位・値の範囲
- データ汚染とAdversarial Attackの違い 学習時か推論時かと対策
- 決定木とランダムフォレストの違い 解釈のしやすさと精度・安定性
- 深さ優先探索と幅優先探索の違い 調べる順番・最短解・メモリ
- 営業秘密と限定提供データの違い 3つの要件と刑事罰の有無
- Faster R-CNNとYOLOの違い 2段階型と1段階型、速度と精度
- GANと拡散モデル(Diffusion Model)の違い 学習と生成の仕組み
- GANとVAEの違い 識別器の有無と学習の仕組み
- GDPRと個人情報保護法の違い 法的根拠・本人の権利・制裁金
- 勾配降下法と誤差逆伝播法の違い 勾配を使う側と求める側
- グリッドサーチとランダムサーチの違い 試行回数の決まり方と効率
- ホールドアウト検証と交差検証の違い 分割回数・計算量・使い分け
- 画像分類(物体識別)と物体検出の違い 出力の形と使い分け
- 委託・第三者提供と共同利用の違い 同意の要否と受け手が使える範囲
- k-means法と階層的クラスタリングの違い クラスタ数を決める時期と計算量
- 個人情報・個人データと保有個人データの違い 範囲の入れ子とかかる義務
- 個人情報と個人識別符号の違い 包含関係と当たる例・当たらない例
- L1正則化とL2正則化の違い 罰則の形と重みが0になるか
- 最小二乗法と最尤法の違い 推定の基準と結果が一致する条件
- LIMEとSHAPの違い 局所近似とシャープレイ値の使い分け
- LSTMとGRUの違い ゲートの数と記憶セルの有無
- 機械学習とディープラーニングの違い 包含関係と特徴量の決め方
- 平均絶対値誤差(MAE)と平均二乗誤差(MSE)の違い 外れ値への強さ
- 正規化と正則化の違い 目的と代表的な手法を表で整理
- 主成分分析(PCA)とt-SNEの違い 線形か非線形か、保つ構造の違い
- 適合率と再現率の違い 分母の違いと重視する場面
- プルーニング・量子化と蒸留の違い 何を減らすかと元モデルの扱い
- Q学習とSARSAの違い 更新式の1か所と方策オン・オフ
- RNNとLSTMの違い 記憶セルと勾配消失の起きにくさ
- Self-AttentionとSource-Target Attentionの違い Q・K・Vの出どころ
- セマンティック・インスタンスとパノプティックの違い 背景と個体の扱い
- 新規性と進歩性の違い 比べ方とAI発明での論点
- シグモイド関数とソフトマックス関数の違い 出力の合計と使い分け
- ソフトローとハードローの違い 法的拘束力の有無と日本・EUの例
- 強いAIと弱いAIの違い 心をもつと考えるかの違い
- 教師あり学習・教師なし学習と強化学習の違い 学習の手がかりと代表例
- 特許権と著作権の違い 発生・保護対象・期間とAIでの使い分け
- 匿名加工情報と仮名加工情報の違い 加工の程度と第三者提供の可否
- 転移学習とファインチューニングの違い 重みを固定するか更新するか
- 請負契約と準委任契約の違い 完成義務とAI開発での使い分け
- Zero-shotとFew-shotの違い 与える例の数と重みを更新しない点