主成分分析

提供: testwiki
ナビゲーションに移動 検索に移動

テンプレート:複数の問題

テンプレート:Math を中心としテンプレート:Math 方向の標準偏差テンプレート:Math、それに直交する方向の標準偏差が テンプレート:Math多変量正規分布に従うデータセットに対する主成分分析の結果。矢印で示される 2 つベクトル共分散行列固有ベクトルであり、ベクトルの長さはそれぞれの固有ベクトルの固有値の平方根に等しくなるようにスケールされている。また 2 つの固有ベクトルは分布の中心(平均)が原点となるように配置してある。

主成分分析(しゅせいぶんぶんせき、テンプレート:Lang-en-short)は、相関のある多数の変数から相関のない少数で全体のばらつきを最もよく表す主成分と呼ばれる変数を合成する多変量解析の一手法テンプレート:Sfn。データの次元を削減するために用いられる。

主成分を与える変換は、第一主成分の分散最大化し、続く主成分はそれまでに決定した主成分と直交するという拘束条件の下で分散を最大化するようにして選ばれる。主成分の分散を最大化することは、観測値の変化に対する説明能力を可能な限り主成分に持たせる目的で行われる。選ばれた主成分は互いに直交し、与えられた観測値のセットを線型結合として表すことができる。言い換えると、主成分は観測値のセットの直交基底となっている。主成分ベクトルの直交性は、主成分ベクトルが共分散行列(あるいは相関行列)の固有ベクトルになっており、共分散行列が実対称行列であることから導かれる。

主成分分析は純粋に固有ベクトルに基づく多変量解析の中で最も単純なものである。主成分分析は、データの分散をより良く説明するという観点から、そのデータの内部構造を明らかにするものだと考えられる。多くの場合、多変量データは次元が大きく、各変数を軸にとって視覚化することは難しいが、主成分分析によって情報をより少ない次元に集約することでデータを視覚化できる。集約によって得られる情報は、データセットを元のデータ変数の空間から主成分ベクトルのなす空間へ射影したものであり、元のデータから有用な情報を抜き出したものになっている。主成分分析によるデータ構造の可視化は、可視化に必要なだけ先頭から少数の主成分を選択することで実現される。

主成分分析は探索的データ解析における主要な道具であり、テンプレート:仮リンクにも使われる。主成分分析は観測値の共分散行列相関行列に対する固有値分解、あるいは(大抵は正規化された)データ行列の特異値分解によって行われるテンプレート:Sfn。主成分分析の結果は主成分得点(因子得点、テンプレート:Lang-en-short)と主成分負荷量(因子負荷量、テンプレート:Lang-en-short)によって評価されるテンプレート:Sfn。主成分得点とは、あるデータ点を主成分ベクトルで表現した場合の基底ベクトルにかかる係数であり、ある主成分ベクトルのデータ点に対する寄与の大きさを示す。主成分負荷量はある主成分得点に対する個々の(正規化された)観測値の重みであり、観測値と主成分の相関係数として与えられる。主成分分析は観測値の間の相対的なスケールに対して敏感である。

主成分分析による評価は主成分得点と主成分負荷量をそれぞれ可視化した主成分プロット、あるいは両者を重ね合わせたバイプロットを通して解釈される。主成分分析を実行するためのソフトウェアや関数によって、観測値の基準化の方法や数値計算のアルゴリズムに細かな差異が存在し、個々の方法は必ずしも互いに等価であるとは限らない(例えば、R言語における prcomp 関数と FactoMineRPCA 関数の結果は異なる)。

直感的な説明

主成分分析は与えられたデータを テンプレート:Mvar 次元の楕円体にフィッティングするものであると考えることができる。このとき、それぞれの主成分は楕円体の軸に対応している。楕円体の軸が短いほどデータの分散は小さく、短い軸に対応する主成分を無視することで、データの分散と同程度に小さな情報の損失だけで、データをより少ない変数で表現することができる。

楕円体の軸を見つけるには、データの平均座標軸原点に合わせる必要がある。そのため、データの共分散行列を計算し、共分散行列に対する固有値固有ベクトルを計算する。また、それぞれの固有ベクトルを直交化し、正規化する必要がある。固有ベクトルの組として互いに直交する単位ベクトルが得られたなら、それらに対応する軸を持つ楕円体によってデータをフィッティングすることができる。それぞれの軸に対する寄与率テンプレート:En: 分散の)は、その軸に対応する固有ベクトルに対する固有値を、すべての固有値の和で割ったものとして得ることができる。

注意すべき点として、分散はデータのスケールに依存するため、主成分分析の結果はデータをスケール変換することで変わり得るということが挙げられる。

歴史と名称

主成分分析は1901年カール・ピアソンによって導入されたテンプレート:Sfn。ピアソンは力学におけるテンプレート:仮リンクからの類推によって主成分分析の方法を得た。主成分分析は、ピアソンとは独立に1930年代にハロルド・ホテリングよっても導入され、ホテリングによって主成分分析 テンプレート:En と呼ばれるようになったテンプレート:Sfnテンプレート:Sfn。(テンプレート:Harvtxt 参照。)

主成分分析は応用分野によって様々な呼び名がある。

分野 呼び名
信号処理
  • 離散(コサンビ・)カルフネン・ロエヴェ変換[注 1]
  • KL展開[注 2]
品質管理
機械工学
線型代数学
計量心理学[注 5]
気象学
雑音・振動
構造力学


関連する手法

主成分分析は因子分析によく似ている。因子分析は、データの背後にある構造に関する分野固有の仮設と、主成分分析の場合とはわずかに異なった行列に対する固有ベクトルを求める手法である、と要約できる。

主成分分析は正準相関分析 テンプレート:En とも関わりがある。正準相関分析は二つのデータセット間の相互共分散に基いて座標系を定める手続きだが、主成分分析は単一のデータセットの分散に基いて座標系を選択する手法であるテンプレート:Sfnテンプレート:Sfn

詳細

数学的には主成分分析はデータの基底に対し直交変換(回転)を行い、新たな座標系を得ることでありテンプレート:Sfnテンプレート:Page needed、新しい座標系はその第一成分(第一主成分と呼ばれる)から順に、データの各成分に対する分散が最大になるように選ばれる。

以下では、データ行列 テンプレート:Math として、各列の標本平均が 0 になるものを考える[注 9]。データ行列の各列 テンプレート:Mvar はそれぞれデータが持つ特定の指標に対応し、データ行列の各行 テンプレート:Mvar はそれぞれ異なる事例に対する指標の組を表す[注 10]

主成分分析は テンプレート:Mvar 次元ベクトル テンプレート:Math によってデータ行列 テンプレート:Math の各行 テンプレート:Math を主成分得点のベクトル テンプレート:Math に変換することであり、主成分得点テンプレート:Math はデータ点 テンプレート:Math と負荷量ベクトル テンプレート:Math内積によって与えられる。

tk(i)=𝐱i𝐰k

負荷量ベクトル テンプレート:Math単位ベクトルであり、各主成分得点の分散を第一主成分から順に最大化するように選ばれる。負荷量ベクトルの個数(つまり主成分の数)テンプレート:Mvar は、元の指標の数 テンプレート:Mvar に等しいか、より小さい数が選ばれる (テンプレート:Math)。負荷量ベクトルの個数、つまり新しいデータ空間の次元を元の空間の次元より少なくとることで、次元削減をすることができる(#次元削減を参照)。主成分分析による次元削減は、データの分散に関する情報を残すように行われる。

第一主成分

第一主成分に対応する負荷量ベクトル テンプレート:Math は以下の条件を満たす[注 11]

𝐰1=argmax𝐰=1𝐗𝐰2.

さらに変数 テンプレート:Math単位ベクトルという制約を除けば、上述の条件は次の等価な条件に簡約化することができる[注 12]

𝐰1=argmax𝐰𝟎𝐗𝐰2𝐰2.

右辺の最大化される量は テンプレート:Math に対するレイリー商と見ることができる。テンプレート:Math対称行列だから、レイリー商の最大値は行列の最大固有値となり、それに伴い負荷量ベクトルは対応する固有ベクトルとなる。

第一負荷量ベクトル テンプレート:Math が得られれば、データ点 テンプレート:Math に対応する主成分得点 テンプレート:Math、あるいは対応するベクトル テンプレート:Math が得られる。

他の主成分

テンプレート:Mvar 番目の主成分は テンプレート:Math 番目までの主成分をデータ行列 テンプレート:Math から取り除くことで得られる:

𝐗^k=𝐗s=1k1𝐗𝐰s𝐰sT.

負荷量ベクトルは新たなデータ行列に対して主成分得点の分散が最大となるようなベクトルとして与えられる。

𝐰k=argmax𝐰=1𝐗^k𝐰2=argmax𝐰𝟎𝐗^k𝐰2𝐰2.

このことから、新たな負荷量ベクトルは対称行列 テンプレート:Math の固有ベクトルであり、右辺の括弧内の量の最大値は対応する固有値を与えることが分かる。したがって、すべての負荷量ベクトルは テンプレート:Math の固有ベクトルである。

データ点 テンプレート:Math の第 テンプレート:Mvar 主成分は主成分得点 テンプレート:Math として負荷量ベクトルを基底とする表示が与えられ、また対応するベクトルは主成分得点に対応する基底ベクトルをかけた テンプレート:Math となる。ここで テンプレート:Math は行列 テンプレート:Math の第 テンプレート:Mvar 固有ベクトルである。

テンプレート:Math の完全な主成分分解は以下のように表わすことができる。

𝐓=𝐗𝐖

ここで テンプレート:Mathテンプレート:Math正方行列であり、各列ベクトルは行列の テンプレート:Math固有ベクトルであり単位ベクトルである。

共分散

テンプレート:Math はデータセット テンプレート:Mathから与えられる経験的な標本共分散行列比例する。

データセット テンプレート:Math に対する、2つの異なる主成分の間の標本共分散 テンプレート:Mvar は以下のようにして得られる:

Q(PCj,PCk)(𝐗𝐰j)T(𝐗𝐰k)=𝐰jT𝐗T𝐗𝐰k=()𝐰jTλk𝐰k(𝐗T𝐗𝐰k=λk𝐰k)=λk𝐰k2.

(∗) の変形において、テンプレート:Math行列 テンプレート:Math固有値 テンプレート:Math に対応する固有ベクトルであることを利用した。テンプレート:Math は対称行列であり、対称行列の異なる固有値に対応する固有ベクトル達は互いに直交するから、結局データセット テンプレート:Math に対する異なる主成分間の標本共分散 テンプレート:Math はゼロとなる。

上述の結果を言い換えると、主成分変換は経験的な標本共分散行列を対角化する座標変換であると特徴づけられる。

元々の基底に対する経験共分散行列 テンプレート:Math は行列記法によって以下のように表わすことができる。

𝐐𝐗T𝐗=𝐖Λ𝐖T.

ここで テンプレート:Mathテンプレート:Math の固有値 テンプレート:Math からなる対角行列である。固有値 テンプレート:Math は対応する添え字の主成分得点の二乗和に等しい。

λk=𝐗𝐰k2=i=1n(𝐱i𝐰k)2=i=1ntk(i)2.

行列 テンプレート:Math が得られれば、行列 テンプレート:Math直交性を利用して、主成分ベクトルを基底とする経験共分散行列として次の表示が得られる。

𝐖T𝐐𝐖𝐖T𝐖Λ𝐖T𝐖=Λ.

次元削減

線型変換 テンプレート:Math はデータ点 テンプレート:Math を元の テンプレート:Mvar 次元空間から、与えられたデータセットに対して各成分が互いに無相関になるような テンプレート:Mvar 次元の空間へ写すが、一部の主成分だけを残すような変換も考えることができる。第一主成分から順に、各主成分に関するデータの分散単調減少するように負荷量ベクトルが得られるため、最初の テンプレート:Mvar 個の負荷量ベクトルだけを残し、残りの説明能力の低い負荷量ベクトルを無視すると、次のような変換が得られる。

𝐓L=𝐗𝐖L

テンプレート:Mathテンプレート:Math の行列であり、テンプレート:Mathテンプレート:Math の行列である。上記の変換はデータ点 テンプレート:Math に対する変換として[注 13]テンプレート:Math と書くこともできる。つまり、主成分分析は テンプレート:Mvar 個の特徴量を持つデータ点 テンプレート:Mathテンプレート:Mvar 個の互いに無相関な特徴量を持つ主成分得点 テンプレート:Math へ写す線型変換 テンプレート:Math を学習する手法であるといえるテンプレート:Sfn。 データ行列を変換することで得られる主成分得点行列は、元のデータセットの分散を保存し、二乗再構成誤差 テンプレート:En の総和、

𝐓𝐖T𝐓L𝐖LT22(𝐗𝐗L22)

を最小化するように与えられる。

354の個体について、37のY染色体STRマーカーの反復回数から計算された テンプレート:仮リンク ハプロタイプに対する主成分分析の結果。主成分分析により、個体のY染色体の遺伝的な系統についてクラスタリングするようなマーカーの線型結合を得ることに成功している。

元のデータセットの分散をできる限り残すように次元削減することは、高次元のデータセットを可視化する上で重要である。例えば、主成分の数を テンプレート:Math に選び、2つの主成分がなす平面にデータセットを射影すると、射影されたデータ点は主成分のなす平面に対して最もよく分散し、データに含まれるクラスタはそれぞれ分離される。したがって、2つの主成分がなす平面はデータを平面上にプロットする上で都合がよい。射影平面として別の平面を選んだ場合、クラスタ間のばらつきは小さくなり互いに重なり合うようになるため、実質上はそれぞれのクラスタを分類することが困難になってしまう。

回帰分析でも次元削減は有効である。回帰分析において、説明変数の数を増やすほど特定のデータに対して過剰適合したモデル、すなわち他のデータセットに対して誤った結果を与えるモデルを得がちである。モデル生成に使ったデータに対してモデルが過剰適合しないためには、説明変数の個数を適当に制限する必要があり、一つのアプローチとして、互いに強い相関を持つ説明変数を削減し、より少数の主成分によって回帰分析を行う方法がある。この方法をテンプレート:仮リンクと呼ぶ。

次元削減はノイズの大きなデータを分析する上でも適切であることが多い。データ行列の各列、つまりそれぞれの特徴量に対して独立同分布ガウシアンノイズが含まれる場合、変換されたデータ行列 テンプレート:Math の列にも同様に独立同分布なガウシアンノイズが含まれる(座標軸の回転操作 テンプレート:Math に対して独立同分布なガウス分布は不変であるため)。しかしながら、最初の少数の主成分に関しては、全体の分散に比べてノイズに由来する分散が小さくなるため、シグナル・ノイズ比を高めることができる。主成分分析は主要な情報を少数の主成分に集中させるため、次元削減によってノイズが支配的な成分だけを捨て、データ構造を反映した有用な成分を取り出すことができる。

特異値分解

主成分変換は行列特異値分解とも結び付けられる。行列 テンプレート:Math の特異値分解は以下の形式で与えられる。

𝐗=𝐔Σ𝐖T.

ここで、テンプレート:Mathテンプレート:Math の矩形対角行列であり、対角成分 テンプレート:Math が正の行列である。テンプレート:Math の対角成分を行列 テンプレート:Math の特異値という。テンプレート:Mathテンプレート:Math正方行列であり、各列が互いに直交する テンプレート:Mvar 次元の単位ベクトル[注 14]となる行列(つまり直交行列)である。各々の単位ベクトルは行列 テンプレート:Math の左特異ベクトルと呼ばれる。同様に テンプレート:Math は、各列が互いに直交する テンプレート:Mvar 次元の単位ベクトルとなる テンプレート:Math の正方行列である。こちらの単位ベクトルは行列 テンプレート:Math の右特異ベクトルと呼ばれる。

テンプレート:Math の特異値分解に基づいて テンプレート:Math を表わせば、以下のようになる。

𝐗T𝐗=𝐖Σ𝐔T𝐔Σ𝐖T=𝐖Σ2𝐖T

前節で示した テンプレート:Math の固有値分解と見比べると、テンプレート:Math の右特異ベクトルの組 テンプレート:Math はまた テンプレート:Math固有ベクトルの組でもあり、テンプレート:Math の特異値 テンプレート:Mathテンプレート:Math の固有値 テンプレート:Math平方根に等しいことが分かる。

特異値分解を主成分得点行列 テンプレート:Math に対して行うと、以下のような分解が得られる。

𝐓=𝐗𝐖=𝐔Σ𝐖T𝐖=𝐔Σ.

テンプレート:Math の各列は テンプレート:Math の左特異ベクトルに対応する特異値をかけたものとして表わされることが分かる。この結果は テンプレート:Mathテンプレート:仮リンクによっても得られる。

主成分分析の実装として、テンプレート:Math の特異値分解のアルゴリズムがしばしば利用される。

テンプレート:Math に次元削減された主成分得点行列 テンプレート:Math は、固有値分解の場合と同様に、寄与の大きい最初の テンプレート:Mvar 個の特異値とそれに対応する左特異ベクトルだけを残すことによっても得られる:

𝐓L=𝐔LΣL=𝐗𝐖L.

特異値分解から寄与の小さな特異値を除いて テンプレート:Math を作るということは、元の行列とのフロベニウスノルムで測った差を最小化するような階数 テンプレート:Mvar の行列を選ぶことに相当する。この結果はエッカート・ヤング定理として知られる。

ソフトウェア

脚注

テンプレート:脚注ヘルプ

注釈

テンプレート:Reflist

出典

テンプレート:Reflist

参考文献

関連項目

テンプレート:Div col

テンプレート:Div col end

外部リンク

テンプレート:Commons category

テンプレート:統計学 テンプレート:Statistics-stub テンプレート:Normdaten
引用エラー: 「注」という名前のグループの <ref> タグがありますが、対応する <references group="注"/> タグが見つかりません