search
LoginSignup
18
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

バイオインフォマティクス Advent Calendar 2020 Day 22

posted at

updated at

このPCAが熱いトップ10

この記事はバイオインフォマティクス Advent Calendar 2020の22日目の記事です

今年はあまり書くことが思いつかなかったので、自分が注目しているPCA(Principal Component Analysis, 主成分分析)ベースの手法を紹介する。

1. Randomized PCA

Halko, N et al., FINDING STRUCTURE WITH RANDOMNESS: PROBABILISTIC ALGORITHMS FOR CONSTRUCTING APPROXIMATE MATRIX DECOMPOSITIONS, 2010
データを一度ランダムに低次元に射影してコンパクトにしてから扱うことで、大規模データ行列も高速・低メモリで計算できるPCA。
今年出したPCAのベンチマーク論文で、速度、精度ともに性能が良かった。
乱数を使っているのに、驚くほど正確な値を返す。
実装も簡単で4行くらいで書ける。
そのせいかRでもPythonでも様々な実装がある。
PCAでできることは、他の固有値分解・特異値分解を使う手法でも大体できるので、例えばRandomized CCAという手法もその後開発されている。
乱数を使う線形代数はランダム線形代数という名前で、1研究分野になってきている。

2. SGD-PCA

Erkki, Oja, et al., On stochastic approximation of the eigenvectors and eigenvalues of the expectation of a random matrix, 1985
Deep Learningでは主流の最適化手法である、SGD(Stochastic Gradient Descent)で固有値分解を行うもの。
Ojaの手法とも呼ばれる。
今年出したPCAのベンチマーク論文では、精度が若干悪かったが、正則化項の追加や、学習率スケージューリング(ADAGRADとか)のところでカスタムできるメリットがある。

3. Riemannian PCA

Silvere Bonnabel, Stochastic gradient descent on Riemannian manifolds, 2013
固有値分解は制約ありの最適化として解かれるが、制約を考えずにデータが曲がった空間(多様体)上にいるという仮定で解いたもの。
SGDよりも収束が早くなるらしい。
https://www.slideshare.net/tkm2261/nips2016-riemannian-svrg-fast-stochastic-optimization-on-riemannian-manifolds

4. Supervised PCA

Elnaz Barshan, et al., Supervised principal component analysis: Visualization, classification and regression on subspaces and submanifolds, Pattern Recognition, 2011
データ行列Xの分解に、教師データYも使う教師あり次元圧縮法。
Hilbert-Schmidt Independence Criterion(HSIC)を利用して、カーネル関数で高次元空間に射影されたXとYの独立性をもとめる問題と、PCAの固有値分解問題を混ぜている。
よく似た手法に、Laplacian PCAHessian PCAもある。
なぜか、正則化項がトレース(tr)で、PCAの目的関数もtrなので、tr同士をまとめて、簡単に最適化できるのも魅力。

5. Contrastive PCA

Abid, A. et al., Exploring patterns enriched in a dataset with contrastive principal component analysis, Nature Communications, 2018
あるターゲット行列$X_{1}$と、バックグラウンド行列$X_{2}$があった時に、バックグラウンドでも分散が大きくなる固有ベクトルは取らないように補正したPCA。
データに含まれるパターンのうち、面白くない成分はバックグランドとすれば良いので、色々使えそう。

6. Differential PCA

Hongkai, Ji et al., Differential principal component analysis of ChIP-seq, PNAS, 2013
Contrastive PCAと似ているが、2行列$X_{1}$、$X_{2}$の差分行列を特異値分解したもの。
ターゲット vs バックグランドという構図ではなく、単に差を調べたい感じ。
ChIP-seqデータへの適用例あり。

7. GO-PCA

Wagner, F. et al., GO-PCA: An Unsupervised Method to Explore Gene Expression Data Using Prior Knowledge, PLOS ONE, 2015
オミックスデータ行列でまずPCAをして、取り出したPCごとにGOエンリッチメント解析をしたもの。

8. Tree PCA

Burcu Aydin, A PRINCIPAL COMPONENT ANALYSIS FOR TREES, The Annals of Applied Statistics, 2009
木構造データにも適用できるPCA(まだ精読できていない)。

9. Complex PCA

J. D. Horel, et al., Complex Principal Component Analysis: Theory and Examples, Journal of Applied Meteorology and Climatology, 1984
複素数にも適用できるPCA。
まだ精読できていないが、多分波形データに使うのだと思う。

10. Quantum PCA

Seth Lloyd, Quantum principal component analysis, Nature Physics, 2014
数学が難しくてまだ解読できてないが、量子コンピューターを使うことで、通常$\mathcal{O}\left(NM \min{\left(N,M\right)}\right)$の計算オーダーである特異値分解が、$\mathcal{O}\left(\log{d}\right)$で解けるらしくて驚異的(N: 行数、M: 列数、d: 圧縮次元数)。
ハードから攻めるという点では、FPGAでPCAをした論文もある。
量子コンピュータで固有値分解を解く部分は、Variational Quantum Eigensolver (VQE)というソルバーが既にあるらしい
(cf. 量子コンピュータによる機械学習)。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
18
Help us understand the problem. What are the problem?