1 定義と基本概念
1.1 主成分得点の定義
主成分得点とは、主成分分析(PCA)により抽出された各主成分に対して、元の観測値(サンプル)が持つ値を示す指標である。各主成分は元の変数の線形結合として定義され、主成分得点はその線形結合の計算結果に相当する。具体的には、第j主成分の得点は、元のデータベクトルと第j主成分の固有ベクトル(負荷量ベクトル)との内積として求められる。これにより、各サンプルの主成分空間上の位置が定まる。
1.2 行列の構造
主成分得点行列は、n個のサンプルとk個の主成分(通常はk ≤ p、pは元の変数数)からなるn×kの行列である。各行は1つのサンプルに対応し、各列は特定の主成分の得点を表す。この行列の要素は、各サンプルが各主成分軸上でどの程度のスコアを持つかを示す。行列の大きさは分析者が選択する主成分の数に依存し、次元削減の程度を反映する。
1.3 分散最大化の原理
主成分得点行列は、元のデータの分散を最大限に説明するように構築される。第1主成分は、元のデータの分散を最もよく説明する方向として定義され、その得点の分散は最大となる。第2主成分は、第1主成分と直交する方向の中で最大の分散を持つように選ばれ、以下同様に続く。この原理により、主成分得点行列は降順に分散の大きい成分を集めたものとなり、元のデータの情報を効率的に圧縮する。
2 計算方法
2.1 データの標準化
主成分分析を適用する前に、元のデータ行列X(n×p)を標準化することが一般的である。標準化では、各変数について平均を0、標準偏差を1に変換する。これは、変数の単位や尺度が異なる場合に、特定の変数が主成分に過度に影響を与えるのを防ぐためである。標準化後のデータ行列をZとする。ただし、変数が同一尺度で測定されている場合など、標準化を省略することもある。
2.2 共分散行列(または相関行列)の固有値分解
標準化されたデータZから、p×pの共分散行列(標準化の場合、相関行列に一致)を計算する。この行列に対して固有値分解を施す。固有値分解により、固有値λ1 ≥ λ2 ≥ ... ≥ λpと、対応する固有ベクトルv1, v2, ..., vpが得られる。
2.2.1 固有値と固有ベクトルの算出
固有値は各主成分が説明する分散の大きさを表し、固有ベクトルは主成分の方向(元の変数空間における軸)を定義する。固有値の合計は、標準化データの全分散(p)に等しい。固有値分解は、数値計算ではQR法やべき乗法などのアルゴリズムを用いて行われる。
2.2.2 主成分負荷行列との関係
主成分負荷行列Lは、各元の変数と各主成分との相関係数を要素とする。負荷行列は、固有ベクトルに固有値の平方根を乗じたものとして定義される:L = V diag(√λ)。主成分得点行列は、データ行列Zと負荷行列から、T = Z L diag(1/√λ) = Z Vと計算される。負荷行列は主成分の解釈に、得点行列はサンプルの位置づけに用いられる。
2.3 得点行列の生成
得点行列Tは、標準化データZと固有ベクトル行列Vの積として直接求められる:T = Z V。ここで、Vはp×kの行列(k個の主成分に対応する固有ベクトルを列として持つ)である。この操作により、n×pのデータ行列がn×kに縮約される。
2.3.1 スコアの線形結合式
各主成分得点は、元の変数の線形結合として表現される。第j主成分の得点t_ij(i番目のサンプル)は、t_ij = z_i1 * v_1j + z_i2 * v_2j + ... + z_ip * v_pjと計算される。ここで、v_*jは第j主成分の固有ベクトルの要素(負荷量係数)である。この線形結合の重みは、データの分散を最大化するように決定される。
2.3.2 寄与率との関連
各主成分の寄与率は、その主成分の固有値を全固有値の合計で割った値である。寄与率は、その主成分が元のデータの全分散のうちどの程度を説明するかを示す。累積寄与率は、第1主成分から第k主成分までの寄与率の合計であり、k個の主成分でデータの情報をどの程度保持しているかの指標となる。得点行列を用いる際には、通常、累積寄与率が十分高い(例:80%以上)主成分数を選択する。
3 解釈と応用
3.1 各主成分の意味解釈
3.1.1 得点の正負と変数との対応
主成分得点の正負は、そのサンプルが主成分軸上のどちら側に位置するかを示す。得点が正のサンプルは、その主成分に正の寄与をする変数が高い値を取り、負の寄与をする変数が低い値を取る傾向がある。負の得点の場合は逆となる。固有ベクトルの符号は任意であるため、得点の符号は一意ではないが、解釈の際には負荷量の符号と合わせて考える。
3.1.2 外れ値の検出
主成分得点行列は、多次元データからの外れ値検出に有用である。特に第1主成分と第2主成分の得点をプロットした散布図(スコアプロット)では、他のサンプルから大きく離れた点が外れ値として視覚的に識別できる。また、主成分得点の統計的距離(マハラノビス距離など)を用いた定量的な外れ値検出も可能である。
3.2 次元削減と可視化
3.2.1 バイプロットとの併用
バイプロットは、主成分得点行列と主成分負荷行列を同時にプロットした図である。スコアプロットに変数の負荷量を矢印で重ねることで、サンプルと変数の関係を直感的に解釈できる。例えば、特定の変数の矢印方向に位置するサンプルは、その変数の値が高いことを示す。バイプロットは、主成分分析の結果を総合的に可視化する強力なツールである。
3.2.2 クラスタリングへの前処理
主成分分析で得られた得点行列は、クラスタリングアルゴリズムの入力として利用される。元の高次元データを低次元の主成分得点に変換することで、ノイズの低減と計算効率の向上が期待できる。また、主成分得点は互いに無相関であるため、ユークリッド距離に基づくクラスタリングでも歪みが少ない。k-means法や階層的クラスタリングなど、さまざまな手法と組み合わせられる。
3.3 回帰分析への利用
3.3.1 主成分回帰(PCR)
主成分回帰は、目的変数yを主成分得点行列Tに対して回帰する手法である。まず、説明変数Xに対してPCAを適用し、k個の主成分得点を抽出する。次に、yをTで線形回帰する。得られた回帰係数は元の変数空間に逆変換することで、元の変数に対する解釈が可能となる。PCRは、元の変数が多い場合や多重共線性がある場合に有効である。
3.3.2 多重共線性の回避
主成分得点は互いに直交しているため、主成分回帰では説明変数間の多重共線性が原理的に発生しない。これは、通常の最小二乗回帰において、相関の高い変数が含まれると回帰係数の推定が不安定になる問題を回避できる。ただし、PCRは主成分の選択に依存するため、目的変数との関連性が低い主成分を含めると予測精度が低下する可能性がある。
4 関連手法との比較
4.1 因子分析における因子得点行列
因子分析(FA)の因子得点行列は、主成分得点行列と似た構造を持つが、両者の理論的基盤は異なる。PCAは観測データの分散を最大化する方向を抽出するのに対し、FAは観測変数間の相関を説明する潜在因子を仮定する。因子得点は一意に決定されず、推定方法(回帰法、Bartlett法など)により値が変わる。また、FAでは因子の数がデータの分散を完全には説明しないため、因子得点の分散は必ずしも最大化されない。
4.2 特異値分解(SVD)との関係
主成分得点行列は、データ行列の特異値分解(SVD)と密接に関連する。SVDによりデータ行列ZをZ = U Σ V^Tと分解すると、主成分得点行列TはU Σに相当する(k個の主成分の場合)。ここで、Uは左特異ベクトル、Σは特異値の対角行列、Vは右特異ベクトル行列である。特異値分解を用いると、PCAの計算を数値的に安定して実行できる。また、得点行列の各列の分散は、対応する特異値の二乗に比例する。
4.3 独立成分分析(ICA)との違い
独立成分分析(ICA)は、観測データを統計的に独立な成分に分解する手法であり、PCAとは目的が異なる。PCAでは成分間の無相関性(直交性)を重視するが、ICAでは成分間の独立性(高次統計量も含む)を最大化する。その結果、ICAの成分得点行列は、PCAのように分散の大きさ順には並ばず、成分の順序に意味がない場合がある。ICAはブラインド信号分離など、信号処理の分野で多用される。
5 実装とソフトウェア
5.1 R言語での計算例
Rでは、prcomp()関数やprincomp()関数を用いてPCAを実行できる。標準化はscale()関数で行う。以下に例を示す。
data(iris)
z <- scale(iris[, 1:4])
pca <- prcomp(z)
scores <- pca$x # 主成分得点行列
scoresがn×kの主成分得点行列となる。summary(pca)で寄与率を確認できる。
5.2 Python(scikit-learn等)での実装
Pythonでは、scikit-learnライブラリのPCAクラスを使用する。標準化はStandardScalerで前処理する。
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import pandas as pd
df = pd.read_csv('data.csv')
scaler = StandardScaler()
z = scaler.fit_transform(df)
pca = PCA(n_components=2)
scores = pca.fit_transform(z) # 主成分得点行列
scoresはnumpy配列であり、各列が主成分得点に対応する。pca.explained_variance_ratio_で寄与率が得られる。
5.3 注意点:スケーリングと回転の影響
主成分得点行列の計算において、データのスケーリングは結果に大きな影響を与える。標準化を行わない場合、分散の大きい変数が主成分を支配する可能性がある。また、主成分の軸は直交回転(バリマックス回転など)を適用できるが、通常のPCAでは回転は行わない。回転を施すと得点行列も変化し、解釈が容易になることがあるが、分散最大化の性質は失われる。実装時には、使用するソフトウェアのデフォルト設定(例:Rのprcomp()は標準化を自動で行わない)に注意する必要がある。