I have a dataset NxD, where N - number of observation (~100k) and D - number of features (~10k) (More specifically it is a single-cell RNAseq data, so each observation is a single cell and each feature is a gene, values are counts of genes in each of the cells).

    *Cell* Cell1 Cell2 Cell3 ....
DPM1       .  . . . .  .  .  . .  .  . 1  . . .  .  .  .  .
SCYL3      .  . . . .  .  .  . .  .  . .  . . .  .  .  .  . 
C1orf112   .  . . . .  .  .  . .  .  . .  . . .  .  .  .  . 
FGR        .  . . . .  .  .  . .  1  . .  . . .  .  .  .  . 
CFH        .  . . . .  .  .  . .  .  . .  . . .  .  .  .  . 
FUCA2      .  . . . .  .  .  . .  .  . .  . . .  .  .  1  . 
GCLC       .  . . . .  .  .  . .  .  . .  . . .  .  .  .  . 

As you can see data is discrete and sparse (only a small set of genes have non-zero counts in each cell).

I would like to select a subset of features (genes) such that:

  • The dimensionality of the subset d << D (~1k)
  • Resulting features are not correlated
  • Using this subset I can predict remaining features

Possible approaches

I have a few ideas in mind, but I would be very grateful for any comments or suggestions. Are there any standard ways of approaching this problem?

  • Find clusters of genes in the space of cells (or reduced space) and select one gene per cluster, e.g. from the center. Presumably all genes in the cluster will be somewhat correlated with each other and therefore one gene should be enough to capture information about the other genes in the same cluster. Problems with this approach: clustering in high-dimensional space is hard, and this won't capture anticorrelated genes - they will belong to separate clusters, but still can be used to predict each others' expression.

  • Same as above, but use hierarchical clustering on the distance matrix. Distance can be anything from simple covariance, to mutual information (this would take care of anticorrelated genes as well).

  • Select most important features from multiple regularized regressions:

    $\forall i, \quad x_i \sim X_{-i}$, where $x_i$ is expression of gene $i$, $X_{-i}$ - expression of all other genes. The problem with this approach - the distribution of gene counts is negative binomial so both my target variable and predictor variables will be negative binomial distributed.

  • $\begingroup$ You can use as you said a Clustering Method, and from your $D$ features you might result with $K$ clusters $K<<D$. You can also calculate representative statistics for each cluster and summarise them, instead of using the $D$ features. However, in that case, there might be some correlation between the clusters, as you can imagine some features might be really close to each other but assigned to different clusters. $\endgroup$
    – Fiodor1234
    Apr 14, 2021 at 10:22
  • $\begingroup$ A different approach would be to use PCA. Where you will get uncorrelated features (principal components), but the new-made features (which are linear combinations of your original features $D$) are hard to be inferred. $\endgroup$
    – Fiodor1234
    Apr 14, 2021 at 10:23

1 Answer 1


There is extensive literature on the application of unsupervised learning to gene-expression data, dating back to early microarray analysis of RNA. Back then, clustering was done for example to try to distinguish subclasses of tumors among individuals. The advent of RNA-seq moved the focus toward analysis of count data. The more recent extension to single cells (scRNA-seq), typically looking for different types of cells in a sample, requires additional attention to the sparsity of the data.

This recent review goes over ways to cluster scRNA-seq data in substantial detail, with over 100 references and with links to software for implementation. Clustering typically involve a combination of methods. For example, SC3 clustering combines principal components analysis (PCA*, as suggested in a comment) and parallel evaluation of multiple parameter values to provide a final k-means clustering. Other methods are hierarchically based, sometimes combined with other processing. There are tradeoffs among the approaches both in terms of practical implementation, depending on the scale of the data, and in terms of just what you are trying to accomplish with the clustering.

A frequently used method for clustering scRNA-seq data, not addressed well in that review, is t-distributed stochastic neighbor embedding (t-SNE), which attempts to reduce high-dimension data into a 2D representation of clusters. This article by Kobak and Berens shows how to use t-SNE on scRNA-seq data while avoiding problems with its "naive application."

Once you've identified the expression clusters in your data, you could proceed to find exemplar genes expressed highly within each cluster if your clustering is based on gene-expression values rather than on a transformation as in PCA. My guess, however, is that even then you will need to use more than 1 exemplar gene per cluster. That's true with clinical tests that try to distinguish classes of tumors from bulk-tissue RNA analysis, so it's even more likely to be the case with the low number of counts per gene typical with scRNA-seq for other than housekeeping genes. If your clusters are based on linear combinations of gene expression values as in PCA, you will have to find combinations of genes that can be used together to identify clusters.

*PCA ensures that all components are orthogonal, which would match your desire that "resulting features are not correlated." That orthogonality, however, will not be seen on the single-gene level, it will represent the situation after any data pre-processing, and it might make it impossible to find individual genes that are exemplars of your clusters.

  • $\begingroup$ Thank you for your answer! Most of the literature on scRNAseq deals with clustering cells in the space of genes, not the other way around. The difference is that if you're looking at sufficiently different cell types it's easy to end up with well-defined tight cell clusters. Generally this is not going to be the case for majority of genes. With the exception of conserved cell type markers they don't form tight clusters in the cell space. Also, t-SNE is dimensionality reduction method, not clustering method. $\endgroup$
    – perlusha
    Apr 15, 2021 at 8:18
  • $\begingroup$ @perlusha after t-SNE reaches dimensionality down to 2, it's quite possible to distinguish clusters. See Figure 2 of this scRNA-seq paper for example. So it's possible to consider t-SNE in practice as a clustering method. $\endgroup$
    – EdM
    Apr 15, 2021 at 15:43
  • $\begingroup$ @perlusha In principle if you want to cluster genes rather than cells, you transpose the data matrix and use whichever clustering method best addresses your interest. The sparsity issues specific to scRNA-seq are essentially the same in either direction. The problem with clustering genes across a heterogeneous population of cells is that it will work best if groups of genes are alway co-regulated regardless of the cell type or cell state. That's unlikely biologically. Even in an apparently homogeneous culture of a cell line, cells will be heterogeneous in terms of cell-cycle state. $\endgroup$
    – EdM
    Apr 15, 2021 at 15:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.