主成分分析と因子分析の違いをまとめてみた

主成分分析（PCA）と因子分析（FA）は、できることがよく似ており、違いが分かり難いと思う方も多いのではないでしょうか。

他の記事では数式を使った解説がされていますが、本記事では数式を使わず、説明文だけで両者の違いを比較してみました。

## 基本の考え方
| 主成分分析                                                                                       | 因子分析                                                                               |
|--------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|
| 主成分分析は、観測変数の総分散を最大化する方向を見つける手法です。すべての主成分が観測変数の線形結合であり、相関行列や分散共分散行列を基に計算されます。ノイズも含む全ての分散を説明します。 | 因子分析は、観測変数が共通因子と固有因子の線形結合であると仮定し、共通因子を見つける手法です。観測変数間の共分散を説明する少数の因子を特定します。ノイズを除去し、共通の因子（共分散構造）を説明します。 |


## 共通点

### 1.次元削減:
- 両方とも多次元データを少数の次元に縮約する手法です。
- データの構造を簡潔に表現し、可視化や解釈を容易にします。

### 2.データの構造解析:

- 相関行列を使用してデータ内のパターンを見つける手法です。
- 潜在変数を特定し、データ間の関係性を明らかにします。

## 相違点
|項目|主成分分析（PCA）  |因子分析（FA）  |
|---|---|---|
|目的  |データ全体の分散を説明することが目的です。 |データ内の共通構造や因果関係をモデル化することが目的です。|
|成果|観測変数の総分散が最大となるような新しい座標軸（主成分）を見つけます。 |観測変数の共分散を説明する少数の潜在因子（共通因子）を見つけます。   |
|方法|分散が大きいほど、その特徴量は情報を持っていると仮定し、元の分散を維持しながら特徴量を統合していきます。  |各特徴量は、共通部分＋固有部分＋誤差で成り立っていると仮定し、数学的に共通部分を求めます。  |
|解釈|データ全体の分散を説明します。ノイズも含まれます。  |観測変数間の共分散を説明します。但し、固有因子（誤差）を含みません。 |


## 用途による違い
| 応用                 | 主成分分析（PCA）                   | 因子分析（FA）                              | 備考                                                                         |
|----------------------|----------------------------------|---------------------------------|--------------------------------------------------------------------------------|
| 次元削減             | ○                                | ○                              | 両方の手法ともに次元削減のために利用されます。PCAは分散を最大化する方向を見つけ、因子分析は共分散を説明します。  |
| データの圧縮         | ○                                | ×                              | PCAは情報の損失を最小限に抑えてデータを圧縮しますが、因子分析は圧縮を目的としていません。                        |
| ノイズ除去           | ○                                | ○                              | 両方の手法ともにノイズ除去に利用されます。PCAは分散が小さい成分を無視することでノイズを取り除き、因子分析は固有因子を分離します。   |
| データの可視化       | ○                                | ○                              | 両方の手法ともに2次元や3次元にデータをプロットするために利用されます。                                           |
| データの前処理       | ○                                | ○                              | 次元削減によりデータの前処理が容易になります。                                                   |
| 分散最大化           | ○                                | ×                              | PCAは分散を最大化する方向を見つけますが、因子分析は共分散を説明する共通因子を見つけます。                       |
| 共通因子の抽出       | ×                                | ○                              | 因子分析は共通因子を抽出するために利用されますが、PCAはこれを目的としていません。                               |
| 潜在変数の特定       | ×                                | ○                              | 因子分析は潜在変数を特定しますが、PCAは潜在変数を特定することを目的としていません。                               |
| 機械学習の前処理     | ○                                | ×                              | PCAは次元削減により機械学習モデルの前処理として利用されますが、因子分析はあまり利用されません。                   |
| データの解釈・理解   | ○                                | ○                              | 両方の手法ともにデータの構造やパターンを理解するために利用されます。                                         |
| 固有値・固有ベクトルの利用 | ○                          | ×                              | PCAは固有値・固有ベクトルを利用しますが、因子分析は異なるアプローチを取ります。                              |
| 異常検知             | ○                                | △                              | PCAは異常検知に利用されますが、因子分析は異常検知にも利用可能ですが、PCAほど一般的ではありません。               |
| 説明変数の選択       | ○                                | △                              | PCAは重要な説明変数を選択するために利用されますが、因子分析も利用できますが、PCAの方が一般的です。               |

## まとめ

今回は、主成分分析（PCA）と因子分析（FA）についての違いを文章だけで比較してみました。両者は非常によく似ていますが、両者は目的が違います。
主成分分析（PCA）は、分散が最大となるような新しい座標軸（主成分）を見つけることが目的ですが、共通因子（FA）は観測変数を共通部分＋固有部分＋誤差間に分解し、共通部分（共分散）の関係性を見つけることが目的となります。

Pythonで主成分分析、因子分析を使いたい場合は、下記の記事が役に立つと思います。コピペで使えるサンプルソースが掲載されているので、すぐに試せるようになっています。

[【Python実践】データ分析の影の立役者！主成分分析（PCA）の使い方ガイド](https://analysis-in-manufacturing.resanaplaza.com/2025/02/28/%e3%80%90python%e5%ae%9f%e8%b7%b5%e3%80%91%e3%83%87%e3%83%bc%e3%82%bf%e5%88%86%e6%9e%90%e3%81%ae%e5%bd%b1%e3%81%ae%e7%ab%8b%e5%bd%b9%e8%80%85%ef%bc%81%e4%b8%bb%e6%88%90%e5%88%86%e5%88%86%e6%9e%90/)
[【Python実践】データに潜む共通点を見つける！因子分析（FA)の使い方ガイド](https://analysis-in-manufacturing.resanaplaza.com/2025/02/28/%e3%80%90python%e5%ae%9f%e8%b7%b5%e3%80%91%e3%83%87%e3%83%bc%e3%82%bf%e3%81%ab%e6%bd%9c%e3%82%80%e5%85%b1%e9%80%9a%e7%82%b9%e3%82%92%e8%a6%8b%e3%81%a4%e3%81%91%e3%82%8b%ef%bc%81%e5%9b%a0%e5%ad%90/)