python随机森林筛选变量_讨论记录|用随机森林对生存数据降维,筛选signature

昨晚,小伙伴收到了大鱼海棠为我们带来的FigureYa182RFSurv,使用随机森林对生存数据降维,根据变量重要性排序并筛选基因组成prognostic signature。

这是我们第二次众筹随机森林相关分析,上次的FigureYa159LR_RF,是在LASSO降维的基础上,采用logistic regression或Random forest的方法,进行5-fold cross-validation评估LASSO selected feature的预测效能。

大鱼海棠为我们带来了众多或经典或酷炫的好用代码,具有丰富的医学统计分析经验。这次建立FigureYa182RFSurv专属讨论群,请大鱼海棠入群答疑。小伙伴就相关问题展开讨论,小丫整理记录下来,留下这宝贵资源。

HSZ:请问这个安装是哪里出问题了,我百度也不知道怎么解决?

大鱼海棠:https://share.weiyun.com/0Qk7bvR6,直接把这个拖到R的library下解压试试,我以前这样做似乎也可以用,在windows里。

ZJH问:老师,您好!imp.cutoff这个重要性阈值的怎么选择?

大鱼海棠:没有固定cutoff。结果导向的,嫌结果太多就设高一点

LGM问:海棠哥好,请教一下筛选出来的特征要组合成预后signature,是还需要进一步使用多因素COX回归来求变量的系数吗?

大鱼海棠:嗯我会建议这样做,但是多因素这部不进行变量筛选了。

Allittis问:海棠老师的意思是直接多因素全部纳入算一个系数即可,是不?

LGM问:不进行逐步回归?

大鱼海棠:对的,因为你已经认为RF得出来的是你感兴趣的变量了。当然你非要再逐步回归,从操作性上来讲没有问题。

零度反应问:如果这个得到的基因太多呢,可不可以再用逐步回归?

大鱼海棠:可以

零度反应:因为之前用过这个,也用过你写的lasso回归的方法,但最后得到的signature基因相对多一点,然后有时auc优势也并不明显

大鱼海棠:survival的auc一般都不会那么高。。因为不仅仅是二分类问题,考虑了time-to-event

零度反应:所以又进行了多因素,最起码基因会少一些,感觉上好那么一丢丢。

LGM问:关于组合成预后signature还想再请教一下

一篇文章使用COX回归得到了感兴趣的基因,但是risk score 的计算居然是表达量跟HR相乘。有这样的处理方式吗?

Allittis:HR的置信区间好大

唐渊:估计是数据没有做归一化处理导致HR 值这么大。

LZQ:scale一下一般会小一些

大鱼海棠:多个数据集验证的话,都会建议每个数据集都要scale,尤其是针对不同平台。

CSJ问:请问R中可以获取基因的coefficients值么,我看原文中提到这个值是由random forest algorithm得到的,但是我在结果中没有找到这个值~

LZQ:这个应该是单因素cox的coef,决策树是无参ML。HR=e^coef

对应的HR值转化一下就得到了。

大鱼海棠:我觉得也是,coef,HR以及对应的95%CI应该是后算的,单因素cox直接summary一下都有。

DMY问:我在分析数据的时候发现如果用TCGA做训练集,而用GEO做验证集,结果发现训练集中获得的关键基因在GEO数据集中不存在,那我应该反过来用GEO做训练集呢?还是先取 TCGA和GEO的交集后再分析?谢谢啦!

砍柴人:先基因取交集啊

DMY:那用随机森林和支持向量机这两种方法筛选关键基因,那个更好呢?还是用组合的方式来筛选@大鱼海棠

大鱼海棠:组合的方式只是为了。。虚假的工作量吧,多写几段method。我不太认可这种做法,尤其是需要其中的指标时。比如LASSO和SVM一起用,那LASSO里的系数怎么办?

DMY:那有没有一个更好的组合呢?比如先差异筛选,再单COX,再随机森林,最后多COX?

大鱼海棠:这些方法最后都是结果导向型,没有什么最好的组合。。

DMY:AUC值通常多少比较合适呢?必须0.7以上么?

大鱼海棠:训练集我会建议0.8以上吧。

砍柴人:训练集0.8以上,那测试集可以得到多少?

大鱼海棠:看运气

DMY:嗯,有时候经常是在TCGA训练集很高,到了GEO验证的时候就很低了,不懂是不是数据需要归一化处理。

大鱼海棠:要归一化处理

DMY:难怪呢,我平时都没做归一化,结果差别很大。有没有同时对所有训练集和验证集进行归一化处理的方法呢?谢谢啦!

大鱼海棠:z-score最方便。个人觉得0-1区间变换最严谨,但是没必要。

DMY:先取基因交集,然后合并所有数据集,再用Z-score归一化,再拆分数据进行分析,是这个逻辑么?谢谢啦

大鱼海棠:分别zscore,不会合并zscore。tcga数据要先log,用TPM。

DMY:谢谢啦,受益匪浅!

CGD:所以请问是先将tcga的tpm数据zscore后再建模,然后在geo的zscore后的数据中验证模型是吗?是这样的顺序吗,感谢!

DMY:前面大鱼海棠 有说,先在TCGA中对tpm进行log2后再zscore

LGM问:能不能再众筹个不同平台数据的标准化?

DMY:感觉可行,数据清理确实很重要。确实跨平台验证会面临很多问题,同一平台也会有批次效应,所以我在处理多GEO数据集的时候都先去除批次效应并合并后,再进行下面分析。

大鱼海棠:你们可以了解一下gene pair,完美回避批次。是一个比较热的,回避标准化的,跨平台数据处理理念,但是数据的量级会比较大。

The one:gene pair[强][强][强],知道这个东西,没尝试过,晚上回去试下!

DMY:我前面看一些教程里面写随机森林对二分类变量预测效果最佳,比如生死,患病与否,但是病人的生存数据里还有生存时间,应该用二分类变量作为结局变量么?如生死,还是以连续性变量生存时间作为结局变量比较好,谢谢啦。

大鱼海棠:有研究不关心时间,只关心生死的,看个人目的吧。随机森林对二分类最佳也没有这种说法,看观测和变量的比例。逻辑回归这种就很robust,而且可以写出关系式,推荐的还是逻辑回归。

DMY:那研究是否复发,或者转移,也是不错的选择哈!

大鱼海棠:是的。

Paul:老师您好,我想请一下xgboost会不会比随机森林树更好一些?

大鱼海棠:没有方法有绝对的优势。。不然老方法就完全淘汰了不是吗?分类算法、聚类算法都是result-oriented。我相信。。你们也会试不同的方法得到自己expected的结果吧!

DMY:感觉都是先用各种方法先分析,那个结果好就用那个,均衡来选择,结果导向,今天又做到一个新知识,谢谢大神!

DMY:请问内部验证应该分配多少样品比例比较好呢?有些文章按照每组50%来分配,有些按照80%训练和20%来分,那个更好呢?

Paul:7:3,1:1的都有用,结果导向。

大鱼海棠:对,结果导向。五折多一些,只要不太离谱。

赞美太阳:请教个问题,为什么不用rfsrc这个函数筛选变量?

大鱼海棠:没有用新的函数包

赞美太阳:那么rfs之后可以自行再来一发var.select吗?

大鱼海棠:感觉没必要

赞美太阳:嗯,我觉得只要能说通就可以了。

你可能感兴趣的:(python随机森林筛选变量)