决策树算法模型的归类与整理(ID3&C4.5&CART&线性二分类&非线性二分类)
一、 总结摘要
决策树模型在监督学习中非常常见,可用于分类(二分类、多分类)和回归。虽然将多棵弱决策树的Bagging、Random Forest、Boosting等tree ensembel 模型更为常见,但是“完全生长”决策树因为其简单直观,具有很强的解释性,也有广泛的应用,而且决策树是tree ensemble 的基础。一般而言一棵“完全生长”的决策树包含,特征选择、决策树构建、剪枝(包括预剪枝和后剪枝)三个过程,接下来我将简要地梳理并比较ID3、C4.5、CART这3个算法。
例如上图即为一棵简单的决策树模型,可以用来简单判定并预测一位女孩是否要去见她的相亲对象,这个过程与评判标准即可用上面的决策树模型来加以辅助判定。
决策树的优点与缺点
优点:
- 决策树算法中简单的决策规则建立决策树模型的过程非常容易理解;
- 决策树模型可以可视化,非常直观;
- 应用范围广,可用于分类和回归,而且非常容易做多类别的分类;
- 能够处理数值型和连续的样本特征。它比较适合分析离散型数据,若数据为连续型,则要先转换成离散的数据再进行分析。
缺点: - 很容易在训练数据中生成复杂的树结构,造成过拟合情况(overfitting)。剪枝可以缓解过拟合带来的的负作用,常用方法是限制树的高度、叶子节点中的最少样本数量;
- 学习一棵最优的决策树被认为是NP-Complete问题。实际中的决策树是基于启发式的贪心算法建立的,但这种算法不能保证建立全局最优的决策树。Random Forest 引入随机能缓解这个问题。
时间复杂度与空间复杂度分析
时间复杂度O(NMD):O(NMD), N是sample的大小,M是feature的数量,D是树的深度。cart生长时,把所有feature内的值都作为分裂候选,并为其计算一个评价指标(信息增益、增益比率、gini系数等),所以每层是O(NM),D层的树就是O(NM*D)。
空间复杂度o(N + M * Split * TreeNum ):N为样本数量,M为特征数量,Split为平均每个特征的切分点数量,TreeNum为如果为随机森林,随机森林的数目数量。
70年代后期至80年代,Quinlan开发了ID3算法,后来,他将ID3算法进行改进,得到了C4.5算法,到1984年,由多位统计学家共同研究,又得出了CART算法。因此,ID3到C4.5再到CART算法,都是建立在决策树模型的基础之上的迭代和更新,通过算法内部的调整不断对决策模型进行优化和改进。接下来,我将详细介绍并比较这三种算法的用途及原理。
二、 ID3算法
ID3由Ross Quinlan在1986年提出。ID3决策树可以有多个分支,但是不能处理特征值为连续的情况。决策树是一种贪心算法,每次选取的分割数据的特征都是当前的最佳选择,并不关心是否达到最优。在ID3中,每次根据“最大信息熵增益”选取当前最佳的特征来分割数据,并按照该特征的所有取值来切分,也就是说如果一个特征有4种取值,数据将被切分4份,一旦按某特征切分后,该特征在之后的算法执行中,将不再起作用,所以有观点认为这种切分方式过于迅速。
ID3算法十分简单,核心是根据“最大信息熵增益”原则选择划分当前数据集的最好特征,信息熵是信息论里面的概念,是信息的度量方式,不确定度越大或者说越混乱,熵就越大。在建立决策树的过程中,根据特征属性划分数据,使得原本“混乱”的数据的熵(混乱度)减少,按照不同特征划分数据熵减少的程度会不一样。在ID3中选择熵减少程度最大的特征来划分数据,也就是“最大信息熵增益”原则。
由于决策树会根据最大信息增益来对结点进行划分,因此信息增益的计算尤为重要,公式如下:
注明:p(i)为某种情况出现的概率值,Info(D)为整体的信息熵,InfoA(D)表示在选取属性A作为节点对整体进行划分后信息熵值,Gain(A)为属性A的信息增益大小。