【高次元統計解析入門】高次元データのメリット・デメリット【データサイエンス】

こんにちはたくまろです。今回は自分の専門分野である、高次元統計解析について紹介したいと思います。データサイエンスビックデータの解析などで耳にしたことがあるかもしれません。とは言ってもまだまだ新しい分野です。

よくある質問として次のようなものがあります。

高次元データってなに?

多変量解析と高次元統計解析の違いは?

高次元データだと何が問題なの?

このように聞かれることが多いです。

そこで、その分野の専門家として高次元データについて紹介したいと思います。また、この記事の内容は僕のバイブルである「高次元の統計学」に基づいています。もっと詳しく知りたい方は、読んでみてください!

高次元の統計学 (統計学One Point 11) [ 青嶋 誠 ]

価格:2,420円
(2021/3/16 09:50時点)
感想(0件)

Amazon 楽天市場

高次元データとは何か?

高次元データとは1つのデータのもつ次元数が非常に大きいものを指します。

例えば…

例えば、画像データなどはその1つです。画像は小さいピクセルの集まりです。技術の発展に伴いピクセル数は増加しており、現在だと50万個以上のピクセルが1つの画像データに含まれます。

他にも、DNAマイクロアレイもその一つです。ゲノム解析の技術が向上して計測可能な遺伝子数が年々増加しています。数十万次元ものマイクロアレイデータが1人の患者さんから得られます。

技術の発展に伴い観測可能な要素が増えことに、高次元データというものが登場するようになりました。高次元データは現代の科学の特徴といっても良いでしょう。

どこから、高次元になるの?

単純に次元が多いと表現しましたが、どこからが高次元データになるのでしょうか?明確な定義はされてませんが、「高次元の統計学」では次元数\(d\)に対して標本数\(n\)が

$$d\ >>\ n\ \ \ (もしくは\ d>n)$$

というサンプル数に比べて次元数が圧倒的に大きい状況を考えています。この様な特徴があるものを高次元小標本データ(High-Dimension Low-Sample-size data; HDLS data)と呼びます。

漸近的な枠組みでは、

$$\frac{d}{n}\to\infty\ \ \ (もしくは\  0<\frac{d}{n}<\infty)$$

という状況になります。

多変量解析と高次元統計解析との違い

多変量解析では\(n<d\)の状況を考えていました。身体測定データは身体・体重・座高の3つの変数を全校生徒分サンプリングしているので、\(n<d\)の状況に当てはまりそうですね。

しかしながら、先の例で紹介したマイクロアレイデータは測定された遺伝子数が数万個あるのに対して、高々100人程度のデータしか集まらないことが頻繫に起こります。いっぱい人を集めればいいんじゃない?とも思いますが、難病や症例が少ない病気がデータを集めることが難しいです。

多変量解析の多くの手法は\(n<d\)もしくは\(d<\infty\)を仮定しています。そのため、次元数が非常に多いデータには不向きであることが分かっています。

高次元データのデメリット

標本共分散行列の逆行列が存在しない

標本数が少ないと、標本共分散行列の正則性が仮定できないため逆行列を仮定することが出来ません。そもそも、\(d(d-1)/2\)個の変数を含む共分散行列をたった\(n\)個のデータで再現しようとするとかなり不安定になります。

一般化逆行列やリッジ推定、ラッソ推定が扱えない

すべてがすべて扱えないわけではありませんが、これらの手法は次元数が有限または固有値がすべて定数(有界)であることを仮定しているため、高次元においては考えにくい設定です。

母集団に正規分布を仮定できない

母集団に正規分布を仮定した論文があふれていますが、高次元データに正規分布を仮定するは現実的ではありません。\(d\)次元データが仮に\(d\)次元の正規分布に従っているとすると各変数も1次元の正規分布に従っています。つまり、\(d\)個の変数すべてが対称な山型の分布になっているということを主張しています。そのような理想的な状況は現実的に考えにくいため、すべての変数が正規分布に従うというのはかなり厳しい状況です。

計算コストが膨大

計算機の技術も向上していますが、次元数が増えれば増えるほど計算量が多くなります。例えば、固有値分解の計算などは\(O(nd^2)\)の計算量があり、次元数の2乗のペースで計算量が増えます。

塵も積もれば山となる

低次元データで(n\to \infty\)を仮定できるような状況ではバイアス項をゼロとみなすことができました。しかし、高次元になると微小な誤差であっても、次元数の数だけ積み重なるので、大きなズレが生じることがあります。

高次元データは悪いことばかりではない

高次元データを従来の多変量解析で扱ってしまうと誤差や誤った推定を生じることが分かっています。しかしながら、高次元であるメリットもあります。それを正しく扱えば、小標本でもよりよい推定を考えることが出来ます。

メリット1:幾何学的な特徴が表れやすい

ある条件を満たせば、データが球面に集中することが分かります。これを球面集中現象と呼んだりします。他にも、さまざま不思議な現象が高次元ではおきます。

メリット2:次元に関する、漸近理論を考えやすい

皆さんの良く知っている中心極限定理はサンプル数が多いとき使うことが多いと思います。高次元においても次元数が多いことを使って漸近理論を構築することができます。もちろん、中心極限定理を考えることもできます。

メリット3:線形分離しやすい

データの次元が上がれば、クラスの平均間の距離が長くなりやすいです。クラスタリングをしたいときに、PCAなどで低次元空間に射影すれば分離しやすいです。他にも判別分析などでもこの性質を使って新たな方法を考えることができます。

実際にRをつかって、クラスタリングをしてみましょう。3つ平均の異なる混合正規分布分布からデータを発生させて、PCAを行います。(正規分布の発生コードはこちらで詳しく扱っています)

#正規分布を発生させる関数
datagene_norm <- function(mu,Sigma,N){
d <- dim(Sigma)[1]
Z <- matrix(0,nrow=d,ncol=N)
for (i in 1:N) {
Z[,i] <- rnorm(d,0,1)
}
gamma<- matrix(0,d,d)
diag(gamma) <- eigen(Sigma)$value^(1/2)
H <- eigen(Sigma)$vector
return(H%*%gamma%*%Z+mu)
}
#3クラスのPCAを実行
for (i in 1:3){
d <- 10^i
N <- 20
Sigma <- diag(d)
mu0 <- numeric(d/2)
mu1 <- mu0 + 1
X1 <- datagene_norm(c(mu0,mu0),Sigma,N)
X2 <- datagene_norm(c(mu1,mu0),Sigma,N)
X3 <- datagene_norm(c(mu0,mu1),Sigma,N)
X <- cbind(X1,X2,X3)
X <- X - rowMeans(X)
M <- eigen(X%*%t(X)/(3*N-1))
plot(t(X1-1/3)%*% M$vectors[,1:2],col=2,xlim=c(-sqrt(d),sqrt(d)),ylim=c(-sqrt(d),sqrt(d)),xlab = "",ylab="")
par(new=T)
plot(t(X2-1/3)%*% M$vectors[,1:2],col=3,xlim=c(-sqrt(d),sqrt(d)),ylim=c(-sqrt(d),sqrt(d)),xlab = "",ylab="")
par(new=T)
plot(t(X3-1/3)%*% M$vectors[,1:2],col=4,xlim=c(-sqrt(d),sqrt(d)),ylim=c(-sqrt(d),sqrt(d)),xlab = "PC1",ylab="PC2")
}

右から\(d=10,100,1000\)となっています。平均間の差異が大きくなることによって、クラスタリングの精度が向上しやすいことが分かりますね。

高次元統計解析についてまとめると

  • 高次元データは現代科学に見られるデータの特徴
  • 多変量解析をそのまま使うことは出来ない
  • \(d\ <<\ n\)の場合、さまざまな問題が起きやすい
  • 高次元の特徴を上手く使えば小標本な状況でもよりよい推定ができる

あわせて、

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です