SIGAI机器学习第六集 决策树

讲授决策树的基本概念,分类与回归树的原理,决策树的表示能力,决策树的训练算法,寻找最佳分裂的原理,叶子节点值的标记,属性缺失与替 代分裂,决策树的剪枝算法,决策树应用。

非常直观和易于理解的机器学习算法,最符合人的直观思维,因为生活中很多时候做决策就是用这种树状结构做决定的。

大纲:

基本概念
分类与回归树
训练算法
寻找最佳分裂
属性缺失与替代分裂
过拟合与剪枝
实验环节
实际应用

基本概念:

①树是一种分层的数据结构,家谱、书的目录就是一棵树的结构。

②树是一个递归的结构,树的每个子节点,以它为根同样是一棵树,所以说树里边的很多算法是用递归来实现的。

有一种特殊的树叫二叉树,每个节点最多只有两个孩子节点,左子节点和右子节点,编程的时候很容易实现,树在编程实现的时候是用指针来实现的,非二叉树预留多少空间存储子节点的指针不好确定,所以编程的时候用的一般是二叉树。

非叶子节点叫做判定节点,叶子节点是决策结果。决策树可以用来做分类,也可以用来做回归。

比如医生看病可能也是用一棵决策树来判定的,这棵判定树的规则是他学习的时候和很多年经验的总结,它的特征向量就是一些体检的指标,如体温、白细胞数量、红细胞数量等等。

整个机器学习和模式识别里边特征分两种类型,一是类别型特征,是不能比较大小的,如是否有房产证,二是数值型特征,是可以比较大小的,如收入多少。

决策树整个判定过程是从根节点开始,依次拿一个特征进行比较,日常生活中这种判定规则是人工总结出来的,决策树是一种机器学习算法,和这个人工的决策有本质的不同,虽然也是判定树,它是通过训练得到的,给定一组样本((x1,y1),(x2,y2),...),可以自动学习出一套规则来做预测,内部节点画为矩形叶子节点画成椭圆形。

决策树是一种基于规则的方法,用一组嵌套的规则进行预测,在决策节点处,根据判断结果进入一个分支,反复执行这种操作直到到达叶子节点,得到预测结果。这些规则通过训练得到,而不是人工制定的。
决策节点:在这些节点处需要进行判断以决定进入哪个分支,如用一个特征和设定的阈值进行比较。决策节点一定有两个子节点,是内部节点。
叶子节点:表示最终的决策结果,没有子节点。对于分类问题,叶子节点中存储的是类别标签。

分类与回归树:

决策树是一个分层结构,可以为每个节点赋予一个层次数。根节点的层次数为0,子节点的层次数为父节点层次数加1。树的深度定义为所有节点的最大层次数,层次数也表示需要比较的次数。
典型的决策树有ID3,C4.5,CART(Classification and Regression Tree,分类与回归树)等,它们的区别在于树的结构(二叉树还是多叉树)与构造算法(树的训练算法),树训练好之后,预测算法都是一样的,即从根节点到叶子节点判定出结果。

CART分类与回归树是一种二叉树,既支持分类问题,也可用于回归问题。ID3、C4.5是很老的机器学习算法了。

分类树的映射函数是多维空间的分段线性划分,即用平行于各坐标轴的超平面对空间进行切分:

回归树的映射函数是分段常数函数(比分段函数简单,是分段常数函数,某个区间内取某个常数值),决策树是分段线性函数而不是线性函数,它具有非线性建模的能力。

只要划分的足够细,分段常数函数可以逼近闭区间上任意函数到任意指定精度,因此决策树在理论上可以对任意复杂度的数据进行拟合。如把空间分的非常细,就像微积分中的积分一样,在一个小区间内用一个常数值代替,也就是用阶梯函数代替任意一个连续函数都可以达到指定的精度,只要划分的足够细就可以了,即决策树在理论上可以对任意复杂度的数据进行拟合。理论上很美好,实现起来不尽人意,会面临维数灾难,空间维数很高的时候分的很细的话后边会过拟合、泛化性能会急剧下降,虽然理论上可行,但实际运行的时候精度并不高。
对于分类问题,只要同一地方不存在两个样本,决策树足够深的话,反复划分的话它能够把所有的训练样本集正确的分类。对于分类问题,如果决策树深度够大,它可以将训练样本集的所有样本正确分类。

训练算法:

预测算法:从根节点开始,反复用树节点里边存储的规则判定,决定进入左子树还是右子树,直到到达叶子节点得到预测结果。核心问题是这个树怎么建立起来的?是通过训练得到的,训练的依据是(对于有监督的机器学习算法,通用的依据是让它在训练集上的误差最小化),也就是说,让决策树对训练样本都尽可能正确的分类,那么这个树就是好的树。
决策树的训练取决于哪些问题:树是递归结构,所以树是递归的建立起来的。首先根节点是怎么建立的,用所有样本训练根节点,找到一个分裂规则(训练的时候叫做分裂规则,预测的时候叫判定规则),把样本集一分为二,然后用第一个子集训练左边的决策树,第二个子集训练右边的决策树,这样就可以把树创建出来了,这个一个递归的结构。

有几个问题:

①每个决策节点上应该选择哪个分量做判定?这个判定会将训练样本集一分为二,然后用这两个子集构造左右子树。

②判定的规则是什么?即满足什么条件时进入左子树分支。对数值型变量要寻找一个分裂阈值进行判断,小于该阈值进入左子树,否则进入右子树。对于类别型变量则需要为它确定一个子集划分,将特征的取值集合划分成两个不相交的子集,如果特征的值属于第一个子集则进入左子树,否则进入右子树。

③何时停止分裂,把节点设置为叶子节点?对于分类问题,当节点的样本都属于同一类型时停止;对于回归问题,如果这个节点它的训练样本都取同一个值的话,就用这个值代替所有的样本,没有误差,停止分裂。但这样可能会导致树的节点过多、深度过大,产生过拟合问题。为了防止过拟合,一种方法是当节点中的样本数小于一个阀值时停止分裂,另一种是当树达到指定的深度就不让它生长了。

④如何为每个叶节点赋予类别标签或者回归值?即到达叶子节点时样本被分为哪一类或者赋予一个什么实数值。

总共就几个问题,一是递归分裂,核心是怎么寻找一个最佳的分裂出来,就是在训练样本集上通过一次划分之后让创建出来的树对样本集尽可能的分类会回归。二是什么时候停止分裂。三是叶子节点值设置为多少合适。总共叶子节点、内部节点两种情况,以树的深度和整体其他一些控制,这就构成了决策树训练算法的核心。

递归分裂过程
1.用样本集建立根节点,找到一个判定规则,将样本集D分裂成D1和D2两部分,同时为根节点设置判定规则
2.用样本集D1递归建立左子树
3.用样本集D2递归建立右子树
4.如果不能再进行分裂,则把节点标记为叶子节点,同时为它赋值,训练过程在这一步就终止了,退回去再训练其他节点

寻找最佳分裂:

原文地址:https://www.cnblogs.com/wisir/p/11846900.html

时间: 2024-10-29 08:02:49

SIGAI机器学习第六集 决策树的相关文章

SIGAI机器学习第四集 基本概念

大纲: 算法分类有监督学习与无监督学习分类问题与回归问题生成模型与判别模型强化学习评价指标准确率与回归误差ROC曲线交叉验证模型选择过拟合与欠拟合偏差与方差正则化 半监督学习归类到有监督学习中去. 有监督学习大部分问题都是分类问题,有监督中的分类问题分为生成式模型和判别模型. 分类问题常用的评价指标是准确率,对于回归问题常用的评价指标是回归误差均方误差. 二分类问题中常为它做ROC曲线. 过拟合通用的解决手段是正则化. 算法分类: 监督信号,就是样本的标签值,根据知否有标签值将机器学习分类为有监

机器学习搭便车指南–决策树(1)

机器学习搭便车指南–决策树(1) 1. 决策树的基本概念 通常使用的分类回归树(class and regress tree)是一个二叉树.它的形式一般为:  决策树有两种节点: 中间节点和叶子节点. 每个中间节点有4个参数: a) 决策函数. 是一个特征的取值. 当特征小于等于这个值得时候决策路径走左边, 当特征大于这个值得时候决策树走右边. b) 不纯度值(impurity value). 是当前节点的不纯度值. 关于不纯度值得意义后面会讲到. c) 覆盖样本个数(n_samples). 是

Coursera机器学习-第六周-Advice for Applying Machine Learning

Evaluating a Learning Algorithm Desciding What to Try Next 先来看一个有正则的线性回归例子: 当在预测时,有很大的误差,该如何处理? 1.得到更多的训练样本 2.选取少量的特征 3.得到更多的特征项 4.加入特征多项式 5.减少正则项系数λ 6.增加正则项系数λ 很多人,在遇到预测结果并不理想的时候,会凭着感觉在上面的6个方案中选取一个进行,但是往往花费了大量时间却得不到改进. 于是引入了机器学习诊断,在后面会详细阐述, Evaluati

SIGAI机器学习第十九集 随机森林

讲授集成学习的概念,Bootstrap抽样,Bagging算法,随机森林的原理,训练算法,包外误差,计算变量的重要性,实际应用 大纲: 集成学习简介 Boostrap抽样 Bagging算法 随机森林的基本原理 训练算法 包外误差 计算变量的重要性 实验环节 实际应用 随机森林是一种集成学习的算法,构建在bootstrap采样基础之上的,bagging算法基于boostrap采样,与之对应的是boosting算法.随机森林是多颗决策树的集成,由于采用了bootstrip采样,在训练时有一部分样本

SIGAI深度学习第六集 受限玻尔兹曼机

讲授玻尔兹曼分布.玻尔兹曼机的网络结构.实际应用.训练算法.深度玻尔兹曼机等.受限玻尔兹曼机(RBM)是一种概率型的神经网络.和其他神经网络的区别:神经网络的输出是确定的,而RBM的神经元的输出值是不确定的,以某种概率取到某一个值.以另一种概率取到另一个值,神经元的输出值.各个神经元的输入值服从某种概率分布,所有神经元的输出值服从玻尔兹曼分布. 大纲: 玻尔兹曼分布 网络结构 计算隐藏单元的值 用于特征提取 训练算法 深度玻尔兹曼机 本集总结 玻尔兹曼分布: 玻尔兹曼分布是统计物理中的一种概率分

SIGAI机器学习第十八集 线性模型2

之前讲过SVM,是通过最大化间隔导出的一套方法,现在从另外一个角度来定义SVM,来介绍整个线性SVM的家族. 大纲: 线性支持向量机简介L2正则化L1-loss SVC原问题L2正则化L2-loss SVC原问题L2正则化SVC对偶问题L1正则化L2-loss SVC原问题多类线性支持向量机实验环节libsvm和liblinear的比较实际应用 线性支持向量机简介: 原文地址:https://www.cnblogs.com/wisir/p/11979508.html

SIGAI机器学习第二十四集 高斯混合模型与EM算法

讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法的基本思想簇之间距离的定义k均值算法的基本思想k均值算法的流程k均值算法的实现细节问题实验EM算法简介Jensen不等式EM算法的原理推导收敛性证明 聚类算法是无监督学习的典型代表,前边讲过的数据降维算法是无监督学习的另外一种典型代表. 原文地址:https://www.cnblogs.com/wi

SIGAI机器学习第二十五集 聚类算法2

讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用 课程大纲: 基于密度的聚类算法简介DBSCAN算法的核心思想基本概念定义算法的流程实现细节问题实验OPTICS算法的核心思想基本概念定义算法的流程根据排序结果生成聚类结果实验Mean Shift算法的核心思想核函数概率密度估计算法的流程谱聚类算法的核心思想基本概念定义算法的流程算法评价指标应用聚类算法总结 这节课讲,基于密度的聚类算法:DBSCA

用Python开始机器学习(2:决策树分类算法)

http://blog.csdn.net/lsldd/article/details/41223147 从这一章开始进入正式的算法学习. 首先我们学习经典而有效的分类算法:决策树分类算法. 1.决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归.不过对于一些特殊的逻辑分类会有困难.典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题. 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题.因此如何构建一棵好的决策树是研究的重点. J. Ross Q