在前面我们学习了KNN是一种基本的分类和回归方法。今天我们继续来学习另一个也能进行分类和回归的方法——决策树(Decision Tree)。那么对此,决策树到底是如何做出决策的呢?请接下来往下看——
思维导图(内容概览)
衡量标准
对于一个统计学习方法,我们需要从模型+决策+算法逐步入手。但是在认识模型之前,特征的选取又是显得特别重要,在决策树法中,存在一些比较重要的概念,即选取特征的标准。
-
评估离散程度常用的有方差、熵、基尼指数
- 方差:适用于连续随机变量,数值有实际意义。
- 熵:适用于离散随机变量,数值没有实际意义。
- 基尼指数:适用于离散随机变量,数值没有实际意义。
-
熵:用于表示随机变量的不确定(混乱)程度,记作
[H(X) = -sum_{i=1}^n p_i log p_i ] -
条件熵:在一直随机变量X的条件下,随机变量Y的不确定性(混乱程度)记作
[H(Y|X) = sum_{i=1}^np_iH(Y|X=x_i) ] -
信息增益:在得知特征X的信息而使得类Y的信息的不确定性减少程度,记作
[g(D, A) = H(D) - H(D|A) ] -
信息增益比:
-
信息增益的缺陷:偏向于选择取值较多的特征。
-
概念:对于A特征的信息增益比,就是信息增益与训练数据集关于特征A的熵之比,记作
[g_r(D, A) = frac{g(D, A)}{H_A(D)} ]
-
-
基尼指数(K为类别数量,Pk为属于k类的概率)定义为:
[Gini(p) = sum_{k=1}^Kp_k(1-p_k) = 1 - sum_{k=1}^Kp^2_k ] -
在特征A的条件下,集合D的基尼指数定义为
决策树模型
定义:分类决策树模型是一种描述对实例进行分类的树形结构。决策树由节点和有向边组成,结点有两种类型:内部结点和叶结点。内部结点表示一个特征或属性,叶结点表示一个类。用决策树分类,从根结点开始,对实例的某一个特征进行测试,根据测试结果,将实例分配到其子结点;这时,每一个子结点对应着该特征的一个取值。如此递归下去,直至到达叶结点。最后将所有实例进行分类。
决策树模型示意图:
损失函数和剪枝(Pruning)策略
在决策模型中,会存在一个很重要的步骤,那就是剪枝,剪枝能决定最后的决策树的样子。
当遇到一系列的连续值,这是该怎么办?此时需要将连续值进行离散化,也即是需要选取连续值的分界点。
- 剪枝的原因:决策树的过拟合风险过大时,每个叶子节点就分成了一个数据,结果不太如意。
- 剪枝策略:预剪枝,后剪枝。
-
- 预剪枝:边建立决策树边进行剪枝的操作(更加实用),比如在选择若干个特征进行先构造决策树。限制深度,叶子节点个数、叶子样本点数、信息增益量等;
- 后剪枝:边建立完决策树后进行剪枝操作。通过一定的衡量标准,叶子节点越多,损失越大。
DT模型是以极小化决策树的整体损失函数或代价函数,可定义如下:
- 前半部分表示对训练数据的拟合程度。
- 后半部分表现模型复杂程度。
- 用于对树规模的惩罚程度,取值为0是表示只考虑模型与训练数据的拟合程度,不考虑模型复杂度,取值正无穷时则刚好相反。
决策树的生成算法
-
如何切分特征
-
- 根节点的选择应该用哪一个特征?该如何切分?
- 根节点的目标是通过一种衡量标准,来计算通过不同特征进行分支选择后的分类的情况,找出最好的那个作为根节点,以此类推。
-
类别:每一种算法不同,衡量标准也不相同。
-
-
**ID3算法:信息增益 **
-
C4.5:信息增益率(解决了ID3的问题,考虑自身的熵)
-
CART:使用GINI系数作为衡量标准
-
GINI系数:
[G_{ini}(p) = sum_{k=1}^k{p_k(1-p_k)} = 1-sum_{k=1}^Kp_k^2 ]
-
ID3算法
ID3算法的核心是在决策树各个节点上运用信息增益准则选择特征,递归构建决策树。
算法描述:
C4.5算法
C4.5算法和ID3算法相似,并对ID3算法做了改进。其核心是采用信息增益比来选取特征。
CART算法
CART算法包含两步:决策树生成和决策树剪枝。
CART生成
决策树生成就是递归构建二叉决策树的过程。对回归树使用平方误差最小化准则,对分类书用基尼指数(GINI INDEX)组笑话准则,进行特征选择,生成二叉树。
-
回归树的生成
通常使用最小二乘回归树生成算法进行生成回归树。
[输入:训练数据集D;\ 输出:回归树f(x).\ 在训练集所在的输入空间中,递归地将每个区域划分为两个子区域并决定每个子区域上的输出值,构建决策树:\ (1) 选择最优的切分变量j与切分点s,求解 \ min_{j,s}[min_{c_j}sum_{x_jin R_1(j,s)}(y_i-c_i)^2+min_{c_j}sum_{x_jin R_2(j,s)}(y_i-c_i)^2],遍历j,对j的切分点s,选择最小的(j,s);\ (2) 用选定的对(j,s)划分区域并决定相应的输出值:\ R_1(j,s)={x|s(j) leq s},R_2(j,s)={x|s(j) > s} hat{c_m}=frac{1}{N_m}sum{y_i},xin R_m,m=1,2 \ (3) 继续对两个子区域调用步骤(1),(2),直至满足条件;\ (4)将输入空间划分成M个区域R_1,R_2,R_3...R_M,生成决策树。\ f(x)=sum^M_{m=1}hat{c_m}I(xin R_m) ] -
分类树的生成
分类树用基尼指数选择最优特征,同时决定该特征的最优二值切分点。
CART生成算法描述:
[输入:训练数据集D,停止计算的条件;\ 输出:CART决策树.\ 根据训练数据集,从根结点开始,递归地对每一个结点进行如下操作,构建决策树:\ (1)设结点地训练集为D,计算现有特征对该数据集的基尼指数。此时,对每一个特征A,对可能取得每一个值a,\ 根据样本点对A=a得测试为"是"或"否"将D分割成D_1和D_2,计算A=a得基尼指数。\ (2)在所有可能得特征A和可能得切分点a中,选择最小的基尼指数得特征以及对应的切分点。\ 由此,从现结点生成两个子结点,将训练集依特征分配到两个子结点中去。\ (3)对两个子节点递归调用(1),(2),直至满足条件;\ (4) 生成CART决策树。 ]