决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建。
1 构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
2 如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。
3 如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如果递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。
4 每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。
如何切分特征(选择节点)问题:
根节点的选择该用哪个特征呢?接下来呢?如何切分呢?
想象一下:我们的目标应该是根节点就像一个老大似的能更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家了。
目标:通过一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出来最好的那个当成根节点,以此类推
熵是表示随机变量不确定性的度量(解释:说白了就是物体内部的混乱程度,比如杂货市场里面什么都有那肯定混乱呀,专卖店里面只卖一个牌子的那就稳定多啦)
公式: H(X)=-Σpi * logpi, i=1,2, .., n0
一个栗子:
A集合[1,1,1,1,1,1,1,1,2,2]
B集合[1,2,3,4,5,6,7,8,9,1]
显然A集合的熵值要低,因为A里面只有两种类别,相对稳定一些,而B中类别太多了,熵值就会大很多。(在分类任务中我们希望通过节点分支后数据类别的滴值大还是小呢?)
表示特征X使得类Y的不确定性减少的程度(分类后的专一性,希望分类后的结果是同类在一起)
下面介绍一个决策树的构造方法,下面的图来自这个视频4-决策树构造实例_哔哩哔哩_bilibili
首先找到划分根节点的属性,分别计算4个属性的信息增益
先算出关于天气这个属性,各个值的熵
然后再算出关于天气的信息增益
同理计算其他三个特征的信息增益,选择信息增益最大的特征划分根节点,,,,然后一次划分每个子树,直至不能划分(即每个叶子节点的熵为0,或者到达了预设条件)
ID3往往选择分类水平多的特征作为划分特征;不能处理连续变量,需要对连续变量进行离散化;对缺失值敏感;没有剪枝设置,容易过拟合。
C4.5算法中,增益率准则可分类水平少的特征有所偏好,校正了ID3算法中的不足。增加了连续变量处理手段,将连续变量处理为N-1个二分方案,找到增益率最大的切分点。
分类树:Gini准则
回归树:对到达叶节点的样本使用平均值作出预测,用最小平方误差来选择最优切分点和最优划分变量