决策树系列算法总结(ID3, C4.5, CART, Random Forest, GBDT)
Posted 默一鸣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了决策树系列算法总结(ID3, C4.5, CART, Random Forest, GBDT)相关的知识,希望对你有一定的参考价值。
前言
线性系列的算法(比如logistic regression,SVM;当然,它们不完全是线性的)的逻辑一般是求每个特征对最终分类结果的贡献权重。但是,这种线性组合并不总是有意义的。在这种情况下,如果不想使用多层的神经网络做分类的话,用决策树系列的算法就是不错的选择。
注:这里不想使用神经网络的情况有很多,比如训练样本不多,不足以支撑神经网络那么多参数的时候(经验上,样本数应该至少是参数的10倍)。又或者,希望更快出结果的时候(神经网络无论是写代码,调参,训练都比较耗时)。
另,本文更多的是总结性质的,只写核心思想,试图对决策树系列算法给出一个overview,算法细节请参看相关引文。更适合对决策树算法有一定了解的人。。
决策树
决策树的训练算法主要有三种。不过它们的总体逻辑都是一样的,即自顶向下的构建决策树。在当前树的每个叶子节点做判断,看其是否需要继续向下生成子树。如果需要的话,选取某一个特征作为判断依据,向下分裂一层。如此直至没有任何叶子节点可以继续分裂。同时,为了防止过拟合,在用上述方法生成决策树后,会对决策树进行剪枝,即将某一个非叶子节点下面的子树全都砍掉,让当前非叶子节点称为叶子节点。
ID3
ID3算法是早期的决策树算法,1975年由J. Ross Quinlan提出。
其主要思想是根据信息增益来进行节点分裂时的特征选择。即贪心的选取信息增益最大的特征来作为分裂依据。
C4.5
C4.5算法是ID3算法的改进版,主要改进的三点:
1. 用信息增益率来进行feature选择,避免了ID3算法中倾向于选择取值较多的feature的问题
2. 可以处理连续值的feature。主要做法是尝试各种连续feature的二分方式,取信息增益最大的切分方法
3. 加入了对决策树进行剪枝的策略
另外,C4.5算法还有一个改进版的C5.0算法。不过C5.0是C4.5的商业化版本,细节并没公开。主要改进就是用了boosting,可以用更少的memory,更小的rule set,但是能获得更高的准确率。
CART
CART(Classification and Regression Tree)算法跟ID3和C4.5的不同在于:
1. 其建立的是二叉树。虽然算法流程跟上面两个算法差不多,不过其每次只对feature进行二分。对于连续的feature就是普通的二分,对于离散的,则是对离散feature的每个取按照是不是这个值来分。
2. 其使用的判断样本的不纯度的方法不再是基于熵,而是基于Gini系数
3. 其不仅可以用来做分类,还可以用来做回归(做回归时,衡量不纯度用的是最小二乘误差,如果想详细了解回归可以参考GBDT部分)
随机森林
其核心思想就是训练多棵决策树,来共同决策。
具体做法就是,对于有N个样本的数据,假设总共有M个feature。则:
1. 首先,有放回的随机选取N个样本
2. 随机选取m个feature
3. 构建一颗决策树,返回第一步,循环
其中决策树的个数是需要认为给定的hyperparameter
GBDT
GBDT全称Gradient Boosting Decision Tree,又叫 MART(Multiple Additive Regression Tree)。跟前面几种算法有本质区别:
1. 其本质是回归决策树(regression decision tree),更适合做回归,当然也可以做二分类,设定一个阈值即可。
2. 虽然其也是训练多个决策树来生成最后的结果。不过其并不是通过这些树的投票或者平均数来生成最终的结果,而是通过这些树输出的累加(具体看下面的引文)。核心思想是每个决策树只学习真理的一小部分
以上是关于决策树系列算法总结(ID3, C4.5, CART, Random Forest, GBDT)的主要内容,如果未能解决你的问题,请参考以下文章