FX戦略編

クロネッカーデルタとは

クロネッカーデルタとは
PCAによる解析結果(赤い矢印:第1主成分方向、青い矢印:第2主成分方向)

岩井の数学ブログ

空間ベクトル

空間ベクトル

平面に垂直なベクトル

まず、二つのベクトル a と b によって張られる平面について説明をします。この平面に垂直な空間ベクトルの一つを外積を使って求めたものが、図で赤色で書いているベクトルです。今回のブログでは外積を使わずに、平面に垂直なベクトルを求める方法を解説していきます。

平行でない二つの空間ベクトルの一次結合で表される空間ベクトル全体が、二つのベクトルによって張られる平面(生成される部分空間)といいます。
※ 大学数学では生成される 部分空間 といいます。

と、集合の形で張られる平面を表すことができます。この集合を平面 S ということにします。

空間ベクトル ; 平面に垂直なベクトルとは

平面 S については、先ほど説明をした通りです。ここで、平面に垂直な空間ベクトルとは何かということの定義を押さえておくことが必要になります。

平面 S に垂直な空間ベクトルとは、S に含まれているどのベクトルとも垂直なベクトルのことです。

二つのベクトルが垂直ということは、内積を計算すると 0 になるということなので、言い換えができます。つまり、S に含まれているどのベクトルとも、内積値が 0 である空間ベクトルが求めるベクトルということになります。

さらに、ベクトル a とベクトル b の一次結合で表されているベクトル全体が、平面 S ということを考えます。

すると、ベクトル クロネッカーデルタとは a と、ベクトル b のどちらとも内積を計算したときに値が 0 になっていると、S に含まれているすべてのベクトルとの内積値が 0 だと分かります。

これで、目指すべき道筋が明確になりました。 ベクトル a と、ベクトル b のどちらとも内積を計算したときに値が 0 になっている空間ベクトルを求めれば良いということになります。

空間ベクトルの参考に

空間ベクトル ; 平面に垂直なベクトルを求める

必要な内容についての準備が整いました。それでは、平面 S に垂直な空間ベクトルを求めます。

先ほど書いた、ベクトル a との内積が 0 で、ベクトル b との内積も 0 になっている空間ベクトルを探します。

空間ベクトル

未知数を文字で表す

求める平面に垂直なベクトルを (x, y, z) とします。x座標、y座標、z座標の値が不明なので、それぞれを文字で表しています。

空間ベクトル(x, y, z)はベクトルaである(1, -3, 5)と垂直なので、

x -3y + 5z = 0 ・・・①

さらに、ベクトル(-2, 4, 7)とも垂直なので、

-2x + 4y + 7z = 0 ・・・②

実は未知数を表す文字が x, y, クロネッカーデルタとは クロネッカーデルタとは z と 3 個あります。しかし、方程式が①と②の 2 個しかありません。

そのため、連立方程式の解である (x, y, z) のそれぞれの成分は、ただ1つには決まりません。

① × 2 + ②より、「-2y + 17z = 0」となります。

求めたい空間ベクトルの y 座標の値と z 座標の値は、
「-2y + 17z = 0」という方程式を満たさないといけないわけです。

ここを逆手にとって、y の係数と z の係数を利用して、自分で クロネッカーデルタとは クロネッカーデルタとは y と z の値を指定します。

y = -17, z = -2 は、「-2y + 17z = 0」の解となります。実際に代入すると、34 - 34 = 0 となることから、解だと分かります。このようにして、自力で y と z の値を一組求めることが必要になります。

今やったように、y と z の係数を逆にして、それぞれの符号のプラスとマイナスを調整すると、不定方程式の解が得られます。

この y と z の値を①に代入すると、x クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは の値が求められます。

x -3 × (-17) + 5 × (-2) = 0 となり、
x +51 -10 = 0 より、x = -41 となります。

このようにして、ベクトルaとベクトルbのどちらにも垂直な空間ベクトルが、(-41, -17, -2)と求められました。

空間ベクトルの方向と長さ

しかも、マイナスの実数倍で向きを逆転させても、やはり平面を張っている a と b との内積値が 0 クロネッカーデルタとは です。

ゆえに、
< t( -41, -17, -2) | t は実数 >という集合内のどの空間ベクトルも、平面 S 内のベクトルとの内積値が 0 ということになります。

すなわち、平面 S 内のどのベクトルとも垂直ということになります。

参考に基本ベクトルとベクトル空間論

これら三つのベクトルを基本ベクトルといいます。(a, b, c) という実数を成分とする空間ベクトルは、基本ベクトルの一次結合で表されます。

大学や専門学校で学習する線形代数学では、1, e2, e3> を正規直交基底といいます。ei (i = 1, 2, 3) の大きさ(長さ)は、どれも 1 となっています。

そして、どの二つの基本ベクトルどおしで内積を計算すると、値が 0 になります。つまり、どの二つの基本ベクトルも直交しているということになります。

クロネッカーのデルタ

二つの添え字が異なっているときに、内積の値が 0 になります。

δij = クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは 1 (i = j のとき)
δij = 0 (i ≠ j のとき)

添え字が同じときに値が 1 で、添え字がちがっていると値が 0 ということを表しています。

この集合が、線形代数学でいうところの 3次元ベクトル空間となります。 1, e2, e3> の一次結合で、どの空間ベクトルも表すことができます(難しくいうと生成系となっているということです)。

生成系であって、一次独立なベクトルたちを基底といいます。基底を構成するベクトルの個数を、そのベクトル空間の次元 (dimension) といいます。

平面ベクトルのときの基本ベクトルは、e1 = (1, 0), e2 = (0, 1) です。平面なので、z 成分がありません。その分、計算が楽になります。

点と直線の距離の公式

点と直線の距離の公式

線分 AH の長さを法線ベクトルを使って表し、垂直だと内積の値が 0 となることを利用して等式を導きます。位置ベクトルを使って議論を進める良い練習になるかと思います。

点と直線の距離の公式-ベクトルで証明-1

点 H の座標を (p, q) とおくと、ベクトル n とベクトル OH の内積の値が、

となっています。ap+bq は移項すると、-c と等しいので、ベクトル n とベクトル OH の内積を書き換えることができるのが、証明の後半のポイントになります。

点と直線の距離の公式-ベクトルで証明-2

外積

空間ベクトル

空間ベクトルの外積

この図の赤色の空間ベクトルの成分は、ベクトル a とベクトル b の外積を計算することで求めています。今回のブログでは、 外積 を使わずに平面に垂直な空間ベクトルを求めることについて説明をしました。

主成分分析とは?[解析例・導出つき]

120人分の数学と理科の点数のダミーデータ

上図はすべての人のスコアをプロットしたものです(データはダミーです)。データの特性として、数学の点数が高ければ、理科の点数も高い傾向があることがわかります。そこで、データのばらつきが最も大きい方向に新たに軸を取り、その軸への射影を考えると、理数系科目の総合力を表すような新たな変数を構成できると考えられます。

PCAによる解析結果(赤い矢印:第1主成分方向、青い矢印:第2主成分方向)

数学的理解

まず、いくつかの変数を定義します。\(p\) 個のパラメータで表される実数のデータ組が \(n\) サンプルだけあるとき、これを \(n\times p\) の行列の形で \(X\) とします。

$$ X = \left( \begin x_ & x_ & \cdots & x_ \\ x_ & x_ & \cdots & クロネッカーデルタとは x_ \\ \vdots & \vdots & \ddots & \vdots \\ x_ & x_ & \cdots & x_ \end \right) $$

\(x_\) は、\(i\) 番目のサンプルの \(j\) 番目のパラメータの値を表します。

例えば、身長と体重のデータの場合は \(p=2\), 測定した人の数が クロネッカーデルタとは \(n\) に相当します。

\(j\) 番目のパラメータの平均値を \(\mu_j\,(j=1,2. p)\) とおきます。

\(\mu_j\) を用いて、データの分散共分散行列(variance-covariance matrix)\(S\) を定義します。\(S\) は \(p\times p\) の正方行列です。

$$ \begin &S = \left( \begin s_ クロネッカーデルタとは & s_ & \cdots & s_ \\ s_ & s_ & \cdots & s_ \\ \vdots & \vdots & \ddots & \vdots \\ s_ & s_ & \cdots & クロネッカーデルタとは クロネッカーデルタとは s_ \end \right) \\ &s_ = \dfrac\sum_^n (x_-\mu_k)(x_-\mu_l)\hspace(k,l=1,2. p) \end $$

\(s_\) は \(k\) 番目と \(l\) 番目の変数の共分散(covariance)を表します。なお、\(k=l\) のときは \(k\) 番目の変数の分散(variance)を表します。\(s_\) の定義より、\(s_ = s_\)が成立します。よって、分散共分散行列 \(S\) は実対称行列になります(\(\text\,S = S^\TT\))。

上式の \(s_\) では、偏差の積を \(n\) で割っていますが、調べたい集団全体(母集団)一部を取り出したサンプル(標本)を用いる場合は、偏差の積の和を \(n-1\) で割って定義される不偏分散(unbiased variance) を用います。 $$ s_ = \dfrac\sum_^n (x_-\mu_k)(クロネッカーデルタとは クロネッカーデルタとは x_-\mu_l)\hspace(k,l=1,2. p) $$ 多くの場合、調べたい集団すべてのデータを取ることは困難なので、基本的には不偏分散を用いることになります。

データ解析においては、データの平均値を予め \(\mu_j = 0\) としてから \(S\) を計算することが多いです。このとき、 $$ s_ = \dfrac\sum_^n x_x_\hspace(k,l=1,2. p) $$ であり、分散共分散行列 \(S\) は $$ S = \dfracX^\TT X $$ と表せます。ただし、\(\TT\) は転置を意味します。

主成分分析では、データを新たな軸に射影したとき、その分散が最も大きくなるように軸の方向を定めます。分散が最大となる方向を第1主成分方向とよびます。分散共分散行列 \(S\) の固有値を \(\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_p\), 対応する固有ベクトルを \(\bm_1,\bm_2. \bm_p\) とおいたとき、第1主成分方向は 分散共分散行列 \(S\) の最大固有値 \(\lambda_1\) の固有ベクトル \(\bm_1\)クロネッカーデルタとは になります。

便宜上、\(i\) 番目のサンプルのデータセットを行ベクトルの形で \(\bm_i := (x_,x_. x_)\) とします。\(i\) 番目のサンプルの第1主成分得点 \(t_\) は、\(\bm_i\) と \(\bm_1\) の内積として

第2主成分方向は、第1主成分方向 \(\bm_1\) に直交する条件の下で、データを射影したときのばらつきが最大となる方向として決められ、これは分散共分散行列 \(S\) の第2固有値 \(\lambda_2\) の固有ベクトル \(\bm_2\) に相当します。

一般に、第 \(k\) 主成分方向 \((k=1,2. p)\) は、分散共分散行列 \(S\) の第 \(k\) 固有値の第 \(k\) 固有ベクトル \(\bm_k\)になり、\(i\) 番目のサンプルに関する第 \(k\) クロネッカーデルタとは 主成分得点 \(t_\) は、\(\bm_i\) \(\bm_k\) の内積で表されます。

最後に、\(S\) の固有値に注目して、寄与率・累積寄与率を紹介します。

\(S\) の固有値 \(\lambda_k\) は、 \(k\) 主成分得点の分散に等しくなります。よって、\(\lambda_k\) が大きければ、 \(k\) 主成分は元のデータの情報を多く含んでいると解釈できます。

それを相対的に評価したのが寄与率(contribution rate)で、第 \(k\) 主成分の寄与率は以下で表されます。

累積寄与率(accumulative contribution rate)は、第1主成分から第 クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは \(k\) 主成分までがどの程度の情報を持っているかを表す指標で、以下で表されます。

データの標準化

主成分分析を適用する前に、データに対して標準化を行う場合があります。具体的には、各変数について 平均 \(0\), 分散 \(1\) となるようにデータを変換することを言います。標準化したデータの行列 \(Z\) は以下で表されます。

$$ Z = \left( \begin z_ & z_ & \cdots & z_ \\ z_ & z_ & \cdots & z_ \\ \vdots & \vdots & \ddots & \vdots \\ z_ & z_ & \cdots & z_ \end \right) $$

\(\mu_j,s_\) はそれぞれ \(j\) 番目のパラメータの平均と分散を表します。

で確かに \(0\) クロネッカーデルタとは クロネッカーデルタとは となっています。また、分散は

平均 \(0\), 分散 \(1\) に標準化したデータはz得点(z-score)とも呼ばれます。

標準化したデータにも、分散共分散行列 \(S\) に相当するものを考えることができ、それは相関行列 \(R\) と呼ばれます。

$$ \begin R = \left( \begin 1 & r_ & \cdots & r_ \\ r_ & 1 & \cdots & r_ \\ \vdots & \vdots & \ddots & \vdots \\ r_ & r_ & \cdots & 1 \end \right) = \dfracZ^\TT Z \\ r_ = \dfrac\sum_^n z_z_\hspace(k,l=1,2. p) \end $$

対角成分は \(j\) 番目のパラメータの分散を表し、標準化によってすべて \(1\) となっています。また、\(S\) と同様に、\(R\) も実対称行列です。

主成分方向や主成分得点などは、前述した標準化していないデータの分散共分散行列 \(S\) の固有値・固有ベクトルによって求められたのと同様に、相関行列 \(R\) の固有値・固有ベクトルによって求められます。しかし、主成分方向や主成分得点は、標準化しなかった場合の結果とは異なるので、注意が必要です。

標準化をすべきか否かについては、4.3節で考察を行いました。筆者の見解が含まれますが、各変数が同じぐらいの情報を持っている場合は標準化すべきで、そうでない場合は必ずしも標準化は必要ない、ということができそうです。また、主成分分析の使用目的やデータの特徴にも依存します。

数学と理科の点数

120人分の数学と理科の点数のデータを作成します。ダミーデータは、数学と理科の相関行列から乱数を生成し、予め定めた平均値・標準偏差を加えることで生成できます。相関行列は半正定値行列(positive semidefinite matrix)でなければなりません。

120人分の数学と理科の点数のダミーデータ

np.std は標準偏差を求める関数で、ddof=1 とした場合は、不偏分散として計算されます。詳しくは公式サイトを参照してください。

分散共分散行列 \(クロネッカーデルタとは クロネッカーデルタとは S\) を計算します。\(S\) の対角成分は、各パラメータの分散に等しくなります。

分散共分散行列 \(S\) の固有値・固有ベクトルを求めます。各固有ベクトルを縦ベクトルとして \(\bm_1,\bm_2\) とすると、 \(V=(\bm_1,\bm_2)\) のように並んでいます。なお、固有値・固有ベクトルは、固有値の大きい順になるように並び替えています。

固有ベクトルの向きは、必ずしも数学と理科の点数が高くなる方向にはなりません。実際に、第1主成分方向は両方の点数が低くなる方向になっています。軸の方向だけが重要なので、主成分方向の正負を入れ替えても問題ありません

PCAによる解析結果(赤い矢印:第1主成分方向、青い矢印:第2主成分方向)

身長と体重

120人分の身長と体重のダミーデータ

身長と体重では、単位が \(\mathrm\) と \(\mathrm\) で異なります。この場合、各変数を標準化してから解析を行うのが通常です。標準化したデータ \(Z\) は、以下のように算出できます。

標準化した身長と体重のデータ

a.u. は任意単位(arbitrary unit)のことです。身長と体重を標準化したことで、単位がなくなっているため、このように記載しています。

この \(Z\) を用いて、相関行列 \(R\) を求めます。

相関行列 \(R\) の固有値・固有ベクトルを求めます。

各主成分方向をデータと合わせてプロットすると、以下のような図が得られます。第1主成分方向(赤い矢印)は身長と体重が両方とも高くなる方向になっているため、体格の大きさを表す変数として解釈できます。一方で、第2主成分方向(青い矢印)は、身長が低く体重が重い領域から、身長が高く体重が軽い方向にわたっているので、肥満度を表すような変数として解釈することができます。

肥満度を表す指数としてよく使われるBMI(body mass index)は、身長と体重の2変数から肥満度を表す1変数へ次元が減っているので、次元圧縮の例といえます。 $$ \mathrm := \frac\,[\mathrm]><(\text<身長>\,[\mathrm])^2> $$

アヤメの分類

\(X\) は \(150\times 4\) の行列で、\(4\) つのパラメータのデータは、がく片の長さ・幅・花びらの長さ・幅の順で格納されています。

\(Y\) はアヤメの品種をラベル付けしたベクトルで、\(0\) クロネッカーデルタとは クロネッカーデルタとは が setosa, \(1\) が versicolor, \(2\) が virginica になります。

標準化を行ったのち、相関行列 \(R\) を求めます。

相関行列 \(R\) の固有値・固有ベクトルを求めます。

第1主成分方向、つまり最大固有値の固有ベクトルを見ると、がく片の長さ・花びらの幅と長さはすべて符号が \(+\) で、がく片の幅のみ \(-\) になっています。このことから、がく片の細長さと花びらの全体的な大きさを見ることで、アヤメの3品種がおおむね区別できることが予想されます。

第一主成分の寄与率はおよそ \(73.0\,\%\) と高い値を示しています。また、第2主成分までの累積寄与率がおよそ \(クロネッカーデルタとは クロネッカーデルタとは 95.8\,\%\) であることから、第2主成分までで、データのおおよその特性が説明できるといえます。

各データの第1・第2主成分得点(赤:setosa、緑:versicolor、青:virginica)

各データの第1・第2・第3主成分得点(赤:setosa、緑:versicolor、青:virginica)

1節と同様に、\(p\) 個のパラメータで表される実数のデータ組が \(n\) サンプルだけあるとき、これを \(n\times p\) の行列の形で \(X\) とします。

$$ X = \left( \begin x_ & x_ & \cdots & x_ \\ x_ クロネッカーデルタとは クロネッカーデルタとは & x_ & \cdots & x_ \\ \vdots & \vdots & \ddots & \vdots \\ x_ & x_ & \cdots & x_ \end \right) $$

便宜上、\(i\) 番目のサンプルのデータセットを行ベクトルの形で \(\bm_i :クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは = (x_,x_. x_)\) とします。\(i\) 番目のサンプル \(\bm_i\) の第1主成分得点 \(t_\) は、 \(p\) 次元の縦ベクトル \(\bm_1=(w_1,w_2. w_p)^\TT\) を用いて、

と表せます。主成分分析では、第1主成分得点 \(t_1\) の分散が最大となるように \(\bm_1\) を決めることになります。第1主成分得点の分散 クロネッカーデルタとは クロネッカーデルタとは \(\mathrm[t_1]\) は

とできます。ただし、\(\bm <\mu>= \frac(\sum\limits_i x_,\sum\limits_i x_. \sum\limits_i x_)\) は各パラメータの平均値を表す \(p\) 次元の横ベクトルです。\(\mathrm[t_1]\) をさらに変形して、

$$ \begin \mathrm[t_1] &= \dfrac\sum\limits_i (t_ - \bar_1)^2 \\ &= クロネッカーデルタとは \dfrac\sum\limits_i [(\bm_i - \bm<\mu>)\bm_1]^2 \\ &= \bm_1^\TT \left[\dfrac \sum\limits_i (\bm_i - \bm<\mu>)^\TT(\bm_i - \bm<\mu>) \right]\bm_1 \\ &= \bm_1^\TT S \bm_1 \end $$

を得ます。ここで、\(S\) は分散共分散行列で、1.2節で定義したものと同じです。

以上より、第1主成分方向は、\(\mathrm[t_1] クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは = \bm_1^\TT S\bm_1\) を最大とするような \(\bm_1\) に相当することがわかりました。現状、\(\bm_1\) が大きくなれば、第1主成分得点の分散 \(\mathrm[t_1]\) はいくらでも大きくなってしまいます。そこで、\(\|\bm_1\|_2 =1\) の制約を課すことで、分散の発散を防ぎます。このような制約付きの極値問題は、ラグランジュの未定乗数法によって求めることができます。ラグランジュ乗数を \(\alpha\) として、目的関数 \(L(\bm_1,\alpha)\) は

と表せ、求める \(\bm_1\) は以下の2式を満たします。

上式の第2式は、\(\bm_1^\TT\bm_1 - クロネッカーデルタとは 1 = 0\) であり、これは制約条件そのものです。

したがって、求める \(\bm_1\) は、分散共分散行列 \(S\) の固有ベクトルになることがわかります。また、このとき、

より、第1主成分得点の分散は固有値に等しいことがわかります。

以上より、第1主成分方向は、分散共分散行列 \(S\) の最大固有値の固有ベクトルであることがわかりました。

改めて、分散共分散行列 \(S\) の固有値を \(\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_p\), 対応する固有ベクトルを \(\bm_1,\bm_2. \bm_p\) とおくと、\(\bm_1 = \bm_1,\,\mathrm(t_1) クロネッカーデルタとは クロネッカーデルタとは = \lambda_1\) となります。

第2主成分方向については、第1主成分方向に直交する条件下で、第2主成分得点の分散を最大にする方向として決められます。これは、第1主成分方向を求めた際に用いたラグランジュ未定乗数法の制約条件に、最大固有値の固有ベクトルとの直交性を追加することで求めることができます。ラグランジュ乗数を \(\alpha_1,\alpha_2\) として、目的関数 \(L(\bm_2,\alpha_1,\alpha_2)\) は

$$ L(\bm_2,\alpha_1,\alpha_2) = \bm_2^\TT S\bm_2 - \alpha_1(\bm_2^\TT\bm_2 - 1) + \alpha_2 \bm_1^\TT\bm_2 クロネッカーデルタとは $$

と表せます。第1主成分を求めた時と同様に、求める \(\bm_2\) は以下の3式を満たします。

第2式は係数ベクトルの正規化に関する条件 \((\bm_2^\TT\bm_2 = 1)\)、第3式は第1主成分方向との直交性を表します \((\bm_1^\TT\bm_2 = 0)\) 。

となります。左から \(\bm_1^\TT\) をかけると、

$$ \begin 2\bm_1^\TT S\bm_2 - 2\alpha_1\bm_1^\TT\bm_2 + \alpha_2 \bm_1^\TT\bm_1 &= 0 \\ クロネッカーデルタとは クロネッカーデルタとは 2(S\bm_1)^\TT \bm_2 + \alpha_2 &= 0 \hspace(\because S^\TT = S, \bm_1^\TT\bm_2 = 0)\\ 2\lambda_1\bm_1^\TT\bm_2 + \alpha_2 &= 0 \\ \therefore\hspace \alpha_2 &= 0 \end $$

よって、\(クロネッカーデルタとは \alpha_2 = 0\) となるので、\(\partial L/\partial \bm_2\) は第1主成分方向を求めた時と同じ形であり、第2主成分方向は、\(S\) の第2固有値 \(\lambda_2\) の固有ベクトル \(\bm_2\) となります。

同様に制約条件を増やしていくことで、一般に第 \(k\) 主成分方向は、第 \(k\) 固有値 \(\lambda_k\) の固有ベクトル \(\bm_k\) であることがわかります。

ベクトル微分

まず、\(p=2\) クロネッカーデルタとは の場合について考えます。目的関数 \(L(\bm,\alpha)\) は

$$ \begin L(\bm,\alpha) &= \bm^\TT S\bm - \alpha(\bm^\TT\bm - 1)\\ &= (w_1,w_2) \left( \begin s_ & s_ \\ s_ クロネッカーデルタとは & s_ \end \right) \left( \begin w_1 \\ w_2 \end \right) - \alpha(w_1^2 + w_2^2-1) \\ &= s_w_1^2 + s_w_2^2 + (s_+s_)w_1 w_2 - \alpha(w_1^2 + クロネッカーデルタとは w_2^2 - 1) \end $$

\(L(\bm,\alpha)\) の \(w_1,w_2\) の偏微分は、\(s_ = s_\) に注意すると

次に、一般の \(p\geq 2\) について考えます。\(\partial (\bm^\TT\bm)/\partial \bm = 2\bm\) は \(クロネッカーデルタとは p=2\) の場合と同様に行うことで容易に導出できるので、ここでは \(\bm^\TT S\bm\) の項のみについて考えます。具体的に展開すると、

$$ \begin \bm^\TT S\bm &= (w_1. w_p) \left( \begin s_ & s_ & \cdots & s_ \\ s_ & s_ & \cdots & s_ \\ \vdots & \vdots & \ddots & \vdots \\ s_ & s_ & \cdots & s_ \end \right) \left( \begin w_1 \\ \vdots \\ w_p \end \right) \\ &= \sum_^p \sum_^p s_w_k w_l \end $$

\(\bm^\TT S\bm\) の \(w_q\,(1\leq q\leq p)\) による偏微分を考えます。このとき、シグマの中の \(w_q\) の項だけ \(1\)、それ以外は \(0\) になるので、クロネッカーのデルタ \(\delta_\) を用いて、

クロネッカーのデルタは以下で定義されます。 $$ \delta_ クロネッカーデルタとは = \begin 1 & (i=j) \\ 0 & (i\neq j) \end $$

となります。最終行は、\(S\bm\) の \(q\) 行目を意味します。以上より、

分散共分散行列の性質

主成分分析は、分散共分散行列の固有値問題として帰着します。その分散共分散行列の性質を詳しく見てみましょう。

分散共分散行列 \(S\) は以下で表されます(再掲)。

$$ \begin &S = \left( \begin s_ & s_ & \cdots クロネッカーデルタとは & s_ \\ s_ & s_ & \cdots & s_ \\ \vdots & \vdots & \ddots & \vdots \\ s_ & s_ & \cdots & s_ \end \right) \\ &s_ = \dfrac\sum_^n (x_-\mu_k)(x_-\mu_l)\hspace(k,l=1,2. p) \end $$

\(S\) の固有値を \(\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_p\), 対応する固有ベクトルを \(\bm_1,\bm_2. \bm_p\) とおきます。このとき、以下の性質を満たします。

  1. 固有値は非負の実数(\(\lambda_k\geq 0\))
  2. 異なる固有値の固有ベクトルは直交(\(\bm_k^\TT\bm_l = 0\,(クロネッカーデルタとは k\neq l)\))

分散共分散行列 \(S\) は平均との偏差の積を計算しているので、データを表す行列 \(X\) の各変数の平均値を予め \(0\) としても、 \(S\) 自体には変化がありません。このとき、\(S\) の第 \(k,l\) 成分は

と表せます。なお、スカラー倍しても固有ベクトルは変わらないので、以下の証明では \(S=X^\TT X\) として考えます。

性質1:固有値は非負の実数

\(S=X^\TT X\) の固有ベクトルを \(\bm_k\,(k=1,2. p)\) 、固有値を \(\lambda_k\) とおくと、

が成立します。左から \(\bm_k^\TT\) をかけて式を変形すると、固有値 \(\lambda_k\) が非負であることが示されます。

$$ \begin \bm_k^\TT X^\TT X\bm_k &= \lambda_k \bm_k^\TT\bm_k \\ \|X\bm_k\|^2 &= \lambda\|\bm_k\|^2 \\ \therefore\hspace\lambda_k &= クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは \dfrac<\|X\bm_k\|^2><\|\bm_k\|^2> \geq 0 \hspace \myqed \end $$

固有値がすべて非負の実数になるのは、半正定値行列について成り立つ性質です。詳しくは、学びTimesさんの記事に詳しく書かれています。

性質2:異なる固有値の固有ベクトルは直交

\(S\) の異なる固有値を \(\lambda_k,\lambda_l\,(k,l=1,2. p;\lambda_k\neq \lambda_l)\)、対応する固有ベクトルを \(\bm_k,\bm_l\) とおきます。

上式に左から \(\bm_l^\TT\) をかけます。

\(S\) が対称行列(\(クロネッカーデルタとは \text\,S^\TT = S\))であることを用いて

$$ \begin \bm_l^\TT S^\TT\bm_k &= \lambda_k \bm_l^\TT\bm_k \\ (S\bm_l)^\TT\bm_k &= \lambda_k \bm_l^\TT\bm_k \\ \lambda_l\bm_l^\TT\bm_k &= \lambda_k \bm_l^\TT\bm_k \\ (\lambda_l-\lambda_k)\bm_l^\TT\bm_k &= 0 \\ \therefore\hspace\bm_l^\TT\bm_k クロネッカーデルタとは &= 0\hspace(\because\,\lambda_l-\lambda_k\neq0)\hspace\myqed \end $$

したがって、異なる固有値の固有ベクトルの内積は \(0\)、すなわち固有ベクトルは互いに直交することが示されました。

異なる固有値に対応する固有ベクトルが直交するのは、任意の対称行列について成り立つ性質です。詳しくは、学びTimesさんの記事に詳しく書かれています。

標準化の使い分け

1.3節で、データを平均 \(0\), 分散 \(1\) に標準化してから主成分分析を行う場合について説明しました。では、具体的にどういった場合に標準化すべきなのか、考察したいと思います。

標準化においてポイントとなるのは、すべてのパラメータの分散が \(1\) に規格化されるという点です。1節などで説明した通り、主成分分析では、分散を情報量の大きさと捉えています。よって、標準化によって分散の値を \(1\) に規格化することは、各パラメータを平等に扱うことに対応していると考えられます。主成分分析を行う目的やデータの特徴にもよりますが、各変数が同じぐらいの情報を持っている場合は標準化すべきで、そうでない場合は必ずしも標準化は必要ない、ということができそうです。

次に、必ずしも標準化を行うべきとは言えないケースとして、Qiitaの記事より、夕焼けのRGB画像に対して主成分分析を行ったものを紹介します。標準化を行った場合と行わなかった場合を比較すると、標準化した場合の第一主成分の寄与率は、標準化を行わなかった場合と比べておよそ \(11\,\%\) ほど低下してしまいました。これは、元の画像において赤の分散が最も大きいことに起因します。夕焼けの画像に赤が多く含まれることは、捨てるべき情報とは言えないので、必ずしも標準化が必要とはいえません(青・緑の成分について詳しく考えたい場合はその限りではありません)。

このように、標準化が必要かどうかは、データの特徴や主成分分析の使用目的に依存します。まとめると、最初の例のように、データの特性を説明する上で、複数の変数が寄与しており、なおかつ変数間の分散の差が大きい場合は、それらを平等に扱うために標準化が必要です。対して、変数間の分散の差それ自体が重要な情報を持っており、標準化によってその情報が失われてしまう場合は、必ずしも標準化すべきとは言えません

βダイバージェンスについて、さっと語る

自然科学

確率分布 \(\mathbf, \mathbf\) クロネッカーデルタとは クロネッカーデルタとは のβダイバージェンスは、以下のように定義される。

また、 \(\mathbf, \mathbf\) がともに離散分布であり、確率質量関数を用いて \(\mathbf=[p_1, p_2, \ldots, p_n], \mathbf=[q_1, q_2, \ldots, q_n]\) と表せるとき

定義では、βの範囲から \(0, 1\) を除いたが、 \(\beta=0,1\) でのダイバージェンスも定義することができる。

一般化KLダイバージェンス

を用いて \(\beta\to 1\) の極限を計算すると

これは、一般化KL(Kullback-Leibler)ダイバージェンス呼ばれる指標である。

板倉斎藤擬距離

また、 \(\beta\to クロネッカーデルタとは 0\) の極限を計算すると

となり、板倉斎藤(IS)擬距離が導かれる。

この指標は音源分離など、スケール不変性が特徴的な分野でよく用いられる。(→別記事)

と、二乗誤差関数(L2-norm)が導かれる。

(補足)関係式 (1) の証明

関係式 (1) を考えるに際し、まず、以下の極限を考える。

より、不定形である。

同様にロピタルの定理を用いることで、関係式 (1) が導出できる。

Cichocki A and Amari S. Families of α-, β- and γ-divergences: flexible and robust measures of similarities. Entropy, 12, 1532-1568, 2010.

3週前の人流がデルタ株の増減と最も相関していたという解説

f:id:Knoa:20220216204457p:plain

まずこちらの散布図をご覧ください。これを見ても特に興味が湧かなかった人は、この先を読んでもたぶんおもしろくないです。これから、どうやってこの図にたどり着くかを解説していきます。

人流と感染者数の正しい見方

f:id:Knoa:20220216143040p:plain

緊急事態宣言やまん防などについて、効果が出ているかどうか、一般のニュース番組などでサラッと触れるだけの場合、次のような図が示されることがあります。しかしこれははなはだ不親切と言わざるを得ません。むしろこんな図を見せられてもふつうは効果が出ているのかピンと来ないので、「緊急事態宣言に意味はない」などとする論説を勢いづかせてしまいます。

最低限、図示にあたって必要なのは人流です。ここでは、LocationMind xPop の提供による、都内の主要繁華街の人流データを使いました。

f:id:Knoa:20220216143049p:plain

下記の図を見れば、少なくとも政府による行動制限が人流に影響を及ぼしていることは明らかでしょう。その上で、人流を減らすことが感染者数の抑制にどれだけ寄与しているのかを、ここから少しずつ浮き彫りにしていきます。

f:id:Knoa:20220216143058p:plain

まず、感染者数そのものの替わりに、感染者数の前週比を示します。専門家会議などの資料や、少ししっかりした報道番組なら、ここまで掘り下げることもめずらしくないでしょう。しかし見るべき指標という意味では正しいのですが、まだ不足です。

f:id:Knoa:20220216143107p:plain

まったく同じ人流でも、アルファなら減らせるけどデルタは増えてしまうといったことがありえますから、人流に対する前週比は必ず変異株ごとに見なければなりません。ひとつ前のグラフを灰色で示していますが、7月の段階ではアルファを含んだ感染者数全体より、デルタだけの前週比はずっと高かったですし、年明けのオミクロンの爆発に比べれば、デルタ自身の増加比はそこまで大きくはありませんでした。

f:id:Knoa:20220216143118p:plain

さらに、ワクチンの効果を考慮しなければなりません。青色がワクチンが「なかった場合」の前週比で、ワクチンのおかげで現実には灰色のレベルまで前週比を下げ続けてきたということになります。

f:id:Knoa:20220216143127p:plain

さて、感染を防いでくれるのは、ワクチンだけでなく、感染による自然免疫もあります。特に、デルタはかなりの規模で感染が広まりましたし、検査して感染者として発表された人だけでなく、気付かずに感染して無症状のまま免疫だけを獲得した人がその何倍もいると推定されます。ここでは、日本の従来株時の調査で報告された「発表された感染者数の4倍」という想定で、ワクチンと同様に自然免疫の効果を差し引きます。全体に与える影響はワクチンより小さいですが、無視してよいほどでもありません。

※ 日本の従来株時で実際の感染者が発表の4倍という倍率は、デルタ時にどうなっているかはまだ不明。ワクチンの普及のおかげで無症状のまま気付かないひとが増えている可能性はある。アメリカではデルタ時に4倍という推計があるが、国が違うことは大いに考慮されるべき。 ※ 2月17日追記: 日本のデルタ時の速報で、実際の感染者(抗体保有者)と発表の感染者がほとんど変わらないという調査結果が出た。さすがに従来株時の調査とも空港検疫の無症状率とも海外の推計とも矛盾が大きく、速報の「留意点」としても、抗体を十分に獲得できない感染者もいることや、抗体が長期的に減衰することが付記されている。

f:id:Knoa:20220216143137p:plain

ここまでやって初めて、人流と前週比の関係を正しく見比べることができます。赤丸で示した人流が、少し右にずれて青丸の前週比と連動している様子がつかめてきたでしょうか。

いよいよ散布図です。まずはデルタの前週比を、1, 2, 3, 4週前の人流とそれぞれ比較してみましょう。どれもある程度の相関はありそうですが、特に3週前がきれいに相関しているように見えます。(人流も感染者の増減も連続的に変化しますから、3週前が相関していれば2週前や4週前もそれなりに相関します)

f:id:Knoa:20220216204506p:plain f:id:Knoa:20220216204514p:plain

f:id:Knoa:20220216204523p:plain f:id:Knoa:20220216204531p:plain

f:id:Knoa:20220216204541p:plain

それは「祝日のあった週の翌週は、前週比が大きくなる」という経験則に基づく補正です。医療機関の休診の影響で翌週にしわ寄せが出ているとか、単純に休日が感染機会を生んでいるのかもしれません(翌週すぐ現れるので3週のズレとはまた別の機序か)。本来は祝日の曜日別に数年分のデータで統計を取りたいところですが、そんなデータはないので、ひとまず「祝日の日数 × (1/7) だけ前週比が増している」と仮定して、その分を差し引きます。結果、少しだけ目立っていた上方向の突起が、きれいにへこみました。

このようにして、「3週前の人流」がデルタ株の増減に最も相関していたことを可視化できました。同様の手法で、LocationMind クロネッカーデルタとは クロネッカーデルタとは xPop の提供による繁華街ではなく、Agoop の提供による新宿の人流を元にした図も示しておきます。こちらは全国多数の観測地点が用意されている中で、人力の限界と代表性の観点から新宿を選んでデータ化しているだけなので、より多くの地点のデータを元にすれば、さらに精度は高まるものと思います。

f:id:Knoa:20220216204457p:plain f:id:Knoa:20220216204551p:plain

人流こそが悪なのか?

本来であれば、人流抑制に頼らない感染対策があればよいのですが、幸いにも日本人はマスクは既に着用していますし、徹底した黙食を大人に強いることは現実的ではないと考えられているため、やむなく根元の人流から断つしかないというのが実情だと思います。

しかし、たとえば変異株が少しずつ世代間隔を短くしてきたことも活かして、徹底した本気の黙食3日間キャンペーンを打ってみるなど、ワクチンや人流抑制に頼らない方法がもっと模索されてもよいとも感じます。何ヶ月も続ける行動抑制より、費用対効果はよほど高い気がしますが、都民や国民の心をひとつにするには、隕石やゴジラが来襲しないと難しいでしょうか?

主成分分析とは?[解析例・導出つき]

120人分の数学と理科の点数のダミーデータ

上図はすべての人のスコアをプロットしたものです(データはダミーです)。データの特性として、数学の点数が高ければ、理科の点数も高い傾向があることがわかります。そこで、データのばらつきが最も大きい方向に新たに軸を取り、その軸への射影を考えると、理数系科目の総合力を表すような新たな変数を構成できると考えられます。

PCAによる解析結果(赤い矢印:第1主成分方向、青い矢印:第2主成分方向)

数学的理解

まず、いくつかの変数を定義します。\(p\) 個のパラメータで表される実数のデータ組が \(n\) サンプルだけあるとき、これを \(n\times p\) の行列の形で \(X\) とします。

$$ X = \left( \begin x_ & x_ & \cdots & x_ \\ x_ & クロネッカーデルタとは x_ & \cdots & x_ \\ \vdots & \vdots & \ddots & \vdots \\ x_ & x_ & \cdots & x_ \end \right) $$

\(x_\) は、\(i\) 番目のサンプルの \(クロネッカーデルタとは クロネッカーデルタとは j\) 番目のパラメータの値を表します。

例えば、身長と体重のデータの場合は \(p=2\), 測定した人の数が \(n\) に相当します。

\(j\) 番目のパラメータの平均値を \(\mu_j\,(j=1,2. p)\) とおきます。

\(\mu_j\) を用いて、データの分散共分散行列(variance-covariance matrix)\(S\) を定義します。\(S\) は \(p\times p\) の正方行列です。

$$ \begin &S クロネッカーデルタとは = \left( \begin s_ & s_ & \cdots & s_ \\ s_ & s_ & \cdots & s_ \\ \vdots & \vdots & \ddots & \vdots \\ s_ & クロネッカーデルタとは s_ & \cdots & s_ \end \right) \\ &s_ = \dfrac\sum_^n (x_-\mu_k)(x_-\mu_l)\hspace(k,l=1,2. p) \end $$

\(s_\) は \(k\) 番目と \(l\) 番目の変数の共分散(covariance)を表します。なお、\(k=l\) のときは クロネッカーデルタとは クロネッカーデルタとは \(k\) 番目の変数の分散(variance)を表します。\(s_\) の定義より、\(s_ = s_\)が成立します。よって、分散共分散行列 \(S\) は実対称行列になります(\(\text\,S = S^\TT\))。

上式の \(s_\) では、偏差の積を \(n\) で割っていますが、調べたい集団全体(母集団)一部を取り出したサンプル(標本)を用いる場合は、偏差の積の和を \(n-1\) で割って定義される不偏分散(unbiased variance) を用います。 $$ クロネッカーデルタとは s_ = \dfrac\sum_^n (x_-\mu_k)(x_-\mu_l)\hspace(k,l=1,2. p) $$ 多くの場合、調べたい集団すべてのデータを取ることは困難なので、基本的には不偏分散を用いることになります。

データ解析においては、データの平均値を予め \(\mu_j = 0\) としてから \(S\) を計算することが多いです。このとき、 $$ s_ = \dfrac\sum_^n x_x_\hspace(k,l=1,2. p) クロネッカーデルタとは $$ であり、分散共分散行列 \(S\) は $$ S = \dfracX^\TT X $$ と表せます。ただし、\(\TT\) は転置を意味します。

主成分分析では、データを新たな軸に射影したとき、その分散が最も大きくなるように軸の方向を定めます。分散が最大となる方向を第1主成分方向とよびます。分散共分散行列 \(S\) の固有値を \(\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_p\), 対応する固有ベクトルを \(\bm_1,\bm_2. \bm_p\) とおいたとき、第1主成分方向は 分散共分散行列 \(S\) の最大固有値 \(クロネッカーデルタとは クロネッカーデルタとは \lambda_1\) の固有ベクトル \(\bm_1\) になります。

便宜上、\(i\) 番目のサンプルのデータセットを行ベクトルの形で \(\bm_i := (x_,x_. x_)\) とします。\(i\) 番目のサンプルの第1主成分得点 \(t_\) は、\(\bm_i\) と \(\bm_1\) の内積として

第2主成分方向は、第1主成分方向 \(\bm_1\) に直交する条件の下で、データを射影したときのばらつきが最大となる方向として決められ、これは分散共分散行列 クロネッカーデルタとは クロネッカーデルタとは \(S\) の第2固有値 \(\lambda_2\) の固有ベクトル \(\bm_2\) に相当します。

一般に、第 \(k\) 主成分方向 \((k=1,2. p)\) は、分散共分散行列 \(S\) の第 \(k\) 固有値の第 \(k\) 固有ベクトル \(\bm_k\)になり、\(クロネッカーデルタとは i\) 番目のサンプルに関する第 \(k\) 主成分得点 \(t_\) は、\(\bm_i\) \(\bm_k\) の内積で表されます。

最後に、\(S\) の固有値に注目して、寄与率・累積寄与率を紹介します。

\(S\) の固有値 \(\lambda_k\) は、 \(k\) 主成分得点の分散に等しくなります。よって、\(\lambda_k\) が大きければ、 \(k\) 主成分は元のデータの情報を多く含んでいると解釈できます。

それを相対的に評価したのが寄与率(contribution rate)で、第 クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは \(k\) 主成分の寄与率は以下で表されます。

累積寄与率(accumulative contribution rate)は、第1主成分から第 \(k\) 主成分までがどの程度の情報を持っているかを表す指標で、以下で表されます。

データの標準化

主成分分析を適用する前に、データに対して標準化を行う場合があります。具体的には、各変数について 平均 \(0\), 分散 \(1\) となるようにデータを変換することを言います。標準化したデータの行列 \(Z\) は以下で表されます。

$$ Z = \left( \begin z_ & z_ & \cdots & z_ \\ クロネッカーデルタとは z_ & z_ & \cdots & z_ \\ \vdots & \vdots & \ddots & \vdots \\ z_ & z_ & \cdots & z_ \end \right) $$

\(\mu_j,s_\) はそれぞれ クロネッカーデルタとは クロネッカーデルタとは \(j\) 番目のパラメータの平均と分散を表します。

で確かに \(0\) となっています。また、分散は

平均 \(0\), 分散 \(1\) に標準化したデータはz得点(z-score)とも呼ばれます。

標準化したデータにも、分散共分散行列 \(S\) に相当するものを考えることができ、それは相関行列 \(R\) と呼ばれます。

$$ \begin R = \left( \begin 1 & r_ & \cdots & r_ クロネッカーデルタとは \\ r_ & 1 & \cdots & r_ \\ \vdots & \vdots & \ddots & \vdots \\ r_ & r_ & \cdots & 1 \end \right) = \dfracZ^\TT Z クロネッカーデルタとは \\ r_ = \dfrac\sum_^n z_z_\hspace(k,l=1,2. p) \end $$

対角成分は \(j\) 番目のパラメータの分散を表し、標準化によってすべて \(1\) となっています。また、\(S\) と同様に、\(R\) も実対称行列です。

主成分方向や主成分得点などは、前述した標準化していないデータの分散共分散行列 \(S\) の固有値・固有ベクトルによって求められたのと同様に、相関行列 \(R\) の固有値・固有ベクトルによって求められます。しかし、主成分方向や主成分得点は、標準化しなかった場合の結果とは異なるので、注意が必要です。

標準化をすべきか否かについては、4.3節で考察を行いました。筆者の見解が含まれますが、各変数が同じぐらいの情報を持っている場合は標準化すべきで、そうでない場合は必ずしも標準化は必要ない、ということができそうです。また、主成分分析の使用目的やデータの特徴にも依存します。

数学と理科の点数

120人分の数学と理科の点数のデータを作成します。ダミーデータは、数学と理科の相関行列から乱数を生成し、予め定めた平均値・標準偏差を加えることで生成できます。相関行列は半正定値行列(positive semidefinite matrix)でなければなりません。

120人分の数学と理科の点数のダミーデータ

np.クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは std は標準偏差を求める関数で、ddof=1 とした場合は、不偏分散として計算されます。詳しくは公式サイトを参照してください。

分散共分散行列 \(S\) を計算します。\(S\) の対角成分は、各パラメータの分散に等しくなります。

分散共分散行列 \(S\) の固有値・固有ベクトルを求めます。各固有ベクトルを縦ベクトルとして \(\bm_1,\bm_2\) とすると、 \(V=(\bm_1,\bm_2)\) のように並んでいます。なお、固有値・固有ベクトルは、固有値の大きい順になるように並び替えています。

固有ベクトルの向きは、必ずしも数学と理科の点数が高くなる方向にはなりません。実際に、第1主成分方向は両方の点数が低くなる方向になっています。軸の方向だけが重要なので、主成分方向の正負を入れ替えても問題ありません

PCAによる解析結果(赤い矢印:第1主成分方向、青い矢印:第2主成分方向)

身長と体重

120人分の身長と体重のダミーデータ

身長と体重では、単位が \(\mathrm\) と \(\mathrm\) で異なります。この場合、各変数を標準化してから解析を行うのが通常です。標準化したデータ \(Z\) クロネッカーデルタとは は、以下のように算出できます。

標準化した身長と体重のデータ

a.u. は任意単位(arbitrary unit)のことです。身長と体重を標準化したことで、単位がなくなっているため、このように記載しています。

この \(Z\) を用いて、相関行列 \(R\) を求めます。

相関行列 \(R\) の固有値・固有ベクトルを求めます。

各主成分方向をデータと合わせてプロットすると、以下のような図が得られます。第1主成分方向(赤い矢印)は身長と体重が両方とも高くなる方向になっているため、体格の大きさを表す変数として解釈できます。一方で、第2主成分方向(青い矢印)は、身長が低く体重が重い領域から、身長が高く体重が軽い方向にわたっているので、肥満度を表すような変数として解釈することができます。

肥満度を表す指数としてよく使われるBMI(body mass index)は、身長と体重の2変数から肥満度を表す1変数へ次元が減っているので、次元圧縮の例といえます。 $$ \mathrm := \frac\,[\mathrm]><(\text<身長>\,[\mathrm])^2> $$

アヤメの分類

\(X\) は \(150\times 4\) の行列で、\(4\) つのパラメータのデータは、がく片の長さ・幅・花びらの長さ・幅の順で格納されています。

\(Y\) はアヤメの品種をラベル付けしたベクトルで、\(0\) が setosa, \(1\) が versicolor, \(2\) が virginica になります。

標準化を行ったのち、相関行列 \(R\) を求めます。

相関行列 \(R\) の固有値・固有ベクトルを求めます。

第1主成分方向、つまり最大固有値の固有ベクトルを見ると、がく片の長さ・花びらの幅と長さはすべて符号が \(+\) で、がく片の幅のみ \(-\) になっています。このことから、がく片の細長さと花びらの全体的な大きさを見ることで、アヤメの3品種がおおむね区別できることが予想されます。

第一主成分の寄与率はおよそ \(73.クロネッカーデルタとは 0\,\%\) と高い値を示しています。また、第2主成分までの累積寄与率がおよそ \(95.8\,\%\) であることから、第2主成分までで、データのおおよその特性が説明できるといえます。

各データの第1・第2主成分得点(赤:setosa、緑:versicolor、青:virginica)

各データの第1・第2・第3主成分得点(赤:setosa、緑:versicolor、青:virginica)

1節と同様に、\(p\) 個のパラメータで表される実数のデータ組が \(n\) サンプルだけあるとき、これを \(n\times p\) の行列の形で \(X\) とします。

$$ X = \left( \begin x_ & x_ & クロネッカーデルタとは \cdots & x_ \\ x_ & x_ & \cdots & x_ \\ \vdots & \vdots & \ddots & \vdots \\ x_ & x_ & \cdots & x_ \end \right) $$

便宜上、\(クロネッカーデルタとは i\) 番目のサンプルのデータセットを行ベクトルの形で \(\bm_i := (x_,x_. x_)\) とします。\(i\) 番目のサンプル \(\bm_i\) の第1主成分得点 \(t_\) は、 \(p\) 次元の縦ベクトル \(\bm_1=(w_1,w_2. w_p)^\TT\) を用いて、

と表せます。主成分分析では、第1主成分得点 \(クロネッカーデルタとは t_1\) の分散が最大となるように \(\bm_1\) を決めることになります。第1主成分得点の分散 \(\mathrm[t_1]\) は

とできます。ただし、\(\bm <\mu>= \frac(\sum\limits_i x_,\sum\limits_i x_. \sum\limits_i x_)\) は各パラメータの平均値を表す \(p\) 次元の横ベクトルです。\(\mathrm[t_1]\) をさらに変形して、

$$ \begin \mathrm[t_1] &= \dfrac\sum\limits_i (t_ - クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは \bar_1)^2 \\ &= \dfrac\sum\limits_i [(\bm_i - \bm<\mu>)\bm_1]^2 \\ &= \bm_1^\TT \left[\dfrac \sum\limits_i (\bm_i - \bm<\mu>)^\TT(\bm_i - \bm<\mu>) \right]\bm_1 \\ &= \bm_1^\TT S \bm_1 \end $$

を得ます。ここで、\(S\) は分散共分散行列で、1.2節で定義したものと同じです。

以上より、第1主成分方向は、\(\mathrm[t_1] = \bm_1^\TT S\bm_1\) を最大とするような \(\bm_1\) に相当することがわかりました。現状、\(\bm_1\) が大きくなれば、第1主成分得点の分散 \(\mathrm[t_1]\) はいくらでも大きくなってしまいます。そこで、\(\|\bm_1\|_2 =1\) の制約を課すことで、分散の発散を防ぎます。このような制約付きの極値問題は、ラグランジュの未定乗数法によって求めることができます。ラグランジュ乗数を \(\alpha\) として、目的関数 \(L(\bm_1,\alpha)\) は

と表せ、求める \(\bm_1\) は以下の2式を満たします。

上式の第2式は、\(\bm_1^\TT\bm_1 - 1 = 0\) であり、これは制約条件そのものです。

したがって、求める \(\bm_1\) は、分散共分散行列 \(S\) の固有ベクトルになることがわかります。また、このとき、

より、第1主成分得点の分散は固有値に等しいことがわかります。

以上より、第1主成分方向は、分散共分散行列 \(S\) の最大固有値の固有ベクトルであることがわかりました。

改めて、分散共分散行列 \(S\) の固有値を \(\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_p\), 対応する固有ベクトルを \(\bm_1,\bm_2. \bm_p\) とおくと、\(\bm_1 クロネッカーデルタとは = \bm_1,\,\mathrm(t_1) = \lambda_1\) となります。

第2主成分方向については、第1主成分方向に直交する条件下で、第2主成分得点の分散を最大にする方向として決められます。これは、第1主成分方向を求めた際に用いたラグランジュ未定乗数法の制約条件に、最大固有値の固有ベクトルとの直交性を追加することで求めることができます。ラグランジュ乗数を \(\alpha_1,\alpha_2\) として、目的関数 \(L(\bm_2,\alpha_1,\alpha_2)\) は

$$ L(\bm_2,\alpha_1,\alpha_2) = \bm_2^\TT S\bm_2 - \alpha_1(\bm_2^\TT\bm_2 - 1) + \alpha_2 \bm_1^\TT\bm_2 $$

と表せます。第1主成分を求めた時と同様に、求める \(\bm_2\) は以下の3式を満たします。

第2式は係数ベクトルの正規化に関する条件 \((\bm_2^\TT\bm_2 = 1)\)、第3式は第1主成分方向との直交性を表します \((\bm_1^\TT\bm_2 = 0)\) 。

となります。左から \(\bm_1^\TT\) をかけると、

$$ \begin 2\bm_1^\TT S\bm_2 - 2\alpha_1\bm_1^\TT\bm_2 + \alpha_2 \bm_1^\TT\bm_1 &= 0 \\ 2(S\bm_1)^\TT \bm_2 + \alpha_2 &= 0 \hspace(\because S^\TT = S, \bm_1^\TT\bm_2 = 0)\\ 2\lambda_1\bm_1^\TT\bm_2 + \alpha_2 &= 0 \\ \therefore\hspace \alpha_2 &= 0 \end $$

よって、\(\alpha_2 = 0\) となるので、\(\partial L/\partial \bm_2\) は第1主成分方向を求めた時と同じ形であり、第2主成分方向は、\(S\) の第2固有値 \(\lambda_2\) の固有ベクトル \(\bm_2\) となります。

同様に制約条件を増やしていくことで、一般に第 \(k\) 主成分方向は、第 \(k\) 固有値 \(\lambda_k\) の固有ベクトル クロネッカーデルタとは クロネッカーデルタとは クロネッカーデルタとは \(\bm_k\) であることがわかります。

ベクトル微分

まず、\(p=2\) の場合について考えます。目的関数 \(L(\bm,\alpha)\) は

$$ \begin L(\bm,\alpha) &= \bm^\TT S\bm - \alpha(\bm^\TT\bm - 1)\\ &= (w_1,w_2) \left( \begin s_ & s_ \\ s_ & s_ \end \right) \left( \begin w_1 \\ w_2 \end \right) - \alpha(w_1^2 + w_2^2-1) \\ &= s_w_1^2 + s_w_2^2 + (s_+s_)w_1 w_2 クロネッカーデルタとは - \alpha(w_1^2 + w_2^2 - 1) \end $$

\(L(\bm,\alpha)\) の \(w_1,w_2\) の偏微分は、\(s_ = s_\) に注意すると

次に、一般の \(p\geq 2\) について考えます。\(\partial (\bm^\TT\bm)/\partial クロネッカーデルタとは \bm = 2\bm\) は \(p=2\) の場合と同様に行うことで容易に導出できるので、ここでは \(\bm^\TT S\bm\) の項のみについて考えます。具体的に展開すると、

$$ \begin \bm^\TT S\bm &= (w_1. w_p) \left( \begin s_ & s_ & \cdots & s_ \\ s_ & s_ クロネッカーデルタとは クロネッカーデルタとは & \cdots & s_ \\ \vdots & \vdots & \ddots & \vdots \\ s_ & s_ & \cdots & s_ \end \right) \left( \begin w_1 \\ \vdots \\ w_p クロネッカーデルタとは \end \right) \\ &= \sum_^p \sum_^p s_w_k w_l \end $$

\(\bm^\TT S\bm\) の \(w_q\,(1\leq q\leq p)\) による偏微分を考えます。このとき、シグマの中の \(w_q\) の項だけ \(1\)、それ以外は \(0\) になるので、クロネッカーのデルタ \(\delta_\) を用いて、

クロネッカーのデルタは以下で定義されます。 $$ \delta_ = \begin 1 & (i=j) \\ 0 & (i\neq j) \end $$

となります。最終行は、\(S\bm\) の \(q\) 行目を意味します。以上より、

分散共分散行列の性質

主成分分析は、分散共分散行列の固有値問題として帰着します。その分散共分散行列の性質を詳しく見てみましょう。

分散共分散行列 \(S\) は以下で表されます(再掲)。

$$ \begin &S = \left( \begin クロネッカーデルタとは クロネッカーデルタとは s_ & s_ & \cdots & s_ \\ s_ & s_ & \cdots & s_ \\ \vdots & \vdots & \ddots & \vdots \\ s_ & s_ & \cdots & s_ \end \right) \\ &s_ = \dfrac\sum_^n (x_-\mu_k)(x_-\mu_l)\hspace(k,l=1,2. p) \end $$

\(S\) の固有値を \(\lambda_1\geq\lambda_2\geq\cdots\geq\lambda_p\), 対応する固有ベクトルを \(\bm_1,\bm_2. \bm_p\) とおきます。このとき、以下の性質を満たします。

  1. 固有値は非負の実数(\(\lambda_k\geq 0\))
  2. 異なる固有値の固有ベクトルは直交(\(\bm_k^\TT\bm_l = 0\,(k\neq l)\))

分散共分散行列 \(S\) は平均との偏差の積を計算しているので、データを表す行列 \(X\) の各変数の平均値を予め \(0\) としても、 \(S\) 自体には変化がありません。このとき、\(S\) の第 \(k,l\) 成分は

と表せます。なお、スカラー倍しても固有ベクトルは変わらないので、以下の証明では \(S=X^\TT X\) として考えます。

性質1:固有値は非負の実数

\(S=X^\TT X\) の固有ベクトルを \(\bm_k\,(k=1,2. p)\) 、固有値を \(\lambda_k\) とおくと、

が成立します。左から \(\bm_k^\TT\) をかけて式を変形すると、固有値 \(\lambda_k\) が非負であることが示されます。

$$ \begin \bm_k^\TT X^\TT X\bm_k &= \lambda_k \bm_k^\TT\bm_k \\ \|X\bm_k\|^2 クロネッカーデルタとは &= \lambda\|\bm_k\|^2 \\ \therefore\hspace\lambda_k &= \dfrac<\|X\bm_k\|^2><\|\bm_k\|^2> \geq 0 \hspace \myqed \end $$

固有値がすべて非負の実数になるのは、半正定値行列について成り立つ性質です。詳しくは、学びTimesさんの記事に詳しく書かれています。

性質2:異なる固有値の固有ベクトルは直交

\(S\) の異なる固有値を \(\lambda_k,\lambda_l\,(k,l=1,2. p;\lambda_k\neq \lambda_l)\)、対応する固有ベクトルを \(\bm_k,\bm_l\) とおきます。

上式に左から \(クロネッカーデルタとは \bm_l^\TT\) をかけます。

\(S\) が対称行列(\(\text\,S^\TT = S\))であることを用いて

$$ \begin \bm_l^\TT S^\TT\bm_k &= \lambda_k \bm_l^\TT\bm_k \\ (S\bm_l)^\TT\bm_k &= \lambda_k \bm_l^\TT\bm_k \\ \lambda_l\bm_l^\TT\bm_k &= \lambda_k \bm_l^\TT\bm_k \\ (\lambda_l-\lambda_k)\bm_l^\TT\bm_k クロネッカーデルタとは &= 0 \\ \therefore\hspace\bm_l^\TT\bm_k &= 0\hspace(\because\,\lambda_l-\lambda_k\neq0)\hspace\myqed \end $$

したがって、異なる固有値の固有ベクトルの内積は \(0\)、すなわち固有ベクトルは互いに直交することが示されました。

異なる固有値に対応する固有ベクトルが直交するのは、任意の対称行列について成り立つ性質です。詳しくは、学びTimesさんの記事に詳しく書かれています。

標準化の使い分け

1.3節で、データを平均 \(0\), 分散 \(1\) に標準化してから主成分分析を行う場合について説明しました。では、具体的にどういった場合に標準化すべきなのか、考察したいと思います。

標準化においてポイントとなるのは、すべてのパラメータの分散が \(1\) に規格化されるという点です。1節などで説明した通り、主成分分析では、分散を情報量の大きさと捉えています。よって、標準化によって分散の値を \(1\) に規格化することは、各パラメータを平等に扱うことに対応していると考えられます。主成分分析を行う目的やデータの特徴にもよりますが、各変数が同じぐらいの情報を持っている場合は標準化すべきで、そうでない場合は必ずしも標準化は必要ない、ということができそうです。

次に、必ずしも標準化を行うべきとは言えないケースとして、Qiitaの記事より、夕焼けのRGB画像に対して主成分分析を行ったものを紹介します。標準化を行った場合と行わなかった場合を比較すると、標準化した場合の第一主成分の寄与率は、標準化を行わなかった場合と比べておよそ \(11\,\%\) ほど低下してしまいました。これは、元の画像において赤の分散が最も大きいことに起因します。夕焼けの画像に赤が多く含まれることは、捨てるべき情報とは言えないので、必ずしも標準化が必要とはいえません(青・緑の成分について詳しく考えたい場合はその限りではありません)。

このように、標準化が必要かどうかは、データの特徴や主成分分析の使用目的に依存します。まとめると、最初の例のように、データの特性を説明する上で、複数の変数が寄与しており、なおかつ変数間の分散の差が大きい場合は、それらを平等に扱うために標準化が必要です。対して、変数間の分散の差それ自体が重要な情報を持っており、標準化によってその情報が失われてしまう場合は、必ずしも標準化すべきとは言えません

関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次
閉じる