目录:
- 决策树概述
- 特征选取
- ID3决策树算法
- Python实现ID3 决策树
决策树概述
分类决策树模型时一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(圆点)和叶结点(方框),内部结点表示一个特征或属性,叶结点表示一个类别。
根节点包含样本全集,从根节点到每个叶节点的路径对应了一个判定测试序列,其基本流程遵循简单而直观的“分而治之”的思想。
- 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失值不敏感,可以处理不相关特征数据。
- 缺点:可能会产生过度匹配的问题。
- 使用数据类型:数值型和标称型。
决策树的生成是一个递归的过程。导致递归结束的情况有三种:
- 当前节点包含的样本全属于同一类别
- 当前样本属性集为空,或者当前所有样本在所有属性上取值相同
- 当前节点包含的样本集为空
第一种情况很好理解。第二种情况当程序遍历完所有划分样本数据的属性后,没有属性可以划分;或者样本的所有属性取值都相同,但是此时样本的类别可能不同,我们将该结点设定为所含样本最多的类别。第三种情况也不难理解,不过对第三种情况的处理,是将该结点的类别设定为其父结点所含样本最多的类别。
决策树学习常用的算法有ID3、C4.5与CART
特征选取:
信息熵(information entropy),是衡量样本集合纯度的最常用的一种指标。
条件熵
信息增益:特征A对训练数据集D的信息增益
信息增益表示由于特征A而使得对数据集的分类不确定性减少的程度。
根据信息增益的特征选取准则是:对训练数据集D,计算其每个特征的信息增益,比较大小,选择信息增益最大的特征作为划分子集的依据。
ID3决策树算法:
ID3算法的核心是在决策树各个结点上应用信息增益准则
具体的算法:
输入:训练集D和属性集A;
输出:决策树T
① 从根结点开始,计算所有特征属性的信息增益;
② 选择信息增益最大的特征属性作为最优划分属性,由该特征的不同取值建立子结点;
③ 递归调用1,2,直到递归结束;
④ 输出决策树。
Python实现ID3决策树:
输入样本集和特征集:
def
计算经验熵:
from
计算最大信息增益的特征属性:
def
去除特征,划分子集
#按照给定特征划分数据集
构造决策树:
def
参考文献:
《机器学习》周志华著
《统计学习方法》李航著
《machine learning in action》Peter Harrington