背景: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。

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

Lasso linear model实例 | Proliferation index | 评估单细胞的增殖指数的更多相关文章

  1. 广义线性模型(Generalized Linear Model)

    广义线性模型(Generalized Linear Model) http://www.cnblogs.com/sumai 1.指数分布族 我们在建模的时候,关心的目标变量Y可能服从很多种分布.像线性 ...

  2. Bayesian generalized linear model (GLM) | 贝叶斯广义线性回归实例

    一些问题: 1. 什么时候我的问题可以用GLM,什么时候我的问题不能用GLM? 2. GLM到底能给我们带来什么好处? 3. 如何评价GLM模型的好坏? 广义线性回归啊,虐了我快几个月了,还是没有彻底 ...

  3. 从线性模型(linear model)衍生出的机器学习分类器(classifier)

    1. 线性模型简介 0x1:线性模型的现实意义 在一个理想的连续世界中,任何非线性的东西都可以被线性的东西来拟合(参考Taylor Expansion公式),所以理论上线性模型可以模拟物理世界中的绝大 ...

  4. 2. Linear Model

    1. 基本形式 给定由$d$个属性描述的示例 $\textbf{x} =(x_1;x_2;...,x_n)$,其中$x_i$是$x$在第$i$个属性上的取值,线性模型(linear model)试图学 ...

  5. asp.net Post Get提交数据转Model实例

    转自:http://blog.csdn.net/daodaowolf/article/details/8990694 此功能是将客户端HTTP协议POST GET方式提交的数据转换为某个Model实例 ...

  6. Note for video Machine Learning and Data Mining——Linear Model

    Here is the note for lecture three. the linear model Linear model is a basic and important model in ...

  7. [机器学习]Generalized Linear Model

    最近一直在回顾linear regression model和logistic regression model,但对其中的一些问题都很疑惑不解,知道我看到广义线性模型即Generalized Lin ...

  8. 【AMAD】django-reversion -- 为django的model实例带来版本控制

    动机 简介 个人评分 动机 有时候数据表的数据也需要版本控制.比如论坛的帖子,作者是可以改动的,但是你想要留下每个改动的版本. 简介 django-reversion1的特点: 可以回滚一个insta ...

  9. Generic recipe for data analysis with general linear model

    Generic recipe for data analysis with general linear model Courtesy of David Schneider State populat ...

随机推荐

  1. win7 下安装使用 nginx 出现500错误

    配置虚拟主机域名后访问网站出现500错误,发现是因为路径的反斜杠问题,改成正斜杠后问题解决.

  2. Ubuntu 安装 VS code

    sudo snap install --classic vscode 没有snap就先装snap,是的,就是这么简单.

  3. C语言动态链表数据结构实现的学生信息项目

    注:此项目来源于吕鑫老师的教程 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <conio.h> u ...

  4. Received empty response from Zabbix Agent at[172.16.1.51]. Assuming that agent dropped connection because of access permissions

    Centos7.5 Zabbix创建主机ZBX爆红 原因:/etc/zabbix/zabbix_agentd.conf配置文件的Server写错了 解决方法: [root@db01 ~]# vim / ...

  5. clnt_create: RPC: Program not registered

    原因:[root@nfs nfs]# systemctl start nfs-utils 解决方法:[root@nfs nfs]# systemctl start nfs

  6. Qt重绘机制

    一.引发重绘的事件 1.调用repaint() 2.调用uodate() 二.控件hide或者show 三.其他 ps: repaint函数是立即重绘,没有优化 update会优化,异步重绘,所以如果 ...

  7. Firemonkey的几个特色属性(一)

    基于FireMonkey的程序开发与VCL确实有些不同,很多属性发生了变化,尤其是外观方面. 1.Margins.Padding.Position Margins:指定了当前控件在父控件(Parent ...

  8. 网络存储结构简明分析—DAS、NAS和SAN 三者区别

    存储的总体分类     主流存储结构   网络存储结构大致分为三种:直连式存储(DAS:Direct Attached Storage).存储区域网络(SAN:Storage Area Network ...

  9. 237. 程序自动分析 【map+并查集】

    程序自动分析 描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…x1,x2,x3,…代表程序中出现的变量,给定n个形 ...

  10. 一些常用的mysql语句实例-以后照写2

    specification: 规范, 规格, 产品规范, 产品规格, 技术规范, 产品说明书. 如: create_specification, 等等 创建数据库时, 显式地指明, 字符集: crea ...