R特征变量选择

boruta:用于特征物种的挑选

2018-03-25  本文已影响106人  GPZ_Lab

笔记内容:

在这个笔记中我不会太详细的解释各类方法的数学及统计学原理(我也不懂),本着方法的价值即应用的原则,对各方法原理进行通俗简单的描述。

  • boruta挑选marker的原理
  • 适用范围
  • 如何解读output

boruta挑选marker的原理

  1. 先对数据中所有的变量(features)随机排列(shuffle),将每个feature的数值顺序打乱,随机排列,构建随机组合的shadow features.
  2. 然后训练一个random forest classifier,对每个feature的重要性(importance)进行打分 ,看feature在原数据中的评分是否比在随机排列中的评分更高。有则记录下来。具体random forest算法见这个链接
  3. 根据一个设定好的迭代次数n(iteration),将features随机排列n次,并对每个feature打分n次。对每个feature计算一个P值,比较n次打分是否存在差异,一般使用bonferroni correction来为多次统计检验进行矫正。P<0.01则认为该feature为confirmed important.
  4. random forest仅提供每个feature的importance打分,来评估每个feature在造模中的贡献大小。但具体这些feature是否有意义?可以通过boruta来构建shadow features,比较其与随机排列的差异,得到其显著性。需要注意的是重要性(importance)和显著性是不一样的。一个feature可能在造模中十分重要,但不一定比随机更显著。

适用范围

对于一些变量特别多,甚至变量数目多过了样本数目的数据,使用传统的regression等方式可能会导致over-fitting,即因为变量过多,将参数限制得只能fit现有的数据,换另外一套同样类型的数据可能拟合程度就很低。这对变量为海量的各级物种的微生物组数据来说十分有用。可以用random forest来挑选可以区分不同分组水平的物种,排除掉那些可能并不是重要的物种,即挑选marker。

由于是找出变量的规律与“随机组合”的不同,所以random forest是all-relevant feature selection,把所有可能携带信息的变量都挖掘出来,挑选出所有与随机排列存在差异的变量,而不是建立一个有最小误差的模型。

如何解读output

R和python均可以实现用random forest挑选features, 具体代码不在这里赘述,其output一般为给出每个feature的importance打分。python中有boruta_py模块用于显著性的挑选(即confirmed feature, rejected feature等),R中为random forest,即仅提供每个feature的importance.

如上图所示,Y轴为各feature的名字,X轴为各feature的importance。一般来说使用importance最高的feature来比较组间差异等其他分析。对于考量“最好纳入多少feature”进行分析的问题,最好选择一个importance的“分水岭”,比如说在上图中,可能会纳入最上三个features, 因为和其他features分的最开。以此达到减少features的目的。但是究竟纳入多少features为合适,仍应该从具体科学问题出发,具体问题具体分析。

更多解读参考这个链接

上一篇下一篇

猜你喜欢

热点阅读