HePPCAT: Probabilistic PCA for Data with Heteroscedastic Noise

David Hong, Kyle Gilman, Laura Balzano, Jeffrey A. Fessler
1/10/2021
math.STeess.SP

No confident code implementation found for this paper.

Abstract

Principal component analysis (PCA) is a classical and ubiquitous method for reducing data dimensionality, but it is suboptimal for heterogeneous data that are increasingly common in modern applications. PCA treats all samples uniformly so degrades when the noise is heteroscedastic across samples, as occurs, e.g., when samples come from sources of heterogeneous quality. This paper develops a probabilistic PCA variant that estimates and accounts for this heterogeneity by incorporating it in the statistical model. Unlike in the homoscedastic setting, the resulting nonconvex optimization problem is not seemingly solved by singular value decomposition. This paper develops a heteroscedastic probabilistic PCA technique (HePPCAT) that uses efficient alternating maximization algorithms to jointly estimate both the underlying factors and the unknown noise variances. Simulation experiments illustrate the comparative speed of the algorithms, the benefit of accounting for heteroscedasticity, and the seemingly favorable optimization landscape of this problem. Real data experiments on environmental air quality data show that HePPCAT can give a better PCA estimate than techniques that do not account for heteroscedasticity.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{hong2021heppcat,
  title  = {HePPCAT: Probabilistic PCA for Data with Heteroscedastic Noise},
  author = {David Hong and Kyle Gilman and Laura Balzano and Jeffrey A. Fessler},
  year   = {2021},
  eprint = {2101.03468},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/2101.03468}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2101.03468.svg)](https://codeofpaper.com/paper/2101.03468)

Discussion