tree based ensemble algorithms
- 原始的Boost算法是在算法开始的时候,为每一个样本赋上一个权重值,初始的时候,每一个样本都是一样的重要。在每一步的训练中,获得的模型,会给出每一个数据点的估计对错,根据判断的对错,在每一步的训练以后,会增长分错样本的权重,减小分类正确的样本的权重,若是在后续的每一步训练中,若是继续被分错,那么就会被严重的关注,也就是得到了一个比较高的权重。通过N次迭代以后,将会获得N个简单的分类器(base learner),而后将他们组装起来(能够进行加权,或者进行投票),获得一个最终的模型。
主要介绍如下几种ensemble的分类器(tree based algorithms)
xgboost

- The correct answer is marked in red. Please consider if this visually seems a reasonable fit to you. The general principle is we want both a simple and predictive model. The tradeoff between the two is also referred as bias-variance tradeoff in machine learning.
lightGBM: 基于决策树算法的分布式梯度提高框架
- lightGBM 与xgboost的区别:
- xgboost使用的是pre-sorted算法(对全部的特征都按照特征的数值进行预排序,在遍历分割点的时候用O(data)的代价函数找个一个特征的最好分割点,可以更加精确的找到数据的分割点。
- lightGBM 使用的是histogram算法,占用内存更低,数据分割的复杂度更低。
- 决策树生长策略上
- xgboost采用的是level-wise生长策略,可以同时分类同一层的叶子,从而进行多线程优化,不容易过拟合,可是不加区分的对待同一层的叶子,带来了不少没有必要的开销(有不少的叶子分裂增益较低,没有必要进行搜索和分裂)
- lightGBM采用的是leaf-wise的生长策略,每次从当前的叶子中找到分裂增益最大的(通常也是数据量最大)的一个叶子进行分裂,如此循环;可是生长出的决策树枝叶过多,产生过拟合,lightGBM在leaf-wise上增长了一个最大深度的限制,在保证高效率的同时防止过拟合。
- 另外一个巧妙的优化是histogram作差加速,一个容易观察到的现象:一个叶子的直方图能够由它的父节点的直方图与它兄弟的直方图作差获得。

GBDT(Gradient Boosting Decison Tree)
- GBDT中使用的都是回归树,GBDT用来作回归预测,调整后也能够用于分类,设定阈值,大于阈值为正例,反之为负例,能够发现多种有区分性的特征以及特征组合。
- GBDT是把全部树的结论累加起来作最终结论,GBDT的核心就在于,每一棵树学的是以前全部树结论和的残差,这个残差就是把一个加预测值后能获得真实值的累加量。
- 好比A的真实年龄是18岁,但第一棵树的预测年龄是12岁,差了6岁,即残差为6岁。那么在第二棵树里咱们把A的年龄设为6岁去学习,若是第二棵树真的能把A分到6岁的叶子节点,那累加两棵树的结论就是A的真实年龄;若是第二棵树的结论是5岁,则A仍然存在1岁的残差,第三棵树里A的年龄就变成1岁,继续学。 Boosting的最大好处在于,每一步的残差计算其实变相地增大了分错instance的权重,而已经分对的instance则都趋向于0。这样后面的树就能愈来愈专一那些前面被分错的instance。
用公式来表示提高树的部分原理
node
GBDT划分标准默认是friedman_mse能够查看sklearn 官方文档中GBDT的参数说明git
- Gradient Boost与传统的Boost的区别是
- 每一次的计算是为了减小上一次的残差(residual),而为了消除残差,咱们能够在残差减小的梯度(Gradient)方向上创建一个新的模型。
- 因此说,在Gradient Boost中,每一个新的模型的创建是为了使得以前模型的残差往梯度方向减小。
- Shrinkage(缩减)的思想认为,每次走一小步逐渐逼近结果的效果,要比每次迈一大步很快逼近结果的方式更容易避免过拟合。
- 即它不彻底相信每一棵残差树,他认为每棵树只学到了真理的一部分,累加的时候只累加一小部分,每次经过多学几棵树弥补不足。
- 本质上,Shrinkage为每棵树设置了一个weight,累加时要乘以这个weight,但和Gradient并无关系。
The advantages of GBRT are:github
- Natural handling of data of mixed type (= heterogeneous features)
- 能够处理不一样性质的属性,数值特征与category特征,
- 数值特征须要进行数据的预处理
- Predictive power
Robustness to outliers in output space (via robust loss functions)算法
The disadvantages of GBRT are:多线程
- Scalability, due to the sequential nature of boosting it can hardly be parallelized.
- Boost是一个串行过程,很差并行化,并且计算复杂度高,同时不太适合高维稀疏特征。
随机森林
决策树
- ID3 信息增益:熵(数据的不肯定性程度)的减小;一个属性的信息增益量越大,这个属性做为一棵树的根节点就能使这棵树更简洁。
信息增益=分裂前的熵 – 分裂后的熵
面对类别较少的离散数据时效果较好,但若是面对连续的数据(如体重、身高、年龄、距离等),或者每列数据没有明显的类别之分(最极端的例子的该列全部数据都独一无二),即每一个值对应一类样本
C4.5信息增益比:克服了ID3用信息增益选择属性时偏向选择取值多的属性的不足(某个属性存在大量的不一样值,在划分时将每一个值分为一个结点)分布式
- CART 使用基尼系数进行分类
基尼指数Gini(D)表示集合D的不肯定性,基尼指数Gini(D,A)表示经A=a分割后集合D的不肯定性。基尼指数值越大,样本集合的不肯定性也就越大,这一点与熵类似。


- 分类与回归树(CART):二叉树形式,分类时:根据Gini指数选择划分特征
回归时:Los为 平方损失函数,最小化均方偏差选择划分特征,切分点(值)将数据切分红两部分,用平方偏差最小的准则(最小二乘法)求解每一个单元上的最优输出值(每一个叶子节点上的预测值为全部样本的平均值)。

用选定的对(j,s)划分区域并决定相应的输出值,每一个叶子节点上的预测值为全部样本的平均值:
ide
能够参看该repository中的另外文章中介绍的回归树
决策树的生成一般使用 信息增益最大、信息增益比最大或基尼指数最小做为特征选择的准则。
[参考]:https://medium.com/theboredhuman/random-forests-explained-intuitively-2cecb9e1a7b5