随机森林、GBDT的简单理解

    技术2022-07-10  150

    集成思想

    boosting:通过使用将弱学习器提升为强学习器的方法来提高预测的精度(不断地拟合残差) 它的下一个学习器需要依赖上一个学习器学习结束而产生残差; (而bagging的学习器之间是相互独立的)

    bagging:通过boostraping自助采样的方式生成众多的学习器,最后以投票(少数服从多数)确定类别 这里的随机采样可以通俗理解为有放回采样,在bagging算法中,一般会随机采集和训练集样本数相同的数量,但是由于是有放回的数据采样,采样的集合和训练集数量相同但是内容不同;

    由于是有放回抽样,对于一个样本来说,选中的概率为1/m,未选中的概率为(1-1/m),所以该样本在m次采样中都没有被采集的概率为(1-1/m)^m ,根据其等价于1/e,即在每一轮采样(m次采样中)中,约有36.8%的数据无法被采集,我们把这部分的数据称为袋外数据OOD,这些OOD数据没有参与模型的拟合,因此可以用来检测模型的泛化能力;

    针对bagging算法,它采用boostraping采样数据 来拟合模型,因此具有较强的泛化能力,但是相比来说对于训练集数据的拟合能力会有所不足;

    bagging算法流程: 1)随训练数据进行t轮boostraping采样,每一轮采用的数据量和训练数据量相同 2)根据t个采样数据集生成t个弱学习器(弱学习器种类很多) 3)在分类条件下:根据投票原则选出类别占比最大的作为最终类别 在回归条件下,计算出所有分类器的回归结果进行算数平均作为最终的预测值

    note:boosting算法学习器之间存在先后依赖,速度会慢,但是拟合的效果会更好; 而bagging算法各个学习器之间是相互独立的,可以并发学习,速度会快,但是由于随机原则,拟合效果会偏差;

    分类树、回归树(在CART算法中生成的树是二叉树) 分类树输入离散型变量进行分类;回归树输入连续变量进行预测

    分类树算法:(采用基尼系数作为特征选取的度量) 1)先计算总体的基尼指数 2)选取最优的特征进行划分,标准为在已知该特征条件下,其基尼指数最小的特征和划分点 3)对之后的子节点递归调用2),直到满足停止条件;

    回归树算法:(采用误差平方和作为特征选取的度量) 1)选取最优的切分特征向量和对应特征向量的值 ,构成第一遍的if-then语句 2)遍历特征集,先选定一个特征向量j,然后对该特征向量的值进行排序,遍历它的取值s, 每一对(j,s)把区域分为而部分,我们计算两个区域的均值,然后计算其误差平方和,使其min (这里相当于两层嵌套循环,外层遍历特征集,内层遍历特定特征向量的取值) 3)第一遍划分将区域划分成两个子区域,然后对各个子区域在进行特征向量及值的选取 4)直到到达停止条件或者特征集为空结束 5)返回各个对应输入空间以及对应的均值cm,即为回归树模型

    随机森林 该算法其实是对bagging算法的一种改进,在随机森林中采用CART决策树作为弱学习器;其中森林的含义为包含多棵决策树;而随机的含义主要体现在基础沿用了bagging算法的自助采样法以及在生成决策树节点的过程中,并非是直接采用全部的特征来进行选择构建,而是随机选取一部分的特征从中选择最优特征进行划分;

    GBDT梯度提升树(学习器只能采用CART回归树)

    提升树 加法模型:f(x) = sum(βm*b(X;γm)) m取遍从1~M M为该提升树中树的个数 要是模型最佳则需要考虑模型的损失,如果直接考虑一颗整的提升树来进行预测值和真实值损失的度量十分困难,我们这里采用前向分步算法;

    前向分步算法:从前向后,每一步只学习一个基函数(提升树中的子树)及其系数,逐步逼近优化目标函数;

    前向分步算法的过程: 1)初始化f0(x) = 0 2)min(loss) 先用一棵树去拟合真实值,极小化损失函数的时候获取该树的参数,然后在该树的基础上再添加一棵树再重新拟合真实值,得到第二树的具体参数,如此进行。其实质为后一棵树对前者树与真实值的残 差的进一步拟合; 3)更新βm、γm得到最后的提升书fm(x) 4)f(X)加法模型 = fm(x) = f0(X) + sum(βmb(X;γm)) = sum(βmb(X;γm)) m取遍从1~M

    note:该方式将同时求解M个(βm、γm)参数转化为逐步求解的过程;

    梯度提升树的思想和提升树思想一致,只是再选取残差公式时采用平方误差 平方误差的负梯度即为残差大小,每一次我们计算上一棵提升树的负梯度,然后用CART回归树去拟合该残差(也就是梯度)

    Processed: 0.010, SQL: 9