# Contrastive Principal Component Analysis

arXiv: https://arxiv.org/abs/1709.06716 · HTML: https://mlsanity.com/paper/1709.06716/

## Key facts

- Cited by 7 papers in the map (data through 14 Oct 2026).
- First posted on arXiv 20 Sep 2017.

## Built on by (most cited first, 7 of 7)

- [Understanding Multimodal Contrastive Learning and Incorporating Unpaired Data](https://mlsanity.com/paper/2302.06232/) (2023)
- [Where Steering Signals Come From: Activation Source Selection in Activation Steering](https://mlsanity.com/paper/2607.25270/) (2026)
- [An online algorithm for contrastive Principal Component Analysis](https://mlsanity.com/paper/2211.07723/) (2022)
- [Contrastive independent component analysis](https://mlsanity.com/paper/2407.02357/) (2024)
- [Cluster Exploration using Informative Manifold Projections](https://mlsanity.com/paper/2309.14857/) (2023)
- [Discriminative community detection for multiplex networks](https://mlsanity.com/paper/2410.00724/) (2024)
- [Sliding Window Informative Canonical Correlation Analysis](https://mlsanity.com/paper/2507.17921/) (2025)

## Abstract (arXiv)

We present a new technique called contrastive principal component analysis (cPCA) that is designed to discover low-dimensional structure that is unique to a dataset, or enriched in one dataset relative to other data. The technique is a generalization of standard PCA, for the setting where multiple datasets are available -- e.g. a treatment and a control group, or a mixed versus a homogeneous population -- and the goal is to explore patterns that are specific to one of the datasets. We conduct a wide variety of experiments in which cPCA identifies important dataset-specific patterns that are missed by PCA, demonstrating that it is useful for many applications: subgroup discovery, visualizing trends, feature selection, denoising, and data-dependent standardization. We provide geometrical interpretations of cPCA and show that it satisfies desirable theoretical guarantees. We also extend cPCA to nonlinear settings in the form of kernel cPCA. We have released our code as a python package and documentation is on Github.
