决策树原理
适用场景:决策树能够生成清晰的基于特征(feature)选择不同预测结果的树状结构,希望更好的理解手上的数据的时候往往可以使用决策树,在实际应用中,受限于它的简单性,决策树更大的用处是作为一些更有用的算法的基石,例如:随机森林。
决策树优缺点
优点:
- 计算复杂度不高,输出结果易于理解,
- 对中间值的缺失不敏感,
- 可以处理不相关特征数据。
缺点:可能会产生过度匹配问题。
适用数据类型:数值型和标称型。
决策树的一般流程
- 收集数据:可以使用任何方法
- 准备数据:树构造算法只适用于标称型数据,因此数值型数据必须离散化
- 分析数据:可以使用任何方法,构造树完成之后,我们应该检查图像是否符合预期
- 训练算法:构造树的数据结构
- 测试算法:使用经验树计算错误率
- 使用算法:此步骤可以适用于任何监督学习算法,而使用决策树可以更好地理解数据的内在含义
创建分支的伪代码函数createBranch()如下所示:
检测数据集中的每个子项是否属于同一分类:
If so return 类标签;
Else
寻找划分数据集的最好特征
划分数据集
创建分支节点
for 每个划分的子集
调用函数createBranch并增加返回结果到分支节点中
return 分支节点
信息增益
熵定义为信息的期望值,在明晰这个概念之前,我们必须知道信息的定义。如果待分类的事 务可能划分在多个分类之中,则符号xi的信息定义为
其中p(xi)是选择该分类的概率。
为了计算熵,我们需要计算所有类别所有可能值包含的信息期望值,通过下面的公式得到:
计算给定数据集的香农熵
划分数据集
按照给定特征划分数据集
选择好的数据集划分方式
递归构建决策树
创建树的函数代码
使用文本注解绘制树节点
获取叶节点的数目和树的层数
plotTree函数
使用决策树的分类函数
使用pickle模块存储决策树