こんにちはたくまろです。今回は自分の専門分野である、高次元統計解析について紹介したいと思います。データサイエンスやビックデータの解析などで耳にしたことがあるかもしれません。とは言ってもまだまだ新しい分野です。
ここでは、高次元データの主成分分析についてピックアップしたいと思います。また、この記事の内容は僕のバイブルである「高次元の統計学」に基づいています。もっと詳しく知りたい方は、読んでみてください!
はじめに、
【高次元統計解析入門】高次元データのメリット・デメリット【データサイエンス】
を読んでくれると、分かりやすいかもしれません。
高次元の統計学 (統計学One Point 11) [ 青嶋 誠 ] 価格:2,420円 |
標本共分散行列の双対表現について
双対相互共分散行列の定義
平均が\(d\)次元ベクトル\(\boldsymbol{\mu}\)で共分散行列が\(d\)次元正定値行列\(\boldsymbol{\Sigma}(>\boldsymbol{O})\) であるような分布から独立に\(\boldsymbol{X}=(\boldsymbol{x}_1,…,\boldsymbol{x}_n)\)をサンプリングします。すると、標本共分散行列\(\boldsymbol{S}_n\)は次で表されます。
$$\boldsymbol{S}_n=(n-1)^{-1}(\boldsymbol{X}-\bar{\boldsymbol{X}})(\boldsymbol{X}-\bar{\boldsymbol{X}})^T$$
ただし、\(\bar{\boldsymbol{X}}=(\bar{\boldsymbol{x}},…,\bar{\boldsymbol{x}})\)です。さらに双対標本共分散行列\(\boldsymbol{S}_D\)を次で定義します。
$$\boldsymbol{S}_D=(n-1)^{-1}(\boldsymbol{X}-\bar{\boldsymbol{X}})^T(\boldsymbol{X}-\bar{\boldsymbol{X}})$$
標本共分散行列のサイズは\(d\times d\)である反面、双対標本共分散行列はのサイズは\(n\times n\)です。
相互共分散行列を使うメリット
主成分分析を行う際、標本共分散行列を固有値分解します。
この時の計算量は\(O(nd^2)\)です。しかし、双対標本共分散行列の固有値分解を使えば計算量は\(O(n^2d)\)になります。もしも\(n<<d\)が成立するならば、大幅に計算量を減らすことが出来ます。固有値分解を下記のように表現します。
$$\boldsymbol{S}_n=\sum_{i=1}^d \hat{\lambda}_i \hat{\boldsymbol{h}}_i \hat{\boldsymbol{h}}_i^T$$
$$\boldsymbol{S}_D=\sum_{i=1}^n \hat{\lambda}_i \hat{\boldsymbol{u}}_i \hat{\boldsymbol{u}}_i^T$$
とします。\(\boldsymbol{S}_n,\ \boldsymbol{S}_D\)は順序を入れ替えただけなので\(n\)個の固有値は一致します。さらに、固有ベクトルは次のような関係があります。
$$\hat{\boldsymbol{h}}_i = \frac{(\boldsymbol{X}-\bar{\boldsymbol{X}})\hat{\boldsymbol{u}}_i}{\sqrt{(n-1)\hat{\lambda}_i}}\ \ (i=1,…,n-1)$$
このことから、\(\boldsymbol{S}_D\)の固有値分解の結果から、\(\boldsymbol{S}_n\)の固有値分解の結果を導くことができます。
これまでの主成分分析の問題点
最大の問題は\(\boldsymbol{S}_n\)の固有値分解と\(\boldsymbol{\Sigma}\)の固有値分解の結果が高次元においてずれてしまう点です。諸条件のもとで次の数式が考えられます。
[box class=”box5″]
$$\frac{\hat{\lambda}_i}{\lambda_i}= 1 + \frac{\sum_{j=i+1}^{d} \lambda_j}{(n-1)\lambda_i}+o_P(1)\ \ (d,n\to\infty)$$
[/box]
\(o_P(1)\)とは\(d,n\to\infty\)のときに漸近的に確率が0になる項です。誤差みたいなものです。
標本共分散行列の固有値\(\hat{\lambda}_i\)と\(\lambda\)の比が\(1\)よりも\( \frac{\sum_{j=i+1}^{d} \lambda_j}{(n-1)\lambda_i}\)だけ大きくなってしまいます。この部分をノイズ項と呼びます。ではどうすればノイズ項を消すことができるのでしょうか?
高次元データのノイズを小さくする
この2つの方法が高次元の統計学で紹介されています。
非常に有効な手段でサンプル数に関してより緩い条件下で一致性を持つことが示されています。詳しくはリンク先で述べています。
高次元データの主成分分析(PCA)のまとめ
高次元において、固有値分解をするとノイズ項が発生して、\(d>>n\)の枠組みでは無視できない大きさになります。その結果、主成分方向がずれてしまいます。なので小標本でも成立するような、新たな主成分分析の方法が必要になります。
コメント