决策树算法的实现
A. 决策树法的基本步骤
决策树是一种常用的机器学习算法,它可以用于分类和回归问题。下面是决策树算法的基本步骤:
1. 收集数据:收集一组带有标签的数据集,其中每个样本包含若干个特征和一个标签。特征是用于决策的信息,标签是我们需要预测的结果。
7. 调整参数:根据评估结果调整决策树的参数,如选择不同的特征选择方法、调整决策树的深度等。
8. 预测未知数据:使用调整后的决策树对新的未知数据进行预测。
B. 决策树的算法
C4.5算法继承了ID3算法的优点,并在以下几方面对ID3算法进行了改进:
1) 用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
2) 在树构造过程中进行剪枝;
3) 能够完成对连续属性的离散化处理;
4) 能够对不完整数据进行处理。
C4.5算法有如下优点:产生的分类规则易于理解,准确率较高。其缺点是:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。
具体算法步骤如下;
1创建节点N
2如果训练集为空,在返回节点N标记为Failure
3如果训练集中的所有记录都属于同一个类别,则以该类别标记节点N
4如果候选属性为空,则返回N作为叶节点,标记为训练集中最普通的类;
5for each 候选属性 attribute_list
6if 候选属性是连续的then
7对该属性进行离散化
8选择候选属性attribute_list中具有最高信息增益率的属性D
9标记节点N为属性D
10for each 属性D的一致值d
11由节点N长出一个条件为D=d的分支
12设s是训练集中D=d的训练样本的集合
13if s为空
14加上一个树叶,标记为训练集中最普通的类
15else加上一个有C4.5(R - {D},C,s)返回的点 背景:
分类与回归树(CART——Classification And Regression Tree)) 是一种非常有趣并且十分有效的非参数分类和回归方法。它通过构建二叉树达到预测目的。
分类与回归树CART 模型最早由Breiman 等人提出,已经在统计领域和数据挖掘技术中普遍使用。它采用与传统统计学完全不同的方式构建预测准则,它是以二叉树的形式给出,易于理解、使用和解释。由CART 模型构建的预测树在很多情况下比常用的统计方法构建的代数学预测准则更加准确,且数据越复杂、变量越多,算法的优越性就越显着。模型的关键是预测准则的构建,准确的。
定义:
分类和回归首先利用已知的多变量数据构建预测准则, 进而根据其它变量值对一个变量进行预测。在分类中, 人们往往先对某一客体进行各种测量, 然后利用一定的分类准则确定该客体归属那一类。例如, 给定某一化石的鉴定特征, 预测该化石属那一科、那一属, 甚至那一种。另外一个例子是, 已知某一地区的地质和物化探信息, 预测该区是否有矿。回归则与分类不同, 它被用来预测客体的某一数值, 而不是客体的归类。例如, 给定某一地区的矿产资源特征, 预测该区的资源量。
C. 决策树算法-原理篇
关于决策树算法,我打算分两篇来讲,一篇讲思想原理,另一篇直接撸码来分析算法。本篇为原理篇。
通过阅读这篇文章,你可以学到:
1、决策树的本质
2、决策树的构造过程
3、决策树的优化方向
决策树根据使用目的分为:分类树和回归树,其本质上是一样的。本文只讲分类树。
决策树,根据名字来解释就是,使用树型结构来模拟决策。
用图形表示就是下面这样。
其中椭圆形代表:特征或属性。长方形代表:类别结果。
面对一堆数据(含有特征和类别),决策树就是根据这些特征(椭圆形)来给数据归类(长方形)
例如,信用贷款问题,我根据《神奇动物在哪里》的剧情给银行造了个决策树模型,如下图:
然而,决定是否贷款可以根据很多特征,然麻鸡银行选择了:(1)是否房产价值>100w;(2)是否有其他值钱的抵押物;(3)月收入>10k;(4)是否结婚;这四个特征,来决定是否给予贷款。
先不管是否合理,但可以肯定的是,决策树做了特征选择工作,即选择出类别区分度高的特征。
由此可见, 决策树其实是一种特征选择方法。 (特征选择有多种,决策树属于嵌入型特征选择,以后或许会讲到,先给个图)即选择区分度高的特征子集。
那么, 从特征选择角度来看决策树,决策树就是嵌入型特征选择技术
同时,决策树也是机器学习中经典分类器算法,通过决策路径,最终能确定实例属于哪一类别。
那么, 从分类器角度来看决策树,决策树就是树型结构的分类模型
从人工智能知识表示法角度来看,决策树类似于if-then的产生式表示法。
那么, 从知识表示角度来看决策树,决策树就是if-then规则的集合
由上面的例子可知,麻鸡银行通过决策树模型来决定给哪些人贷款,这样决定贷款的流程就是固定的,而不由人的主观情感来决定。
那么, 从使用者角度来看决策树,决策树就是规范流程的方法
最后我们再来看看决策树的本质是什么已经不重要了。
决策树好像是一种思想,而通过应用在分类任务中从而成就了“决策树算法”。
下面内容还是继续讲解用于分类的“决策树算法”。
前面讲了决策树是一种 特征选择技术 。
既然决策树就是一种特征选择的方法,那么经典决策树算法其实就是使用了不同的特征选择方案。
如:
(1)ID3:使用信息增益作为特征选择
(2)C4.5:使用信息增益率作为特征选择
(3)CART:使用GINI系数作为特征选择
具体选择的方法网上一大把,在这里我提供几个链接,不细讲。
但,不仅仅如此。
决策树作为嵌入型特征选择技术结合了特征选择和分类算法,根据特征选择如何生成分类模型也是决策树的一部分。
其生成过程基本如下:
根据这三个步骤,可以确定决策树由:(1)特征选择;(2)生成方法;(3)剪枝,组成。
决策树中学习算法与特征选择的关系如下图所示:
原始特征集合T:就是包含收集到的原始数据所有的特征,例如:麻瓜银行收集到与是否具有偿还能力的所有特征,如:是否结婚、是否拥有100w的房产、是否拥有汽车、是否有小孩、月收入是否>10k等等。
中间的虚线框就是特征选择过程,例如:ID3使用信息增益、C4.5使用信息增益率、CART使用GINI系数。
其中评价指标(如:信息增益)就是对特征的要求,特征需要满足这种条件(一般是某个阈值),才能被选择,而这一选择过程嵌入在学习算法中,最终被选择的特征子集也归到学习算法中去。
这就是抽象的决策树生成过程,不论哪种算法都是将这一抽象过程的具体化。
其具体算法我将留在下一篇文章来讲解。
而决策树的剪枝,其实用得不是很多,因为很多情况下随机森林能解决决策树带来的过拟合问题,因此在这里也不讲了。
决策树的优化主要也是围绕决策树生成过程的三个步骤来进行优化的。
树型结构,可想而知,算法效率决定于树的深度,优化这方面主要从特征选择方向上优化。
提高分类性能是最重要的优化目标,其主要也是特征选择。
面对过拟合问题,一般使用剪枝来优化,如:李国和基于决策树生成及剪枝的数据集优化及其应用。
同时,决策树有很多不足,如:多值偏向、计算效率低下、对数据空缺较为敏感等,这方面的优化也有很多,大部分也是特征选择方向,如:陈沛玲使用粗糙集进行特征降维。
由此,决策树的优化方向大多都是特征选择方向,像ID3、C4.5、CART都是基于特征选择进行优化。
参考文献
统计学习方法-李航
特征选择方法综述-李郅琴
决策树分类算法优化研究_陈沛玲
基于决策树生成及剪枝的数据集优化及其应用-李国和
D. 简述决策树的原理及过程
决策树是一种常见的机器学习算法,它可以用来进行分类和回归分析,并且易于理解和解释。决策树的原理和过程如下:
原理:决策树是一种基于树形结构的分类模型,它通过一系列的决策来对数据进行分类或预测。在决策树中,每一个节点代表一个特征或属性,每一条边代表一个判断或决策,而每一个叶子节点代表一个分类或预测结果。通过对样本数据进行不断地划分和分类,最终可以得到一棵树形结构的分类模型。
(5) 模型评估:使用测试数据集对构建好的决策树进行评估和优化,以提高分类或预测的准确性和稳定性。
总之,决策树是一种基于树形结构的分类模型,其原理和过程包括特征选择、特征划分、递归构建、剪枝处理和模型评估等步骤。通过构建决策树,可以对数据进行分类和预测,并且易于理解和解释,是一种常见的机器学习算法。
E. 决策树算法
决策树算法的算法理论和应用场景
算法理论:
我了解的决策树算法,主要有三种,最早期的ID3,再到后来的C4.5和CART这三种算法。
这三种算法的大致框架近似。
决策树的学习过程
1.特征选择
在训练数据中 众多X中选择一个特征作为当前节点分裂的标准。如何选择特征有着很多不同量化评估标准,从而衍生出不同的决策树算法。
2.决策树生成
根据选择的特征评估标准,从上至下递归生成子节点,直到数据集不可分或者最小节点满足阈值,此时决策树停止生长。
3.剪枝
决策树极其容易过拟合,一般需要通过剪枝,缩小树结构规模、缓解过拟合。剪枝技术有前剪枝和后剪枝两种。
有些算法用剪枝过程,有些没有,如ID3。
预剪枝:对每个结点划分前先进行估计,若当前结点的划分不能带来决策树的泛化性能的提升,则停止划分,并标记为叶结点。
后剪枝:现从训练集生成一棵完整的决策树,然后自底向上对非叶子结点进行考察,若该结点对应的子树用叶结点能带来决策树泛化性能的提升,则将该子树替换为叶结点。
但不管是预剪枝还是后剪枝都是用验证集的数据进行评估。
ID3算法是最早成型的决策树算法。ID3的算法核心是在决策树各个节点上应用信息增益准则来选择特征,递归构建决策树。缺点是,在选择分裂变量时容易选择分类多的特征,如ID值【值越多、分叉越多,子节点的不纯度就越小,信息增益就越大】。
ID3之所以无法 处理缺失值、无法处理连续值、不剪纸等情况,主要是当时的重点并不是这些。
C4.5算法与ID3近似,只是分裂标准从 信息增益 转变成 信息增益率。可以处理连续值,含剪枝,可以处理缺失值,这里的做法多是 概率权重。
CART:1.可以处理连续值 2.可以进行缺失值处理 3.支持剪枝 4.可以分类可以回归。
缺失值的处理是 作为一个单独的类别进行分类。
建立CART树
我们的算法从根节点开始,用训练集递归的建立CART树。
1) 对于当前节点的数据集为D,如果样本个数小于阈值或者没有特征,则返回决策子树,当前节点停止递归。
2) 计算样本集D的基尼系数, 如果基尼系数小于阈值 (说明已经很纯了!!不需要再分了!!),则返回决策树子树,当前节点停止递归。
3) 计算当前节点现有的各个特征的各个特征值对数据集D的基尼系数。
4) 在计算出来的各个特征的各个特征值对数据集D的基尼系数中,选择 基尼系数最小的特征A和对应的特征值a。根据这个最优特征和最优特征值,把数据集划分成两部分D1和D2,同时建立当前节点的左右节点,做节点的数据集D为D1,右节点的数据集D为D2。 (注:注意是二叉树,故这里的D1和D2是有集合关系的,D2=D-D1)
5) 对左右的子节点递归的调用1-4步,生成决策树。
CART采用的办法是后剪枝法,即先生成决策树,然后产生所有可能的剪枝后的CART树,然后使用交叉验证来检验各种剪枝的效果,选择泛化能力最好的剪枝策略。
应用场景
比如欺诈问题中,通过决策树算法简单分类,默认是CART的分类树,默认不剪枝。然后在出图后,自行选择合适的叶节点进行拒绝操作。
这个不剪枝是因为欺诈问题的特殊性,欺诈问题一般而言较少,如数据的万几水平,即正样本少,而整个欺诈问题需要解决的速度较快。此时只能根据业务要求,迅速针对已有的正样本情况,在控制准确率的前提下,尽可能提高召回率。这种情况下,可以使用决策树来简单应用,这个可以替代原本手工选择特征及特征阈值的情况。