机器学习之树形模型:决策树

决策树

常见的树形模型(随机森林、GBDT、XGBoost),树形的基础是“决策树”。

  • “决策树”特点:易理解、易构建、速度快
  • 分类
    • 分类决策树
      输出的结果为具体类别,用于处理离散型变量
    • 回归决策树
      输出的结果为确定数值,用于处理连续型变量
  • 决策树构建的算法
    • 分类树:ID3(信息增益)、C4.5(信息增益比)
    • 分类回归树:CART (基尼指数)
      其中ID3是最基本的构建算法。
  • 步骤:特征选择、决策树的生成、剪枝

决策树+集成学习=新算法

1)Bagging + 决策树 = 随机森林(Random Forest)
2)AdaBoost + 决策树 = 提升树(Boosting Decision Tree)
3)Gradient Boosting + 决策树 = 梯度提升树(Gradient Boosting Decision Tree,GBDT)
模型集成与融合

随机森林

  • bagging(bootstrap aggregating): 多个模型投票/取平均值
    • 分类问题,取票数最多的类别;回归问题,取平均值
    • 抽样训练方式:使用Boostraping方法随机抽取N个训练样本(bootstrap 样本),有放回地抽取(样本可能多次被抽中,可能一次没中);进行K轮,得到K个训练集
    • 随机:样本随机、特征随机

GBDT

GBDT中的树都是“回归树”
-核心:每一棵树学的是之前所有树结论和的残差,这个残差就是一个加预测值后能得真实值的累加量。

  • 相比于一颗树的优势:传统一棵树容易过拟合,过度学习训练集的特征(训练精度高),过度学习的规律会导致在测试集上不使用(测试精度低),但测试精度(实际精度)是我们更看重的。

  • 回归树在每个叶节点里的样本取平均,即得预测值。

  • 优点

    1. 灵活处理各种类型的数据:连续、离散
    2. 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。
    3. 使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
    4. 预测阶段的计算速度快, 树与树之间可并行化计算。所有的树一旦建好,用它来预测时是并行的,最终的预测值就是所有树的预测值之和。
  • 缺点
    1.由于弱学习器之间存在依赖关系,难以并行训练数据。不过可以通过自采样的SGBT来达到部分并行。
    2.GBDT在高维稀疏的数据集上, 表现不如支持向量机或者神经网络。
    3.GBDT在处理文本分类特征问题上, 相对其他模型的优势不如它在处理数值特征时明显。
    4.训练过程需要串行训练, 只能在决策树内部采用一些局部并行的手段提高训练速度。

XGBoost

  • 优点
  1. 正则化,因为“正则化提升”闻名,代价函数里面的正则项包含了两个部分:树的叶子节点树;每个叶子节点输出的score的L2的平方和。机器学习之树形模型:决策树_第1张图片
  2. 并行处理:不是指tree的并行,而是值特征粒度的并行。(confuse?)
  3. 灵活性:可以自定义目标函数、评估函数
  4. 缺失值处理,对于特征的值有缺失样本,能自动学习其分裂方向
  5. 剪枝:从顶到底建立所有可能的子树,再反向进行剪枝
  6. 内置交叉验证,允许每一轮boosting迭代中使用交叉验证。

Appendix
机器学习算法(十四):决策树系列
机器学习算法(十五):GBDT
干货|横扫Kaggle的XGBoost原理与实战**
Python机器学习笔记:XgBoost算法
xgboost原理?

你可能感兴趣的:(算法,机器学习,算法)