一 基本信息
决策树是一种常见的机器学习算法。它是基于树的结构来进行决策,这很符合我们人类面临问题时候的处理机制。
包括:一般一棵决策树包括一个根节点、若干内部节点和叶节点。叶节点对应着决策结果。
目的:产生一棵泛化能力强,对处理未见示例能力强的决策树。决策树学习的本质是从训练数据中归纳出一组分类规则,与训练数据集不相矛盾的决策树可能会有很多个,我们需要一个与训练数据矛盾较小的决策树,同时具有很好的泛化能力。
决策树的学习算法通常是一个递归的选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集都有一个最好的分类过程。决策树的学习算法更像是从一堆训练数据中训练出一个模型,减少数据的不确定性。比如给我们一批训练数据,我们如何从训练数据中发现规律,为什么数据被分为不同的类别,是什么决定了分类。如何能正确的为新数据分类。但是仅凭给定的数据,去直接判断类别是随机的,是存在不确定性的,如何消除不确定性呢?不断引入信息,那什么是信息呢?特征是信息,我们可以借助数据的特征,那么借助数据的哪些特征呢?能最大消除不确定性的特征。根据这个特征对数据集进行切分。之后呢,再找能够最大消除各个被切分的数据集不确定性的各自的特征。如此循环下去直到所有的样本找到正确的标签(分类),这样决策树就诞生了。
在决策树中,消除不确定的方法常用的有三种:ID3、C4.5、CART,他们分别采用的是信息增益、信息增益率和基尼指数
二 基本流程:
输入:训练数据集D,特征集合A,阈值ϵ
输出:决策树T
过程:1 判断数据集D中所有样本是否属于同一个类别Ck,如果是则返回单节点树T,标记类别为Ck。
2 判断特征集合A是否为空,若为空,则将数据集D中样本数最大的类Ck作为该节点的类标记
3 计算A中各特征对数据集D的信息增益,选择信息增益最大的特征Ag。
4 如果Ag的信息增益小于阈值ϵ(预剪枝),则T为单节点树,将D中样本数最大类Ck最为该节点的类标记。
5 否则,根据特征Ag的特征值切分数据集D。循环切分后数据集Di,如果切分的数据集Di为空,则标记为数据集D中样本最多的类。如果不为空,则以Di为数据集,以{A-Ag}为特征集,递归的调用1-5步。
上面的基本流程是ID算法的,采用的信息增益去选取特征,而C4.5采用的事信息信息增益率,CART采用的基尼指数。(本篇文章具体介绍信息增益、信息增益率与基尼指数的计算方法)
想到了一个小?,有一袋子粮食,里面有玉米、黄豆、红豆、绿豆、芝麻和菜籽,要用筛子分开这一袋子粮食,倒入对应的粮食袋子里。有筛子孔从大到小的三个筛子如下图所示:一号筛子的孔大小正好介于玉米与黄豆之间,二号筛子孔介于黄豆与红豆之间,三号筛子介于红豆与绿豆之间,四号筛子孔介于绿豆与芝麻之