Skip to main content

Supervised Independent Subspace Principal Component Analysis (sisPCA)

DOI License

Overview

sispca is a Python package designed to learn linear representations capturing variations associated with factors of interest in high-dimensional data. It extends the Principal Component Analysis (PCA) to multiple subspaces and encourage subspace disentanglement by maximizing the Hilbert-Schmidt Independence Criterion (HSIC). The model is implemented in PyTorch and uses the Lightning framework for training. See the documentation for more details.

For more theoretical connections and applications, please refer to our paper Disentangling Interpretable Factors with Supervised Independent Subspace Principal Component Analysis.

What's New

  • v1.1.0 (2025-02-27): Memory-efficient handling of supervision kernel for large datasets.
  • v1.0.0 (2024-10-11): Initial release.

Installation

Via GitHub (latest version):

pip install git+https://github.com/JiayuSuPKU/sispca.git#egg=sispca

Via PyPI (stable version):

pip install sispca

Getting Started

Basic usage:

import numpy as np
import torch
from sispca import Supervision, SISPCADataset, SISPCA

# simulate random inputs
x = torch.randn(100, 20)
y_cont = torch.randn(100, 5) # continuous target
y_group = np.random.choice(['A', 'B', 'C'], 100) # categorical target
L = torch.randn(100, 20)
K_y = L @ L.T # custom kernel, (n_sample, n_sample)
# K_y better be sparse for memory efficiency, i.e. a graph Laplacian kernel

# create a dataset with supervision
sdata = SISPCADataset(
    data = x.float(), # (n_sample, n_feature)
    target_supervision_list = [
        Supervision(target_data=y_cont, target_type='continuous'),
        Supervision(target_data=y_group, target_type='categorical'),
        Supervision(target_data=None, target_type='custom', target_kernel = K_y)
    ]
)

# fit the sisPCA model
sispca = SISPCA(
    sdata,
    n_latent_sub=[3, 3, 3, 3], # the last subspace will be unsupervised
    lambda_contrast=10,
    kernel_subspace='linear',
    solver='eig'
)
sispca.fit(batch_size = -1, max_epochs = 100, early_stopping_patience = 5)

Tutorials:

For additional details, please refer to the documentation.

Citation

If you find sisPCA useful in your research, please consider citing our paper:

  @misc{su2024disentangling,
    title={Disentangling Interpretable Factors with Supervised Independent Subspace Principal Component Analysis},
    author={Jiayu Su and David A. Knowles and Raul Rabadan},
    year={2024},
    eprint={2410.23595},
    archivePrefix={arXiv},
    primaryClass={stat.ML},
    url={https://arxiv.org/abs/2410.23595},
  }

Release files for sispca 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sispca 1.1.0
File Size Uploaded
sispca-1.1.0.tar.gz 23.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sispca 1.1.0
File Interpreter ABI Platform
sispca-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 45.3 kB

Release files / sispca-1.1.0.tar.gz

Download URL sispca-1.1.0.tar.gz
Size 23.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e16b45820d350130490411d9c74938d7874c007ebbbb398691fd794339dd09f6
BLAKE2b-256 checksum
How to use checksums
a197e21bc95eb0e88113ed2328e9e225f918911038ee9241198cb2d0cb8f5269
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.15

Release files / sispca-1.1.0-py3-none-any.whl

Download URL sispca-1.1.0-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
531ff261b1b0a494bc39bf2269694a664461aed844051cc0332aefa8e04c4f80
BLAKE2b-256 checksum
How to use checksums
fe8940f1d120c4eac45715da13c0d399d36aaea26c9823f1ec95274d06e48e79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.15

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page