决策树详解&&python基于Kaggle的Titanic数据实现决策树分类
前段时间忙了好多东西,快放暑假了,有几门课程要结课交大作业,然后又准备了一下实习的面试,还有一个目标检测的比赛项目要做,初定的是用Mask-RCNN模型来做,在gpu上跑真的各种坑,给定的coco数据格式怎么都规范不了,如果后期不换模型我就再写一篇博客排排坑,不过概率可能也不是太大。今天来再看一遍机器学习最基础的决策树算法,然后做一个用决策树去分析泰坦尼克号成员生还概率的小实验,这就是今天博客的全部内容了。程序员的生命的意义在于控制输入和输出的相对平衡~
一 决策树算法详解
1.前期准备
决策树是属于机器学习监督学习分类算法中比较简单的一种,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶结点则对应从根节点到该叶节点所经历的路径所表示的对象的值。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 是通过一系列规则对数据进行分类的过程。
决策树是一种基本的分类与回归方法。决策树模型呈树形结构,在分类问题中,表示基于特征对样本进行分类的过程。目前常用的决策树算法有ID3算法、改进的C4.5算法和CART算法,本章将会介绍决策树之ID3算法。
实验目的准备
- 学习了解决策树概念、特点
- 学习掌握ID3算法原理、特点、与决策树的流程
- 学习掌握信息熵、条件熵、信息增益的定义、计算公式
- python实现ID3算法的详解,以及基于Kaggle的Titanic数据实现决策树分类
实验准备
服务器端:python3.6以上、Jupyter Notebook 客户端:Google Chrome浏览器
2.决策树概述
2.1 决策树
决策树与树结构类似,具有树形结构。每个内部节点表示一个属性的测试,每个分支代表一个测试输出,每个叶子节点代表一种类别。如上图一样。 分类树(决策树)常用于机器学习的分类,是一种监督学习方法。由树的分支对该类型的对象依靠属性进行分类。每个决策树可以依靠对源数据库分割进行数据测试,递归修剪树。知道一个单独的类被应用于某一分支,不能进行分割,递归完成。
特点:
- 多层次的决策树形式易于理解。
- 只适用于标称行数据,连续性数据处理的不好。
2.2 ID3算法原理
在信息论中,期望信息越小,那么信息增益就越大,从而纯度就越高。ID3算法的核心是信息墒,在决策树各级节点上选择属性时,用信息增益作为属性的选择标准,使得在每一个非节点进行测试时,能获得关于被测试记录最大的类别信息。认为增益高的是好属性,易于分类。每次划分选取信息增益最高的属性作为划分标准,进行重复,直至生成一个能完美分类训练样历的决策树。
具体方法是:从根结点(root node)开始,对结点计算所有可能的特征的信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子节点;再对子结点递归地调用以上方法,构建决策树;直到所有特征的信息增益均很小或没有特征可以选择为止,最后得到一个决策树。ID3相当于用极大似然法进行概率模型的选择。
简单理解:
如上图,
前两个是属性,可以记为[‘no surfacing’,‘flippers’]。则可以简单的构建决策树如下:
根据两个属性可以判断是否属于鱼类。
2.3 ID3的特点
优点:理论清晰,方法简单,学习能力较强
缺点
- 信息增益的计算比较依赖于特征数目比较多的特征
- ID3为非递增算法
- ID3为单变量决策树
- 抗糙性差
2.4信息熵
在概率论中,信息熵给了我们一种度量不确定性的方式,是用来衡量随机变量不确定性的,熵就是信息的期望值。若待分类的事物可能划分在N类中,分别是 𝑥1,𝑥2,……,𝑥𝑛,每一种取到的概率分别是𝑝1,𝑝2,……,𝑝𝑛,那么数据集D的