决策树(decision tree)是一类常见且基础的机器学习方法,其是基于特征对数据实例按照条件进行不断划分,最终实现分类或回归的目的。其分类过程就是if-then的规则组合过程。
决策树是通过树形结构来对数据进行分类,其树形结构包括结点和有向边,对于结点的类型分为内部结点和叶子结点,内部结点表示特征,叶子结点表示类别。
由于在所有的决策树中找到最优的决策树是一个NP-hard问题,故一般都是采用递归地方式进行选择最优特征,并根据该特征分割训练集,达到构建决策树的目的。
具体过程:
从根结点开始选择一个最优特征进行对数据集的划分为不同的子集,依次同理处理结点即可,直至所有的子集能够被正确分类。但是这个方式有一个缺点,就是容易造成过拟合的现象。故需要使用正则化项对其进行修正,正则化项对应的实际操作为对构建好的决策树进行剪枝。但剪枝的方法分为预剪枝和后剪枝。
构建完整决策树模型的流程:特征选择、决策树构建和决策树剪枝
那么决策树的特征怎么选择呢?
决策树的特征选择方法和对应的决策树算法有信息增益(ID3)、信息增益比(C4.5)和基尼指数(Gini index,CART)
选择的特征要具有足够强的分类能力,否则的话,该特征对数据集的分类能力就是低下的。
那么如何从数据集挑选出最优特征呢?这就涉及到之前提及的三个方法:信息增益、信息增益比和基尼指数(Gini index)
在对这三种方法进行展开之前,先进行对信息熵的知识学习
信息熵(information entropy),熵是一种描述随机变量不确定性的度量方式,在描述样本集合的纯度时也可以使用,信息熵越低,样本的不确定性越小,那么样本的纯度就越高。这个信息熵的计算公式(香农信息熵):
①单变量信息熵
②条件信息熵
③多变量联合熵
一、特征选择
决策树的特征选择方法和对应的决策树算法有信息增益(ID3)、信息增益比(C4.5)和基尼指数(Gini index,CART)
A.信息增益(仅包括决策树生成)
信息增益是用于描述目标类别确定性增加的量,特征的信息增益越大,目标类别被确定的概率就越大。即分类能力越强。该方法常使用的算法是ID3。
B.信息增益比(仅包括决策树生成)
由于信息增益本身在选择特征时,偏向于使得信息增益大的特征,故对于有的特征可以使得信息增益变大,但是本身很难起到分类作用的问题,这里就引入了信息增益比的概念。
信息增益比的定义是将其信息增益与数据集本身关于某一特征取值的熵的比值(即信息增益比=信息增益/特征本身的熵,通过分母惩罚多值特征,避免决策树出现过拟合的现象):
C.基尼指数(Gini index,包括决策树生成和剪枝)
基尼指数是决策树(CART算法,Classification and regression tree,既可用于分类也可用于回归)中用于衡量数据集不纯度的指标,其值越小则说明数据纯度越高,即不确定性越小,对样本的分类能力就越强。其基于概率分布的基尼指数公式定义如下:
若数据集根据某一特征的取值进行数据集的划分为两部分,那么在这个特征下的基尼指数公式为:
二、决策树构建
使用ID3、C4.5、CART算法来实现对决策树的生成
三、决策树剪枝
对使用CART算法来实现决策树的方式,进行剪枝,剪枝分为预剪枝(pre-pruning)和后剪枝(post-pruning)。预剪枝就是在决策树生成过程中提前停止树的增长的一种剪枝算法,其就是在对树结点进行分裂之前,对模型泛化能力进行计算,如果其分类能提升模型的泛化能力则分裂(生长),否则就不分裂(停止生长),该算法高效,适用于大规模求解问题,但是在一定程度上存在欠拟合的风险,导致决策树生长不够完全。故在实际应用中常使用后剪枝的方法,通过计算子树的损失函数来实现剪枝并得到一个子树序列,然后通过交叉验证的方法从子树序列中选取最优子树。CART算法中剪枝的方法为后剪枝。