机器学习中决策数算法算是比较常见的分类和回归算法之一,但是我们在怎么来理解决策树的算法呢?
接下来我们从以下几点做一下学习和总结:
首先,什么是决策树?
决策树
决策树是一种树形结构,其中每个内部节点表示一个属性上的测试,每个分支代表一个测试输出,每个叶节点代表一种类别。 构建决策树采用贪心算法,只考虑当前纯度差最大的情况作为分割点。常见的决策树算法有C4.5、ID3和CART。
其次,决策树的优缺点?
优点包括以下:
1、• 决策树易于理解和实现. 人们在通过解释后都有能力去理解决策树所表达的意义。
2、数据准备比较简单,不需要去除多余的或者空白的属性。
3、决策树的时间复杂度是预测数据点的对数,所以能够在较短时间内对大型数据源做出可行且效果良好的结果
4、效率高,决策树只需一次构建,重复使用,每次预测的最大计算次数不会超过决策树的深度。
5、对缺失值不敏感
缺点包括一下几点:
1、决策树的结果可能是不稳定的,因为在数据中一个很小的变化可能导致生成一个完全不同的树,这个问题可以通过使用集成决策树来解决
2、处理特征关联性较强的数据时表现的不是很好
3、当类别太多时,错误会增加的更快。
4、对连续性字段比较难预测。
决策树的实现算法:
ID3算法:
ID3算法是一种贪心算法,理解ID3,需要以信息论为基础,这里简单介绍三个概念:信息、熵、信息增益
信息,什么是信息呢,我的理解就是一种状态或者一种结果,就是我们用来消除事物随机不确定性的东西,那该怎么用数学表达式来形容呢?这里信息被表示为:
这就是当x发生时蕴含的信息其中p(xi)表示X=xi时发生的概率
有了信息的概念,我们就比较容易来理解熵的定义了,熵,是表示混乱的状态,也是指事件的不确定性,同样我们也可以用数学表达式来对熵这个概念做一个定义:
熵只依赖X的分布,和X的取值没有关系,熵是用来度量不确定性,当熵越大,概率说X=xi的不确定性越大,反之越小,在机器学期中分类中说,熵越大即这个类别的不确定性更大,反之越小,当随机变量的取值为两个时,熵随概率的变化曲线如下图:
当p=0或p=1时,H(p)=0,随机变量完全没有不确定性,当p=0.5时,H(p)=1,此时随机变量的不确定性最大
值得说明的是,为了引入信息增益的概念,这里还需要提及一个概念,条件熵,以下面的公式为例:
这里的条件熵就是指随机变量X给定的情况下,随机变量Y的熵,对定义的描述为:X给定情况下,Y的条件概率分布的熵对X的数学期望。
然后我们就可以得出信息增益的概念了,那么什么是信息增益呢,信息增益是决策树算法中用来选择特征的重要指标,信息增益越大,这个特征的选择性越好,在概率中的定义为:待分类的集合的熵与选定某个特征的条件熵之差。用数学 表达式表示为:
到这里我们就可以来说明决策树的生成了。决策树就是,选择信息增益最大的作为根节点,然后根节点确定以后,再选择信息增益最大的点作为后续的节点,以此类推。
决策树的构建过程是一个递归的过程,那么如果没有停止条件,将会一直无限递归下去,问题来了,决策树的停止条件是什么呢?
1、大于决策树最大深度max_depth
2、小于内部节点再划分需要的最小样本数min_sample_split,可以设置该值的大小。
3、小于叶节点最小样本数min_sample_leaf
4、大于最大叶节点数max_leaf_nodes
选择决策树时会出现的问题:
会出现过拟合现象,什么事过拟合现象,我的微博里有一篇单独的介绍,大家可以看一下,这里不在细说,我们主要将一下问题出现的原因:
1、噪音数据:训练数据中存在噪音数据,决策树的某些节点是由噪音数据作为分割标准,导致决策树无法代表真实数据
2、缺少代表性数据:训练集中没有包含所有代表性的数据,导致某一类数据无法很好的匹配。
优化方案:修剪枝叶、运用随机森林
C4.5算法:
C4.5算法是基于ID3算法,对ID3算法的进一步优化和改进
1、利用信息增益率来选择属性,克服了利用信息增益选取属性时偏向选取值较多的属性的不足。
2、在树构造过程中进行剪枝
3、能够完成对连续属性的离散化
4、能够对不完整数据进行处理
但是C4.5也有不足之处,缺点是,在构造树是需要对数据集进行多次顺序扫描和排序,因此导致算法低效,C4.5值适合于能够长期驻留在内存中的数据集,当训练集大的内存无法容纳时,无法运行。
C5.0算法:
C5.0算法是对C4.5算法的优化,主要是在效率和内存上的优化和提升,此外C5.0在选择属性时,运用了信息熵的下降速度来作为属性选择的依据。