見出し画像

【因子分析】 因子分析と主成分分析の違いを数式でざっくり理解する

こんにちは、Aska Intelligenceの川本です。

因子分析(Factor Analysis)と主成分分析(PCA)の違いは色々なところに「使い道が違う」というような解説があります。それでも良いのですが、ここでは数式として両者の手法がどう関係しているかをざっくり見ることで、違いを説明してみようと思います。

因子分析

因子分析モデルは、$${p}$$個の観測変数を持つデータ $${\bm{x}}$$ ($${p}$$次元ベクトル)に対して

$$
\bm{x} = \bm{f} \Lambda^{\top} + \bm{e}
$$

という式で表現されます。因子数を$${k}$$とすると、$${\bm{f}}$$は$${k}$$次元ベクトルの因子得点(もしくは共通因子)、$${\Lambda^{\top}}$$は$${k \times p}$$行列の因子負荷行列です($${\top}$$は行列の転置)。$${\bm{e}}$$は$${p}$$次元の乱数ベクトルで、独立因子残差と呼ばれているものです。

因子分析では、因子分析モデルから共分散行列についての関係式を作り、それを手掛かりにして推論を行なっていきます。$${\bm{f}}$$について直交性の仮定を入れると、$${\bm{x}}$$の共分散行列$${ \mathbb{E}[\bm{x}^{\top} \bm{x}]}$$について以下の関係式が作れます:

$$
C = \mathbb{E}[\bm{x}^{\top} \bm{x}]
= \Lambda \Lambda^{\top} + V.
$$

ここで、$${\bm{e}}$$の各成分は期待値がゼロの独立な乱数で、共分散行列が$${p \times p}$$対角行列$${V}$$で与えられるとしています。

主成分分析

主成分分析も(平均がゼロに調整された)共分散行列の分析を行います。共分散行列を以下のように固有値分解します:

$$
C = \mathbb{E}[\bm{x}^{\top} \bm{x}]
= \Xi D \Xi^{\top} = \tilde{\Lambda} \tilde{\Lambda}^{\top}
$$

という形で分解します。 ここで$${\Xi}$$は$${C}$$の固有ベクトルを並べた行列で、$${D}$$は$${C}$$の固有値を対角成分に並べた行列です。$${ \tilde{\Lambda} = D^{1/2} \Xi }$$です。

因子分析と主成分分析の比較

共分散行列の分解式を比較すると、違いは対角行列$${V}$$です。

$${V}$$の成分は$${\bm{e}}$$の分散ですが、これは$${p}$$個の観測変数の間で共通の値を持つ必要はありません(つまりスカラー行列$${V \propto I}$$である必要はない)。

しかしもし$${V}$$がスカラー行列であれば、これは単に定数をシフトさせているだけということになり実質的な影響を及ぼさないため、因子分析と主成分分析は等価になります。

ただし因子分析では因子間の直交性は必ずしも課さないので、一度得られた解を斜行回転などのテクニックを使って変換させていくことをします。これが「使い道が違う」という意味になります。

もう少し詳細な説明はZennの本に書きましたので、もし興味ありましたら買ってみてください。


因子分析についての入門資料はウェブ上に膨大にありますし、入門書やセミナーもたくさんありますが、ちゃんと数式を使って中身を説明したものはあまりないので、「ちゃんと公式を導出して理解する本」をZennで書きました。


この記事が気に入ったらサポートをしてみませんか?