Lasso linear model实例 | Proliferation index | 评估单细胞的增殖指数

背景:We developed a cell-cycle scoring approach that uses expression data to compute an index for every cell that scores the cell according to its expression of cell-cycle genes. In brief, our approach proceeded through four steps. (A) We reduced dimensionality of the dataset to the cell-cycle relevant genes. (B) In this subspace we performed, as a first approximation, a simple K-means clustering to separate non cycling from cycling cells and (C) we used this clustering as a reference to learn a function that takes the gene expression as the input and returns a cell-cycle score as an output. (D) We used this function to calculate a score for each single cell.

数据是每个细胞的基因表达矩阵,需求是根据基因表达信息计算每一个细胞的增殖指数(依据是细胞周期基因)。

我们常规能想到的就是建立一个线性模型,每一个细胞周期基因当做一个变量,输出一个数值,就是增殖指数,然后正则化到0~1.

问题是这样的话,每个基因前面的系数怎么确定?所以建议一个简单的方程是不可行的,我们必须要做有监督学习模型。那么有监督的数据怎么来呢?我们的数据没有lable啊。

下面就是文章中的方法:

我们需要计算增殖指数的数据没有lable,那我们就手动为其建立lable。

通过简单的kmeans聚类,我们就可以筛选出增殖指数高的细胞类群,以此为训练集,来构建监督学习模型。

然后用建好的模型再来对我们的数据进行预测,得到每一个细胞的增殖指数。

We started by selecting a wide selection of genes related to cell-cycle and proliferation. We used the PANTHER GO database and selected all the genes that were described by one of the following terms: DNA metabolic process, DNA replication, mitosis, regulation of cell cycle, cell cycle, cytokinesis, histone, DNA-directed DNA polymerase, DNA polymerase processivity factor, centromere DNAbinding protein. We restricted our features to those genes. Genes that were detected at less than 10 molecules in the dataset were removed. We calculated the pairwise correlation coefficient matrix, and selected the genes that were strongly correlated (99th percentile of the matrix) with at least 12 other genes. The genes passing the filters described above were used for clustering cells using K-means (Python scikit-learn implementation, on log-centered data, default parameters) with the rationale that the main axis of variation expected would span across dividing and non-dividing cells. Then a linear regression model with L1-norm regularization was fitted that used a learning function which took expression data of a cell and categorized into two classes, 1 when a cell belongs to the cycling cluster and 0 when it did not. Importantly, to avoid both overfitting the score on the first approximation clusters and also to obtain a more generalizable model, we used a strong regularization (5 times the one determined by cross-validation; alpha = 0.01).

This procedure was used for both the mouse and human embryonic dataset. The function learnt on the human embryonic dataset was also used to determine the proliferation index of the hPSCs.

当然文章的处理更加细心:

1. 首先从PANTHER GO数据库选出cell cycle相关的基因;

2. 计算了每个基因的相关性,去掉了独立存在的基因;

3. K-means聚类分三类,得到学习数据

4. linear regression model with L1-norm,为防止过拟合,参数设得比较严格。

这种方法从机器学习的角度给了一个大致的增殖指数,肯定不会错,但是应该也不会太准,但是用于比较不同细胞的增殖差异还是足够的。

如果想要ground truth,就必须要得到实验上更严格的数据来源,比如高度增殖的细胞和完全不增殖的细胞的基因表达数据。

代码:ipynb-lamanno2016-proliferation.ipynb

代码注释已经比较完善,后续会进行总结分析,并扩展延伸到其他应用上。

所以这种模型通用性还是比较强的。

比如拿细胞凋亡和细胞衰老相关的基因来计算每个细胞的衰老程度。

核心问题是如何选择出合适的gene list!对于有的指标很难选出合适的gene list。 


别看这个模型简单,其实细细探究起来是有问题的。

1. 你为什么要重复利用数据,为什么不一次就搞完?kmeans也可以达到分离的效果啊,为什么还要用lasso?

2. kmeans也可以根据到中心的距离来得到打分

3. 本方法的核心问题就是你没有labelled trainset。如果有的话,一个lasso直接解决问题。

4. 其实我觉得这个是一个可行的方法,kmeans是存在over fitting的,我用kmeans只是想得到一个raw的train set,然后用lasso来进行精细打分。

5. lasso的长处就是防止过拟合和筛选变量。

6. 还有一些细节,比如阈值的设计,要自己测试的!

再次重申一遍,L1就是lasso,L2就是ridge。

还有,有时候你以为听众听懂了,其实他们没听懂,讲话语速不要太快!!!

原文地址:https://www.cnblogs.com/leezx/p/8623037.html