精华内容
下载资源
问答
  • 在前文中,响应变量是一组类别变量(代表了样本的分组信息),此时随机森林用于执行监督分类的功能,模型的精度在于通过选定的预测变量组合将样本正确划分归类的概率。而当响应变量是一组连续变量时,可将回归森林用于...
    5b0269d8affaec04fa10c7b39385ce89.gifR包randomForest的随机森林回归模型以及对重要变量的选择f51d1b643974d627d30e5df23e066f10.gif关于随机森林(random forest),前文“随机森林分类以及对重要变量的选择”中已经对其基本原理作了简单概括。在前文中,响应变量是一组类别变量(代表了样本的分组信息),此时随机森林用于执行监督分类的功能,模型的精度在于通过选定的预测变量组合将样本正确划分归类的概率。而当响应变量是一组连续变量时,可将回归森林用于回归。此时,回归模型的精度体现了选定的预测变量对响应变量数值改变有关方差的整体解释率(可以理解为回归的R2)。本篇则简介随机森林的回归功能。

    文献中使用随机森林回归的一个实例

    首先来看一篇与植物根系微生物组有关研究,将文中涉及到随机森林回归的部分内容节选出来以帮助大家理解。

    Edwards等(2018)分析了来自两个地区(加利福尼亚州、阿肯色州)以及三个连续种植季(201420152016)的水稻根系微生物组,意在阐述水稻根系微生物群落的时间动态特征,并解释驱动微生物群落组建的成因。文中部分内容使用到随机森林的回归模型建立微生物丰度和水稻生长时期的关系,用以识别重要的时间响应微生物类群。

    b0881a295ad4c0d4e888e2552c7877d7.png

    作者首先分析了水稻根系微生物群落的组成结构,显示其受到地理区域(土壤环境)、植物生长时期以及植物根系不同部位的多重影响。随后分析各个因素的相对效应,发现水稻生长过程中能够逐渐对其根系菌群进行选择,植物生长时期的效应越来越明显,根系菌群朝向一组保守的物种组成趋势发展,同时地理环境效应的比重逐渐减弱。主要体现在:

    (1)不同地理区域种植的水稻,随着水稻生长时期的推移,根际和根内菌群的相似度逐渐增加,并在后期趋于稳定,与种植季节无关:

    (2)对于水稻根际和根内菌群,地区间独特OTU的相对丰度均随时间推移而不断下降,剩余的OTU中,两地区间共有OTU的比重上升。

    9aceaa7c90d835de55e726323853d369.png

    A-C,水稻根系微生物群落的PCoA,分别突出了群落组成相似度与根系区域(A)、地理区域(B)或植物生长时间(C)的关系。

    D,根区、根际和根内样本中,微生物群落相似度随植物生长的关系。

    总之存在一类具有显著时间特征的微生物类群,它们的丰度变化与水稻的生长时期密切相关,无论是增加(根系富集)或减少(根系排斥)。随后,作者期望寻找可用于区分水稻生长时期的微生物OTU组合,包括根际和根内菌群,就使用了随机森林。

    作者选择了一部分的样本(加利福尼亚州2014年和阿肯色州2016年的部分数据)用作训练集,通过随机森林分别将根际和根内所有微生物OTU的相对丰度与水稻生长时期进行了回归,并根据各个OTU对模型预测准确性的相对贡献按重要性进行排名。十折交叉验证用于评估模型中OTU数量与模型误差的关系,并按重要性排名对OTU进行选择,删除了大部分不重要OTU后,最终保留的OTU用于构建最终的随机森林回归模型。

    结果中,共确定了85个最重要的与水稻生长时期密切关联的OTU。训练集的数据显示,通过这85OTU构建的随机森林回归模型分别解释了根际和根内菌群对植物年龄有关方差的91.5%和88.4%,表明它们的丰度组合能够准确预测水稻的生长时期。此外,测试集以及验证集数据(涉及了训练集样本外的其它采样时间、地理区域的样本)也一致地表明,通过这85OTU构建的随机森林回归模型同样准确预测了水稻的生长时期,凸显了水稻根际和根内存在特定的微生物类群,在跨地理区域和季节的水稻植物的生命周期中表现出一致的模式。

    4b9f65943a044a90d1641a540b1c7edc.png

    图A,横坐标是水稻的实际生长时期,纵坐标是随机森林模型通过根际或根内微生物丰度预测的水稻生长时期,模型具有很高的精度。

    B,重要的85OTU在水稻根际或根内的丰度与时间的关系。

    C85OTU根据丰度的时间响应模式,可分为早期定植(丰度早期很高,但随时间降低)或晚期定植(丰度早期很低,但随时间增加)以及复合型(早期晚期定植区分不明显)类群,柱形图展示了3种类群中OTU平均丰度变化趋势。

    文中后续还有内容涉及到随机森林模型的应用,这里就不再展示了。节选的部分章节想必也足以能够帮助大家了解这个方法的实际应用了。

    此外,该文献的补充材料中提供了有关OTU丰度表、分析过程的R代码等非常全面的数据,大家若有兴趣参考原文即可。

    接下来,展示随机森林回归及对重要变量选择在R语言中的实现方法。

    通过R包randomForest的随机森林执行回归

    对于随机森林应用在类别型响应变量中的分类功能,前文“随机森林分类模型以及对重要变量的选择”中,已经以RrandomForest中的方法为例展示了如何通过随机森林构建分类预测模型(分类模型的训练和测试),以及筛选对区分已知分类具有高度鉴别模式的变量组合(评估变量的相对重要性)。

    在下文中,将响应变量更换为连续型变量,继续展示RrandomForest的随机森林回归方法以及实现对重要变量的选择。其实无论执行的分类还是回归,过程中使用的方法都是一样的,R函数还是那些R函数,区别只在于对部分函数的参数设置以及结果的解读方式上。

    下文的测试数据,R代码等的百度盘链接(提取码,fljz):

    https://pan.baidu.com/s/1Lfk21hGrWDehodWchBiIIg

    若百度盘失效,也可在GitHub的备份中获取:

    https://github.com/lyao222lll/sheng-xin-xiao-bai-yu

    示例数据

    植物根系菌群结构与植物生长密切相关,到目前为止,已经在许多研究中都有报道了,这已经是个共识。因此,下文的示例数据也同样来自某植物根际区域细菌群落组成的16S扩增子测序数据,类似地,仿照上文文献中的过程,通过随机森林建立微生物与植物生长时期的响应关系,根据微生物丰度推断植物生长时期,并寻找一组重要的时间特征类群。

    示例数据“otu_table.txt”中,共记录了45个连续生长时间中植物根际土壤样本中细菌OTU的相对丰度信息。

    9b289e1b12f59505548e0051c3caa003.png

    plant_age.txt”中,记录了这45个根际土壤样本对应的植物生长时间,时间单位是天。

    6261f5ab5653587b80ac357e2209606e.png

    随机森林回归模型的初步构建

    OTU丰度数据读入R中,可以事先作一些预处理,例如剔除低丰度类群等。

    随后,对应OTU丰度样本与植物生长时间的关系,加载randomForest包并运行随机森林。

    ##数据预处理
    #读取 OTUs 丰度表
    otu
    #过滤低丰度 OTUs 类群,它们对分类贡献度低,且影响计算效率
    #例如剔除总丰度低于 0.05% 的值
    otu = 0.0005), ]
    #合并有关于植物生长时间的信息
    plant
    otu otu otu
    #为了方便后续评估随机森林模型的性能
    #将总数据集分为训练集(占 70%)和测试集(占 30%)
    set.seed(123)
    train otu_train otu_test
    ##randomForest 包的随机森林
    library(randomForest)
    #随机森林计算(默认生成 500 棵决策树),详情 ?randomForest
    set.seed(123)
    otu_train.forest otu_train.forest
    2718173701a0442023438f87070dcbd5.png

    结果中,% Var explained体现了预测变量(用于回归的所有OTU)对响应变量(植物年龄)有关方差的整体解释率。在本示例中,剔除了低丰度的OTU后,剩余的OTU(约2600个左右)解释了约89.17%的总方差,可以理解为该回归的R2=0.8917,相当可观的一个数值,表明该植物根际细菌的群落结构随植物生长密切相关。

    查看该模型的预测性能,可以看到具有较高的精度。

    #使用训练集,查看预测精度
    plant_predict
    plot(otu_train$plant_age, plant_predict, main = '训练集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    #使用测试集,评估预测性能
    plant_predict
    plot(otu_test$plant_age, plant_predict, main = '测试集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    b7f66f4c3852b6d96c09f728e91bd06b.png

    重要的预测变量选择

    但是,并非这所有的2600余个OTU都对回归的精度具有可观的贡献。有些OTU丰度的时间特征并不明显,可能在回归中产生较大噪声,对模型精度带来较高的误差。因此,最好将低贡献的OTU去除。

    评估预测变量的重要性

    基于已经构建好的随机森林回归模型,可以从中评估OTU的重要性。将OTU按重要程度高低进行排名后,选择排名靠前的一部分OTU,这些重要的OTU是明显的与植物生长时间密切关联的一些细菌类群。

    ##OTU 的重要性评估
    #查看表示每个预测变量(细菌 OTU)重要性的得分
    #summary(otu_train.forest)
    importance_otu head(importance_otu)
    #或者使用函数 importance()
    importance_otu head(importance_otu)
    #作图展示 top30 重要的 OTUs
    varImpPlot(otu_train.forest, n.var = min(30, nrow(otu_train.forest$importance)),
    main = 'Top 30 - variable importance')

    5beb777237e561a7fd5ce13a24137724.png

    %IncMSE”即increase in mean squared error,通过对每一个预测变量随机赋值,如果该预测变量更为重要,那么其值被随机替换后模型预测的误差会增大。因此,该值越大表示该变量的重要性越大;

    IncNodePurity”即increase in node purity,通过残差平方和来度量,代表了每个变量对分类树每个节点上观测值的异质性的影响,从而比较变量的重要性。该值越大表示该变量的重要性越大。

    对于“%IncMSE”或“IncNodePurity”,二选一作为判断预测变量重要性的指标。需注意的是,二者的排名存在一定的差异。

    #可以根据某种重要性的高低排个序,例如根据“IncNodePurity”指标
    importance_otu head(importance_otu)
    #输出表格
    #write.table(importance_otu, 'importance_otu.txt', sep = '\t', col.names = NA, quote = FALSE)
    6841d4bee26f92d44ec68ebbadc10852.png

    交叉验证

    那么,最终选择多少重要的预测变量(本示例为OTUs)是更合适的呢?

    可通过执行十折交叉验证,根据交叉验证曲线对OTU进行取舍。交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。此处使用训练集本身进行交叉验证。

    ##交叉验证辅助评估选择特定数量的 OTU
    #5 次重复十折交叉验证
    set.seed(123)
    otu_train.cv otu_train.cv
    #提取验证结果绘图
    otu_train.cv otu_train.cv$otus otu_train.cv otu_train.cv$otus
    otu_train.cv.mean head(otu_train.cv.mean, 10)
    #拟合线图
    library(ggplot2)
    ggplot(otu_train.cv.mean, aes(Group.1, x)) +
    geom_line() +
    theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent')) +
    labs(title = '',x = 'Number of OTUs', y = 'Cross-validation error')

    628dc52e0fd322129b3cb464e01edc90.png

    交叉验证曲线展示了模型误差与用于拟合的OTU数量之间的关系。误差首先会随OTUs数量的增加而减少,开始时下降非常明显,但到了特定范围处,下降幅度将不再有显著变化,甚至有所增加。

    根据交叉验证曲线,提示保留9-13个重要的OTU即可以获得理想的回归结果,因为此时的误差达到最小。

    因此,根据计算得到的各OUT重要性的值(如“IncNodePurity”),将OTU由高往低排序后,最后大约选择前9-13OTU就可以了。

    #提示保留 9-13 个重要的 OTU,可以使随机森林回归的精度最大化
    #首先根据某种重要性的高低排个序,例如根据“IncNodePurity”指标
    importance_otu
    #然后取出排名靠前的 OTU,例如 top10 最重要的 OTU
    importance_otu.select importance_otu.select
    #输出表格
    #write.table(importance_otu.select, 'importance_otu.select.txt', sep = '\t', col.names = NA, quote = FALSE)
    #有关 OTU 的物种分类信息等其它细节,可后续自行补充

    434504b1d855ee7bc8481c75782fc583.png

    #不妨简单查看下这些重要的 OTU 丰度与植物生长时间的关系
    #可以看到趋势非常明显,包括根际富集或排斥等都有涉及
    otu_id.select otu.select otu.select
    ggplot(otu.select, aes(x = plant_age, y = value)) +
    geom_point() +
    geom_smooth() +
    facet_wrap(~variable, ncol = 3, scale = 'free_y') +
    labs(title = '',x = 'Plant age (days)', y = 'Relative abundance')
    3618558ca8890a2f8578dc5e7d94a3a2.png

    最终模型的确定

    现在来看,只使用选择的10个重要的OTU构建回归模型,效果如何。

    ##只包含 10 个重要预测变量的简约回归
    otu.select
    #为了方便后续评估随机森林模型的性能,将总数据集分为训练集(占 70%)和测试集(占 30%)
    set.seed(123)
    train otu_train.select otu_test.select
    #随机森林计算(默认生成 500 棵决策树),详情 ?randomForest
    set.seed(123)
    otu_train.select.forest otu_train.select.forest
    #使用训练集,查看预测精度
    plant_predict
    plot(otu_train.select$plant_age, plant_predict, main = '训练集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    #使用测试集,评估预测性能
    plant_predict
    plot(otu_test.select$plant_age, plant_predict, main = '测试集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)

    7ac4470eebdc297e711ea2d2387f1d90.png

    结果显示,与先前使用全部的OTU(去除低丰度后约2600多个)相比,只使用这10个更重要OTU的随机森林回归模型,获得了更出色的效果。

    一是体现在% Var explained,模型中预测变量(这10个重要的OTU)对响应变量(植物年龄)有关方差的整体解释率达到了96.49%,大于先前的89.17%,这得益于排除了不重要或者高噪声的OTU。二是预测性能更佳,特别是对于测试集,与先前的分布图相比较(见上文),植物实际生长时间与通过根际菌群预测的植物年龄更趋一致。

    如果不涉及预测,只是评估变量的重要性

    上文过程中,为了评估随机森林回归模型的预测性能,将数据拆分为训练集和测试集分开讨论。但如果目的不涉及预测,只是为了寻找重要的预测变量,完全可以直接使用所有数据代入回归,无需再区分训练集与测试集,这也是很多文献中经常提到的方法。

    例如另一篇类似的研究,Zhang等(2018)寻找水稻根系中与植物生长期密切相关的biomarkers时,同样使用的随机森林回归。但区别是文中没有涉及预测,关注的重点在于识别重要的微生物类群。

    e38529715660e23eabe0387001e28434.png

    参考文献

    Edwards J, Santosmedellin C, Liechty Z, et al. Compositional shifts in root-associated bacterial and archaeal microbiota track the plant life cycle in field-grown rice. PLOS Biology, 2018, 16(2).Zhang J, Zhang N, Liu Y, et al. Root microbiota shift in rice correlates with resident time in the field and developmental stage. Science China-life Sciences, 2018, 61(6): 613-621.5b0269d8affaec04fa10c7b39385ce89.gif友情链接f51d1b643974d627d30e5df23e066f10.gif

    通过Aggregated boosted tree(ABT)评估解释变量的重要性

    基于相似或相异度矩阵的多元回归(MRM)及R语言实例

    回归中自变量的交互效应及R语言计算示例

    R语言执行带类别型预测变量的线性回归示例

    多元回归中的多重共线性问题简述

    多元回归中常见的变量选择方法及其在R中实现

    多元线性回归在R中的实现示例

    简单线性回归和多项式回归在R中的实现示例

    生存分析之R包survival的单变量和多变量Cox回归

    约束聚类-多元回归树及重要判别变量识别

    几种常见的判别分析分类方法

    随机森林分类模型以及对重要变量的选择

    57be3f78e8fb211a0554919a0ac64315.gif

    c27f30d669c6df58d6715c14ab699078.png

    展开全文
  • 决策树:决策树算法 ID3:信息增益决策树 C4.5:信息增益率(解决ID3问题,考虑自身熵) CART:使用GINI系数来当做衡量标准 ,CCPGINI系数: (和熵的衡量标准类似,计算方式不相同)回归树(目标变量为连续变量):...

    bba30a4fcb5c05f7c4b393915864e64a.png

    决策树:

    决策树算法 ID3:信息增益

    决策树 C4.5:信息增益率(解决ID3问题,考虑自身熵)

    CART:使用GINI系数来当做衡量标准 ,CCP

    GINI系数:

    (和熵的衡量标准类似,计算方式不相同)

    6e769d3fdf03e95a05545441c4feb507.png

    bc9edbe3861770ae68f737e06c3371b3.png

    回归树(目标变量为连续变量):

    6fbf5344fec57635c863acc1883e42c4.png

    e321961ed1007e2b4819efad990d2aa1.png

    剪枝策略:

    预剪枝,后剪枝

    预剪枝:边建立决策树边进行剪枝的操作(更实用)

    停止分裂的条件:

      一般情况下为了降低决策树复杂度和提高预测的经度,避免过拟合,会适当提前终止节点的分裂。

      以下是决策树节点停止分裂的一般性条件:

      (1)最小节点数

      当节点的数据量小于一个指定的数量时,不继续分裂。两个原因:一是数据量较少时,再做分裂容易强化噪声数据的作用;二是降低树生长的复杂性。提前结束分裂一定程度上有利于降低过拟合的影响。

      (2)熵或者基尼值小于阀值。

    由上述可知,熵和基尼值的大小表示数据的复杂程度,当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度数,节点停止分裂。

      (3)决策树的深度达到指定的条件

      节点的深度可以理解为节点与决策树跟节点的距离,如根节点的子节点的深度为1,因为这些节点与跟节点的距离为1,子节点的深度要比父节点的深度大1。决策树的深度是所有叶子节点的最大深度,当深度到达指定的上限大小时,停止分裂。

      (4)所有特征已经使用完毕,不能继续进行分裂。

    被动式停止分裂的条件,当已经没有可分的属性时,直接将当前节点设置为叶子节点。

    后剪枝:当建立完决策树后来进行剪枝操作

    Reduced-Error Pruning (REP,错误率降低剪枝)
    这个思路很直接,完全的决策树不是过度拟合么,我再搞一个测试数据集来纠正它。对于完全决策树中的每一个非叶子节点的子树,我们尝试着把它替换成一个叶子节点,该叶子节点的类别我们用子树所覆盖训练样本中存在最多的那个类来代替,这样就产生了一个简化决策树,然后比较这两个决策树在测试数据集中的表现,如果简化决策树在测试数据集中的错误比较少,那么该子树就可以替换成叶子节点。该算法以bottom-up的方式遍历所有的子树,直至没有任何子树可以替换使得测试数据集的表现得以改进时,算法就可以终止。

    1:删除以此结点为根的子树

    2:使其成为叶子结点

    3:赋予该结点关联的训练数据的最常见分类

    4:当修剪后的树对于验证集合的性能不会比原来的树差时,才真正删除该结点

    Pessimistic Error Pruning (PEP)
    PEP剪枝算法是在C4.5决策树算法中提出的, 把一颗子树(具有多个叶子节点)用一个叶子节点来替代(我研究了很多文章貌似就是用子树的根来代替)的话,比起REP剪枝法,它不需要一个单独的测试数据集。

    97891e9968b51f65dd2e09beae987122.png

    6c2e06b9a07771c0197daecbd30700a0.png

    4d929eaec647404915dbd93cf0a3c086.png

    CART:

    集成学习:

    Bagging模型

    全称: bootstrap aggregation(说白了就是并行训练一堆分类器) 集成算法 最典型的代表就是随机森林啦

    森林:很多个决策树并行放在一起

    随机:数据采样随机,特征选择随机

    随机森林优势

    它能够处理很高维度(feature很多)的数据,并且不用做特征选择

    容易做成并行化方法,速度比较快

    集成算法 在训练完后,它能够给出哪些feature比较重要

    可以进行可视化展示,便于分析

    Boosting模型

    典型代表:AdaBoost, Xgboost

    典型代表:AdaBoost, Xgboost 集成算法 Adaboost会根据前一次的分类效果调整数据权重 最终的结果:每个分类器根据自身的准确性来确定各自的权重,再合体

    展开全文
  • 一、决策树(类型、节点特征选择的算法原理、优缺点、随机森林算法产生的背景)1、分类树和回归树由目标变量是离散的还是连续的来决定的;目标变量是离散的,选择分类树;反之(目标变量连续的,但自变量可以是分类的...

    一、决策树(类型、节点特征选择的算法原理、优缺点、随机森林算法产生的背景)

    1、分类树和回归树

    由目标变量是离散的还是连续的来决定的;目标变量是离散的,选择分类树;反之(目标变量是连续的,但自变量可以是分类的或数值的),选择回归树;

    树的类型不同,节点分裂的算法和预测的算法也不一样;

    分类树会使用基于信息熵或者gini指数的算法来划分节点,然后用每个节点的类别情况投票决定预测样本的分类;回归树会使用最大均方误差来划分节点,然后用每个节点中样本的均值作为测试样本的预测值;

    2、决策树的算法:ID3、C4.5和CART

    CART(Classify and regresion tree)算法既可以生成分类树,也可以生成回归树,但它生成的是二叉树;既可以处理连续变量也可以处理离散变量;对于分类树使用gini不纯度来决定划分节点,对于回归树使用最小误差准则来划分节点;CART的树特点是可以不断生长,需要进行剪枝;

    思想:递归地将输入空间分割成矩形

    优点:可以进行变量选择,可以克服missing data,可以处理混合预测

    缺点:不稳定

    ID3是用信息增益来决定划分节点,只能处理离散变量;ID3会对特征取值较多的特征有所偏好(比如ID号),但这是没有意义的;

    C4.5是用信息增益率来决定划分节点,可以处理连续值(用二分法进行离散化);可以处理缺省值;而且C4.5克服了ID3一个重要缺点,它对于取值较多的特征有一个惩罚抑制;或者说它对取值较少的特征有所偏好;但它的算法性能较低;可以与ID3结合优势互补来进行一些效果和性能的优化;

    3、决策树是如何选择分裂节点的?

    MeanDecreaseAccuracy 和 MeanDecreaseGini

    因为用“平均精度下降”衡量特征重要性时,是通过随机扰动每个变量(特征)值来看其整体最后的预测误差的,也就是说,除了被扰动的那个特征外,剩余的特征没有变化,用这种方法造成的最终结果的预测误差来衡量这个被扰动特征的重要性;

    GINI指数是衡量节点特征纯度的指标,“gini值平均降低量表示所有树的变量分割节点平均减小的不纯度”;gini指数是决策树节点分割中除了信息熵以外的另一个衡量特征重要性的指标;它表示数据集在增加了特征A的作用之后,gini指数的增益值最大,所以选择A属性作为分裂节点;

    二、随机森林

    1、为什么叫“随机”?

    随机森林里的每一棵决策树的建立,不仅对样本进行有放回(bootstrap)的随机抽样,还对特征进行随机抽样;(即“行”抽样,和“列”抽样,是否回放,是可以设定的)

    从原始输入的N个样本中每次抽取k个样本作为特征子集,建立m棵分类决策树;抽多少次就建多少棵决策树;

    每次抽样样本的size和原始输入样本的大小相同,因为是放回抽样,所以有可能抽到重复的;这可以保证有重复样本被不同决策树分类,这样就可以对不同决策树的分类能力做个评价。

    特征的随机抽样是指,在建每棵树进行每个节点分裂的时候,都随机抽一部分特征,然后在这随机抽的部分特征里面,用决策树的特征选择的方法(比如信息增益,或信息增益率)来决定使用最优的特征来作为分裂节点的;

    2、随机森林算法的优缺点

    优点:

    (1)分类结果准确性高:

    使用多棵决策树的投票结果来决定随机森林分类器最终的分类判定结果;

    所谓“林子大了,什么鸟都有”。由于建立的多棵决策树中,有不少是随机的效果不好的决策树,但也有少数非常优秀的决策树,在对每个样本的投票结果中,不好的树它们的投票是接近随机的,所以他们的投票被相互抵消;最后剩下“优秀”的决策树的投票结果决定了随机森林分类器的最终输出结果,这样的结果提高了准确性的同时,也提高了模型的泛化能力;(The more random, the more robust.)

    随机森林算法的“妙处”恰恰在于“随机”大法的强大,上面说的每个节点都从随机选的部分特征里面选best split的方法或许会使得某些表现“好”的特征被多棵树选中,最终导致有的树很像(虽然它们的训练样本不一样),这样就不够“随机”了,所以有的使用者会在branching的时候(也就是选择划分节点的特征的时候)再加一个随机的处理过程,这样增加算法的稳定性;

    (2)自带特征筛选机制:

    因为“随机化”增加了RF算法的包容性,它可以更方便地处理高维特征而不需要预先进行特征筛选;相反,它可以是进行特征筛选步骤的一种手段;

    3、随机森林是如何衡量特征的重要性的?

    在随机森林中某个特征X的重要性的计算方法如下:

    (1)对于随机森林中的每一颗决策树,使用相应的OOB(袋外数据)数据来计算它的袋外数据误差,记为errOOB1.

    (2)  随机地对袋外数据OOB所有样本的特征X加入噪声干扰(就可以随机的改变样本在特征X处的值),再次计算它的袋外数据误差,记为errOOB2.

    (3)假设随机森林中有Ntree棵树,那么对于特征X的重要性=∑(errOOB2-errOOB1)/Ntree,之所以可以用这个表达式来作为相应特征的重要性的度量值是因为:若给某个特征随机加入噪声之后,袋外的准确率大幅度降低,则说明这个特征对于样本的分类结果影响很大,也就是说它的重要程度比较高。

    参考:http://www.cnblogs.com/justcxtoworld/p/3447231.html

    所以可以认为这个特征重要性的衡量是考虑了特征之间的相互作用;跟tf-idf或者t-test,chi-square-test这些单变量分析的方法有很大不同;但这个优化是在权重值的计算层面的,并没有对特征进行什么改造;

    但是又不像LDA、word2vec那样,考虑了上下文的语义关系以及情感分析(即没有考虑近义词和由于和其他重要词组合而出现的情感的褒贬),RF的特征选择是无序的bagging考虑的方法(不考虑词出现的先后顺序和语义层面的关系);

    RF的特征筛选并没有对特征进行组合加工或者其他变换(这点不如逻辑回归),同时没有加入近义词的考虑;因此在特征工程上面,这里还有很多优化的空间。详细参见后续的文章。

    4、与其他集成分类器的区别和共同点(bagging,Adaboosting,GBDT)?

    随机森林与以决策树作为基本分类器的bagging算法相比,其相同点是两者都使用bootstrap的方法对样本进行有放回的抽样;

    但不同之处在于随机森林除了对样本进行随机抽样,还对特征进行随机抽样;而bagging算法的特点是它里面可以用不同的方法来构建分类器,不仅仅局限于决策树;

    5、随机森林是如何衡量每棵树在最终决策时的权重的?

    权重树随机森林算法,采用决策树在其袋外数据上的AUC衡量决策树的分类能力,根据每棵树的分类能力对树分配其在最终决策时的权重,采用权重集成方法对决策树进行组合。

    三、具体实现过程

    具体实现过程如下:

    (1)原始训练集为N,应用bootstrap法有放回地随机抽取k个新的自助样本集,并由此构建k棵分类树,每次未被抽到的样本组成了k个袋外数据;

    (2)设有mall个变量,则在每一棵树的每个节点处随机抽取mtry个变量(mtry<< mall),然后在mtry中选择(用节点划分的方法)一个最具有分类能力的变量,变量分类的阈值通过检查每一个分类点确定;

    (3)每棵树最大限度地生长, 不做任何修剪;

    (4)将生成的多棵分类树组成随机森林,用随机森林分类器对新的数据进行判别与分类,分类结果按树分类器的投票多少而定。

    参考:http://www.jianshu.com/p/c4bcb2505360

    四、GBDT

    1、回归树、提升树和梯度提升树

    (1)回归树

    gbdt中的树是回归树,不是决策树,用来做回归预测,调整后也可以用于分类;

    回归树分支时穷举每一个feature的每一个阈值寻找最好的分割点,衡量好坏的标准不是最大熵,而是最小化平方误差;

    (2)提升树

    迭代多棵回归树来共同决策;

    参考:http://www.jianshu.com/p/005a4e6ac775

    2、boosting和bagging算法的区别

    随机森林将多棵决策树的结果进行加权后得到最终的结果,对不同的样本的重要性并没有区分,对不同的树的训练结果也没有做进一步的优化提升,是一种bagging的思想。

    GBDT则是基于boosting的思想。

    boosting算法是在迭代的每一步构建弱学习器来弥补原有模型的不足。

    其中,adaboost通过给被已有模型预测错误的样本更高的权重,使得先前被学习错误的样本可以在后续的训练中得到更高的关注来弥补原有模型的不足;gradient boost则是通过每次迭代的时候构建一个沿梯度下降最快的方向的学习器来弥补模型的不足。

    经典的AdaBoost算法只能处理采用指数损失函数的二分类学习任务,而梯度提升方法通过设置不同的可微损失函数可以处理各类学习任务(多分类、回归、Ranking等),应用范围大大扩展。

    另一方面,AdaBoost算法对异常点(outlier)比较敏感,而梯度提升算法通过引入bagging思想、加入正则项等方法能够有效地抵御训练数据中的噪音,具有更好的健壮性。

    参考:http://www.jianshu.com/p/005a4e6ac775

    3、GBDT构造新特征(组合特征)的思想

    参考:http://breezedeus.github.io/2014/11/19/breezedeus-feature-mining-gbdt.html#fnref:fbgbdt

    4、GBDT是如何衡量特征的重要性的

    计算所有的非叶子节点在分裂时加权不纯度的减少,减少得越多说明特征越重要。

    不纯度的减少实际上就是该节点此次分裂的收益,因此我们也可以这样理解,节点分裂时收益越大,该节点对应的特征的重要度越高。

    5、GBDT的学习算法:

    1. 算法每次迭代生成一颗新的决策树

    2. 在每次迭代开始之前,计算损失函数在每个训练样本点的一阶导数gi和二阶导数hi

    3. 通过贪心策略生成新的决策树,通过等式(7)计算每个叶节点对应的预测值

    4. 把新生成的决策树ft(x)添加到模型中:ŷ ti=ŷ t−1i+ft(xi)

    参考文章:http://blog.csdn.net/yangxudong/article/details/53872141

    通常在第四步,我们把模型更新公式替换为:ŷ ti=ŷ t−1i+ϵft(xi),其中ϵ称之为步长或者学习率。增加ϵ因子的目的是为了避免模型过拟合。

    五、随机森林和GBDT的比较

    1、随机森林和GBDT分别在什么情况下容易过拟合?

    从生成树的方式的角度看,随机森林是通过随机抽取样本和特征来建立决策树的,因此当数据中有较多缺失值的时候,随机森林的结果容易发生过拟合;而GBDT基于错误样本来建立提升树,当样本中有异常值outlier的时候,GBDT容易发生过拟合;

    2、在分布式实现上,随机森林和GBDT哪个的实现更困难?

    随机森林的分布式实现更简单,因为在随机森林中每棵树建立的时候与其他的树是独立的,而GBDT每棵树的建立需要依赖于上一层的结果。

    展开全文
  • 在前文中,响应变量是一组类别变量(代表了样本的分组信息),此时随机森林用于执行监督分类的功能,模型的精度在于通过选定的预测变量组合将样本正确划分归类的概率。而当响应变量是一组连续变量时,可将回归森林用于...
    3622530faa7276e88f90d58bef047ad0.gifR包randomForest的随机森林回归模型以及对重要变量的选择718bb1237bc4f335eb82edb7c6d1d4f9.gif关于随机森林(random forest),前文“随机森林分类以及对重要变量的选择”中已经对其基本原理作了简单概括。在前文中,响应变量是一组类别变量(代表了样本的分组信息),此时随机森林用于执行监督分类的功能,模型的精度在于通过选定的预测变量组合将样本正确划分归类的概率。而当响应变量是一组连续变量时,可将回归森林用于回归。此时,回归模型的精度体现了选定的预测变量对响应变量数值改变有关方差的整体解释率(可以理解为回归的R2)。本篇则简介随机森林的回归功能。

    文献中使用随机森林回归的一个实例

    首先来看一篇与植物根系微生物组有关研究,将文中涉及到随机森林回归的部分内容节选出来以帮助大家理解。

    Edwards等(2018)分析了来自两个地区(加利福尼亚州、阿肯色州)以及三个连续种植季(201420152016)的水稻根系微生物组,意在阐述水稻根系微生物群落的时间动态特征,并解释驱动微生物群落组建的成因。文中部分内容使用到随机森林的回归模型建立微生物丰度和水稻生长时期的关系,用以识别重要的时间响应微生物类群。

    fa9d6ac401ef8819a89dc418209d81b4.png

    作者首先分析了水稻根系微生物群落的组成结构,显示其受到地理区域(土壤环境)、植物生长时期以及植物根系不同部位的多重影响。随后分析各个因素的相对效应,发现水稻生长过程中能够逐渐对其根系菌群进行选择,植物生长时期的效应越来越明显,根系菌群朝向一组保守的物种组成趋势发展,同时地理环境效应的比重逐渐减弱。主要体现在:

    (1)不同地理区域种植的水稻,随着水稻生长时期的推移,根际和根内菌群的相似度逐渐增加,并在后期趋于稳定,与种植季节无关:

    (2)对于水稻根际和根内菌群,地区间独特OTU的相对丰度均随时间推移而不断下降,剩余的OTU中,两地区间共有OTU的比重上升。

    19bf44bb2e657044f29a08fe685f4733.png

    A-C,水稻根系微生物群落的PCoA,分别突出了群落组成相似度与根系区域(A)、地理区域(B)或植物生长时间(C)的关系。

    D,根区、根际和根内样本中,微生物群落相似度随植物生长的关系。

    总之存在一类具有显著时间特征的微生物类群,它们的丰度变化与水稻的生长时期密切相关,无论是增加(根系富集)或减少(根系排斥)。随后,作者期望寻找可用于区分水稻生长时期的微生物OTU组合,包括根际和根内菌群,就使用了随机森林。

    作者选择了一部分的样本(加利福尼亚州2014年和阿肯色州2016年的部分数据)用作训练集,通过随机森林分别将根际和根内所有微生物OTU的相对丰度与水稻生长时期进行了回归,并根据各个OTU对模型预测准确性的相对贡献按重要性进行排名。十折交叉验证用于评估模型中OTU数量与模型误差的关系,并按重要性排名对OTU进行选择,删除了大部分不重要OTU后,最终保留的OTU用于构建最终的随机森林回归模型。

    结果中,共确定了85个最重要的与水稻生长时期密切关联的OTU。训练集的数据显示,通过这85OTU构建的随机森林回归模型分别解释了根际和根内菌群对植物年龄有关方差的91.5%和88.4%,表明它们的丰度组合能够准确预测水稻的生长时期。此外,测试集以及验证集数据(涉及了训练集样本外的其它采样时间、地理区域的样本)也一致地表明,通过这85OTU构建的随机森林回归模型同样准确预测了水稻的生长时期,凸显了水稻根际和根内存在特定的微生物类群,在跨地理区域和季节的水稻植物的生命周期中表现出一致的模式。

    426a9c9b557398a86601c35624b451df.png

    图A,横坐标是水稻的实际生长时期,纵坐标是随机森林模型通过根际或根内微生物丰度预测的水稻生长时期,模型具有很高的精度。

    B,重要的85OTU在水稻根际或根内的丰度与时间的关系。

    C85OTU根据丰度的时间响应模式,可分为早期定植(丰度早期很高,但随时间降低)或晚期定植(丰度早期很低,但随时间增加)以及复合型(早期晚期定植区分不明显)类群,柱形图展示了3种类群中OTU平均丰度变化趋势。

    文中后续还有内容涉及到随机森林模型的应用,这里就不再展示了。节选的部分章节想必也足以能够帮助大家了解这个方法的实际应用了。

    此外,该文献的补充材料中提供了有关OTU丰度表、分析过程的R代码等非常全面的数据,大家若有兴趣参考原文即可。

    接下来,展示随机森林回归及对重要变量选择在R语言中的实现方法。

    通过R包randomForest的随机森林执行回归

    对于随机森林应用在类别型响应变量中的分类功能,前文“随机森林分类模型以及对重要变量的选择”中,已经以RrandomForest中的方法为例展示了如何通过随机森林构建分类预测模型(分类模型的训练和测试),以及筛选对区分已知分类具有高度鉴别模式的变量组合(评估变量的相对重要性)。

    在下文中,将响应变量更换为连续型变量,继续展示RrandomForest的随机森林回归方法以及实现对重要变量的选择。其实无论执行的分类还是回归,过程中使用的方法都是一样的,R函数还是那些R函数,区别只在于对部分函数的参数设置以及结果的解读方式上。

    下文的测试数据,R代码等的百度盘链接(提取码,fljz):

    https://pan.baidu.com/s/1Lfk21hGrWDehodWchBiIIg

    若百度盘失效,也可在GitHub的备份中获取:

    https://github.com/lyao222lll/sheng-xin-xiao-bai-yu

    示例数据

    植物根系菌群结构与植物生长密切相关,到目前为止,已经在许多研究中都有报道了,这已经是个共识。因此,下文的示例数据也同样来自某植物根际区域细菌群落组成的16S扩增子测序数据,类似地,仿照上文文献中的过程,通过随机森林建立微生物与植物生长时期的响应关系,根据微生物丰度推断植物生长时期,并寻找一组重要的时间特征类群。

    示例数据“otu_table.txt”中,共记录了45个连续生长时间中植物根际土壤样本中细菌OTU的相对丰度信息。

    614a21a3711f3bbff6501a8b6815ca68.png

    plant_age.txt”中,记录了这45个根际土壤样本对应的植物生长时间,时间单位是天。

    dc653d96eec5bac3343f86b89850b51d.png

    随机森林回归模型的初步构建

    OTU丰度数据读入R中,可以事先作一些预处理,例如剔除低丰度类群等。

    随后,对应OTU丰度样本与植物生长时间的关系,加载randomForest包并运行随机森林。

    ##数据预处理
    #读取 OTUs 丰度表
    otu
    #过滤低丰度 OTUs 类群,它们对分类贡献度低,且影响计算效率
    #例如剔除总丰度低于 0.05% 的值
    otu = 0.0005), ]
    #合并有关于植物生长时间的信息
    plant
    otu otu otu
    #为了方便后续评估随机森林模型的性能
    #将总数据集分为训练集(占 70%)和测试集(占 30%)
    set.seed(123)
    train otu_train otu_test
    ##randomForest 包的随机森林
    library(randomForest)
    #随机森林计算(默认生成 500 棵决策树),详情 ?randomForest
    set.seed(123)
    otu_train.forest otu_train.forest
    454236c1cc6785ce73bd0991016b4929.png

    结果中,% Var explained体现了预测变量(用于回归的所有OTU)对响应变量(植物年龄)有关方差的整体解释率。在本示例中,剔除了低丰度的OTU后,剩余的OTU(约2600个左右)解释了约89.17%的总方差,可以理解为该回归的R2=0.8917,相当可观的一个数值,表明该植物根际细菌的群落结构随植物生长密切相关。

    查看该模型的预测性能,可以看到具有较高的精度。

    #使用训练集,查看预测精度
    plant_predict
    plot(otu_train$plant_age, plant_predict, main = '训练集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    #使用测试集,评估预测性能
    plant_predict
    plot(otu_test$plant_age, plant_predict, main = '测试集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    671313092901f85ec8d0aa5db5243a90.png

    重要的预测变量选择

    但是,并非这所有的2600余个OTU都对回归的精度具有可观的贡献。有些OTU丰度的时间特征并不明显,可能在回归中产生较大噪声,对模型精度带来较高的误差。因此,最好将低贡献的OTU去除。

    评估预测变量的重要性

    基于已经构建好的随机森林回归模型,可以从中评估OTU的重要性。将OTU按重要程度高低进行排名后,选择排名靠前的一部分OTU,这些重要的OTU是明显的与植物生长时间密切关联的一些细菌类群。

    ##OTU 的重要性评估
    #查看表示每个预测变量(细菌 OTU)重要性的得分
    #summary(otu_train.forest)
    importance_otu head(importance_otu)
    #或者使用函数 importance()
    importance_otu head(importance_otu)
    #作图展示 top30 重要的 OTUs
    varImpPlot(otu_train.forest, n.var = min(30, nrow(otu_train.forest$importance)),
    main = 'Top 30 - variable importance')

    32d99da2530f0a8634d305dd33b36fa9.png

    %IncMSE”即increase in mean squared error,通过对每一个预测变量随机赋值,如果该预测变量更为重要,那么其值被随机替换后模型预测的误差会增大。因此,该值越大表示该变量的重要性越大;

    IncNodePurity”即increase in node purity,通过残差平方和来度量,代表了每个变量对分类树每个节点上观测值的异质性的影响,从而比较变量的重要性。该值越大表示该变量的重要性越大。

    对于“%IncMSE”或“IncNodePurity”,二选一作为判断预测变量重要性的指标。需注意的是,二者的排名存在一定的差异。

    #可以根据某种重要性的高低排个序,例如根据“IncNodePurity”指标
    importance_otu head(importance_otu)
    #输出表格
    #write.table(importance_otu, 'importance_otu.txt', sep = '\t', col.names = NA, quote = FALSE)
    c492ddf77d6f6cb71e207b6f6ab4c40c.png

    交叉验证

    那么,最终选择多少重要的预测变量(本示例为OTUs)是更合适的呢?

    可通过执行十折交叉验证,根据交叉验证曲线对OTU进行取舍。交叉验证法的作用就是尝试利用不同的训练集/验证集划分来对模型做多组不同的训练/验证,来应对单独测试结果过于片面以及训练数据不足的问题。此处使用训练集本身进行交叉验证。

    ##交叉验证辅助评估选择特定数量的 OTU
    #5 次重复十折交叉验证
    set.seed(123)
    otu_train.cv otu_train.cv
    #提取验证结果绘图
    otu_train.cv otu_train.cv$otus otu_train.cv otu_train.cv$otus
    otu_train.cv.mean head(otu_train.cv.mean, 10)
    #拟合线图
    library(ggplot2)
    ggplot(otu_train.cv.mean, aes(Group.1, x)) +
    geom_line() +
    theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent')) +
    labs(title = '',x = 'Number of OTUs', y = 'Cross-validation error')

    d14030e3c2a9339f57b06793144b10cd.png

    交叉验证曲线展示了模型误差与用于拟合的OTU数量之间的关系。误差首先会随OTUs数量的增加而减少,开始时下降非常明显,但到了特定范围处,下降幅度将不再有显著变化,甚至有所增加。

    根据交叉验证曲线,提示保留9-13个重要的OTU即可以获得理想的回归结果,因为此时的误差达到最小。

    因此,根据计算得到的各OUT重要性的值(如“IncNodePurity”),将OTU由高往低排序后,最后大约选择前9-13OTU就可以了。

    #提示保留 9-13 个重要的 OTU,可以使随机森林回归的精度最大化
    #首先根据某种重要性的高低排个序,例如根据“IncNodePurity”指标
    importance_otu
    #然后取出排名靠前的 OTU,例如 top10 最重要的 OTU
    importance_otu.select importance_otu.select
    #输出表格
    #write.table(importance_otu.select, 'importance_otu.select.txt', sep = '\t', col.names = NA, quote = FALSE)
    #有关 OTU 的物种分类信息等其它细节,可后续自行补充

    b3b466355a7b738bb1ab4e2b759011da.png

    #不妨简单查看下这些重要的 OTU 丰度与植物生长时间的关系
    #可以看到趋势非常明显,包括根际富集或排斥等都有涉及
    otu_id.select otu.select otu.select
    ggplot(otu.select, aes(x = plant_age, y = value)) +
    geom_point() +
    geom_smooth() +
    facet_wrap(~variable, ncol = 3, scale = 'free_y') +
    labs(title = '',x = 'Plant age (days)', y = 'Relative abundance')
    54c2d09c89e6d3cbca2c0033477cb285.png

    最终模型的确定

    现在来看,只使用选择的10个重要的OTU构建回归模型,效果如何。

    ##只包含 10 个重要预测变量的简约回归
    otu.select
    #为了方便后续评估随机森林模型的性能,将总数据集分为训练集(占 70%)和测试集(占 30%)
    set.seed(123)
    train otu_train.select otu_test.select
    #随机森林计算(默认生成 500 棵决策树),详情 ?randomForest
    set.seed(123)
    otu_train.select.forest otu_train.select.forest
    #使用训练集,查看预测精度
    plant_predict
    plot(otu_train.select$plant_age, plant_predict, main = '训练集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)
    #使用测试集,评估预测性能
    plant_predict
    plot(otu_test.select$plant_age, plant_predict, main = '测试集',
    xlab = 'Plant age (days)', ylab = 'Predict')
    abline(1, 1)

    14ddea463d7ca0544ba605419421d871.png

    结果显示,与先前使用全部的OTU(去除低丰度后约2600多个)相比,只使用这10个更重要OTU的随机森林回归模型,获得了更出色的效果。

    一是体现在% Var explained,模型中预测变量(这10个重要的OTU)对响应变量(植物年龄)有关方差的整体解释率达到了96.49%,大于先前的89.17%,这得益于排除了不重要或者高噪声的OTU。二是预测性能更佳,特别是对于测试集,与先前的分布图相比较(见上文),植物实际生长时间与通过根际菌群预测的植物年龄更趋一致。

    如果不涉及预测,只是评估变量的重要性

    上文过程中,为了评估随机森林回归模型的预测性能,将数据拆分为训练集和测试集分开讨论。但如果目的不涉及预测,只是为了寻找重要的预测变量,完全可以直接使用所有数据代入回归,无需再区分训练集与测试集,这也是很多文献中经常提到的方法。

    例如另一篇类似的研究,Zhang等(2018)寻找水稻根系中与植物生长期密切相关的biomarkers时,同样使用的随机森林回归。但区别是文中没有涉及预测,关注的重点在于识别重要的微生物类群。

    2d7b77b46e4b2a496d5377b986caa0de.png

    参考文献

    Edwards J, Santosmedellin C, Liechty Z, et al. Compositional shifts in root-associated bacterial and archaeal microbiota track the plant life cycle in field-grown rice. PLOS Biology, 2018, 16(2).Zhang J, Zhang N, Liu Y, et al. Root microbiota shift in rice correlates with resident time in the field and developmental stage. Science China-life Sciences, 2018, 61(6): 613-621.

    8a4b1ee4cafa9e19cef9398b925eae9b.png

    我就知道你在看?
    展开全文
  • 定量输出称为回归,或者说是连续变量预测; 定性输出称为分类,或者说是离散变量预测。 举个例子: 预测明天的气温是多少度,这是一个回归任务; 预测明天是阴、晴还是雨,就是一个分类任务; 决策树三种算法特性...
  • 它适用于类别和连续输入(特征)和输出(预测变量。 文章整体框架 1、基本概念 决策树是一个类似于流程图的树结构:其中每一个内部节点表示在一个属性上的测试,每个分支代表一个属性输出, 而每个树叶结点代表类...
  • 作者:Annalyn Ng编译:ronghuaiyang导读随机森林,梯度提升都是基于决策树的算法,那决策树到底又是什么东西呢?今天给大家先简单的介绍一下,完全是概念上的介绍,没有数学,没有公式,大家先有一个直观上的了解...
  • 随机森林或 Xgboost 模型变量重要性排序,得到最终的变量筛选结果5.过滤法、包装法、嵌入法源码1.读取数据区分离散变量与连续变量2.对连续变量和离散变量分箱(删除分箱数只有1的)3.对训练数据
  • 二分类预测

    千次阅读 2019-01-18 13:59:35
    本项目是数据的二分类分析,针对俄亥俄州诊所患者出现与否数据集No-show-Issue-Comma-300k进行样本的分类预测。...最后分别用决策树,SGD,随机森林以及梯度Boosting对数据集做二分类预测,得到梯度Boosting在...
  • 译者序 前言 第1章 导论 1.1 预测与解释 ...20.4 连续变量离散化 20.5 模型预测何时是可信的 20.6 大样本的影响 20.7 计算 习题 附录 附录A 各种模型的总结 附录B R语言介绍 附录C 值得关注的网站 参考文献
  • 并利用全波段和特征波段建立偏最小二乘回归(PLSR)、支持向量机(SVM)和随机森林(RF)模型预测土壤有机质含量。结果表明, PLSR和SVM模型结合特征变量选择,不仅提高了模型运算效率,而且模型预测能力较全波段均有一定提高...
  • Kaggle实战:Rain in Australia 数据集建模预测

    千次阅读 热门讨论 2019-10-01 21:24:43
    文章目录数据详情单变量分析离散值连续值建模逻辑回归模型评估随机森林随机森林调参朴素贝叶斯人工神经网络 数据集来源https://www.kaggle.com/jsphyg/weather-dataset-rattle-package 数据详情 包含了某段时间内...
  • 随机森林回归 RandomForestRegressor7. LGB模型回归 lightgbm 天池大赛比赛地址:链接 理论知识 回归用在目标数量连续预测 线性回归模型 LinearRegression 假定因变量Y和自变量X呈线性相关 可以用Y=AX+b X...
  • 第30章 基于随机森林思想的组合分类器设计——乳腺癌诊断 第31章 思维进化算法优化BP神经网络——非线性函数拟合 第32章 小波神经网络的时间序列预测——短时交通流量预测 第33章 模糊神经网络的预测算法——嘉陵江...
  • 机器学习面试题41-60

    千次阅读 2018-10-16 11:02:42
    41.是否可以捕获协连续变量和非连续变量之间的的相关性 是的,我们可以用ANCOVA(协方差分析)技术来捕获连续型变量和分类变量之间的相关性。 42.GBM和随机森林的区别 最根本的区别是,随机森林算法使用bagging...
  • 文章目录背景介绍预处理数据值化数值化代码缺失值处理缺失值为离散值缺失值为连续值无量纲化归一化标准化区间放缩特征选择单因素分析lasso模型特征选择模型方法1:随机森林方法2:xgboost详细方法结果 背景介绍 ...
  • 有监督的数据挖掘算法-分类

    千次阅读 2019-02-17 12:11:01
    回归:在建模的过程中需同时具备自变量x和因变量y,属于有监督的学习...思想:前边的线性,岭回归,LASSO等均是预测连续型因变量,如根据价格,广告力度,销售渠道等因素预测利润高低。Logistic针对离散型因变量的...
  • 回归 (regression):输入变量与输出变量均为连续变量预测问题 回归方法:随机森林、bagging 。 分类 (classification):已知标签、输出变量为有限个离散变量的预测问题 分类方法:bagging、随机森林、adaboost;...
  • 决策树,随机森林,支持向量机的分类器等分类算法的预测标签是分类变量,多以{0,1}来表示,而无监督学习算法比如PCA,KMeans的目标根本不是求解出标签,注意加以区别。 只要一切基于特征预测连续变量的需求,...
  • 人工智能在信贷业务风控的应用;目录;3; 决策树Decision Tree) 决策树模型是对总体进行连续的分割partition,以预测一定目标...随机森林(Random Forest) 随机森林由多棵决策树组成每棵决策树擅长特定人群重点关注特定变量
  • RF & Microarray

    2019-10-02 13:19:19
    随机森林是一个很好适用于微阵列数据的分类算法: 1.即使大多数的预测变量都是噪音,RF仍然具有优秀的性能,因此不需要对基因进行预选择。 2.能够应用于变量数远远大于观测数据量的情况 3.能用于两类和多于两个...
  • 监督学习(预测):分类(k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归、神经网络); 回归(线性回归、岭回归); 标注(隐马尔可夫模型)无监督学习:聚类 k-means 监督学习(预测)的目标值:离散型--分类;...
  • 电信客户流失数据分析

    千次阅读 2020-08-21 14:24:32
    这里写自定义目录标题电信客户流失数据分析研究背景提出问题数据集描述特征...连续变量的差异检验3、多重对应分析4、Logistic回归分析分类与模型预测有效性1、决策树和随机森林2、支持向量机3、模型预测有效性总结与...
  • Task04建模与调参

    2020-04-01 20:13:37
    决策树,随机森林,支持向量机的分类器等分类算法的预测标签是分类变量,多以{0,1}来表示,而无监督学习算法比如PCA,KMeans并不求解 标签,注意加以区别。回归算法源于统计学理论,它可能是机器学习算法中产生最早...
  • 对于离散变量而言,经常有缺失值,对于缺失值有如下处理方法: 1. 如果数据集很大,缺失值很少,可以删除缺失值;...3. 如果属性是连续型随机变量可以考虑用回归、随机森林等方法来预测缺失值; 。。。。 ...
  • 红提的糖度和硬度是评价红提品质的重要指标,探究了基于高光谱成像技术的红提糖度和硬度的无损检测方法及...预测硬度的最优模型为基于移动窗口平滑结合连续投影算法优化的随机森林(MA-SPA-RF),其Rc、Rp分别为0.961、0.
  • 决策树,随机森林,支持向量机的分类器等分类算法的预测标签是分类变量,多以{0,1}来表示,而无监督学习算法比如PCA,KMeans并不求解标签,注意加以区别。回归算法源于统计学理论,它可能是机器学习算法中产生最早...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

随机森林预测连续变量