完整word版,决策树算法总结
决策树很详细的算法介绍
![决策树很详细的算法介绍](https://img.taocdn.com/s3/m/b39a0ebd710abb68a98271fe910ef12d2af9a98b.png)
决策树很详细的算法介绍决策树(Decision Tree)是一种常用的机器学习算法,它模拟人类决策过程的思维方式,能够通过学习已有数据集建立一个树状模型,来进行分类和回归的预测。
它可以处理具有离散和连续属性的数据,并具有较好的可解释性和易于理解的特点。
本文将对决策树算法进行详细介绍。
一、决策树算法的基本原理决策树算法基于“分而治之”的思想,将复杂的问题分解为一系列简单的决策判断,从而构建一个树状模型。
决策树的根节点表示最初的决策,内部节点代表决策的中间过程,叶节点表示最终的决策结果。
决策树的构建过程包括特征选择、树的生成和剪枝三个步骤。
特征选择是决策树算法中非常重要的一步,目的是选择对结果预测有最大分类能力的特征作为划分标准。
经典的特征选择方法有信息增益(ID3)、增益比(C4.5)和基尼指数(CART)等。
信息增益以信息熵的减少量作为特征选择的标准,增益比在信息增益的基础上,对特征本身的信息熵做出惩罚,而基尼指数则衡量数据集的不确定性。
树的生成是决策树算法的核心部分,它可以通过递归地将训练数据划分为不同的子集,直到子集中的数据属于同一类别为止。
生成过程中,通过计算选择的特征对数据集进行划分,并将数据集按照该特征的取值划分为若干子集。
重复这个划分过程,直到每个子集中的数据都属于同一类别,或者没有更多的特征可以选择。
决策树的剪枝是为了防止过拟合现象的发生,过拟合指的是决策树建立过于复杂,过多地考虑了数据集的特殊噪声和异常情况,导致模型在测试数据上表现较差。
剪枝的目标是通过去掉一些分支来简化树模型,提高模型的泛化能力。
决策树剪枝算法有预剪枝和后剪枝两种方式,预剪枝在生成树的过程中进行剪枝,后剪枝在生成树之后进行剪枝。
二、决策树的优势和不足决策树算法具有以下优势:1.决策树易于理解和解释,生成的规则形式直观,能够为决策提供明确的解释。
2.决策树算法是一种非参数方法,对数据的分布没有假设,适用于各种类型的数据。
决策树总结
![决策树总结](https://img.taocdn.com/s3/m/56b61d0786c24028915f804d2b160b4e767f8120.png)
决策树总结决策树是一种常用的机器学习算法,它在数据挖掘和预测分析中被广泛应用。
本文将对决策树进行总结,包括其基本原理、构造方法、优缺点以及应用场景。
1. 基本原理决策树基于一系列的决策规则来完成分类或回归任务。
它将数据集划分为不同的子集,并在每个子集上继续进行划分,直到得到满足某个条件的叶节点。
在每次划分时,决策树算法通过计算某个指标(如信息增益、基尼指数)来选择最优的划分属性。
最终得到的决策树可以被用于预测新样本的类别或者回归值。
2. 构造方法决策树的构造方法主要有以下几种:ID3、C4.5、CART等。
ID3算法通过计算信息增益来选择最优划分属性,但存在对取值数目较多的属性偏好的问题;C4.5算法在ID3的基础上引入了信息增益比,更好地处理了取值数目较多的属性;CART算法则根据最小化基尼指数来选择最优划分属性,适用于分类和回归问题。
3. 优缺点决策树的优点在于简单易懂、可解释性强、适用于处理多类别问题、能处理连续属性等。
此外,决策树不需要对数据进行过多的预处理,而且在构建过程中能够自动选择重要特征。
然而,决策树也存在一些缺点。
首先,决策树容易过拟合,特别是当树的深度过大时。
为了解决这个问题,可以通过剪枝操作或者限制决策树的最大深度来减少过拟合风险。
其次,决策树对于缺失值的处理不够灵活,常常需要进行数据填充。
最后,决策树算法对于噪声和异常值比较敏感,容易产生不稳定的结果。
4. 应用场景决策树广泛应用于各种领域,其中包括金融、医疗、市场营销等。
在金融领域,决策树可以用于信用评分、风险识别、投资决策等。
在医疗领域,决策树可以用于疾病诊断、药物治疗方案选择等。
在市场营销领域,决策树可以用于客户分群、推荐系统等。
总之,决策树是一种常用的机器学习算法,它通过一系列的决策规则来完成分类或回归任务。
决策树算法具有简单易懂、可解释性强、适用于多类别问题等优点。
然而,它也存在容易过拟合、对异常值敏感等缺点。
决策树在金融、医疗、市场营销等领域都有广泛应用,可以用于信用评分、疾病诊断、客户分群等任务。
决策树的算法
![决策树的算法](https://img.taocdn.com/s3/m/4be74276c950ad02de80d4d8d15abe23482f03d3.png)
决策树的算法一、什么是决策树算法?决策树算法是一种常见的监督学习算法,用于解决分类和回归问题。
它基于树状图模型,通过将数据集分成不同的决策路径来预测目标变量的值。
二、决策树的构建过程决策树的构建过程可以分为以下几个步骤:1. 特征选择特征选择是决策树构建中的关键步骤。
常用的特征选择算法有信息增益、信息增益率、基尼指数等。
这些算法用于衡量一个特征对结果的重要程度,选择最优的特征作为划分标准。
2. 根据划分标准划分数据集根据选择的划分标准,将数据集划分为多个子集。
如果特征为离散型,则根据每个特征取值将数据集分成不同的子集;如果特征为连续型,则选择一个阈值将数据集分成两个子集。
3. 递归构建子树对每个子集递归执行上述两个步骤,直到满足终止条件。
终止条件通常有以下几个:子集中的样本属于同一类别、子集中的样本数小于预定阈值、特征集为空。
4. 剪枝剪枝是为了防止过拟合而对决策树进行修剪。
常用的剪枝策略有预剪枝和后剪枝两种。
预剪枝在构建过程中通过设置条件限制决策树的生长,后剪枝则是先构建完整的决策树,然后通过剪枝选择最优子树。
三、决策树的优缺点决策树算法具有以下优点:1.算法简单,易于理解和解释。
决策树的结构类似于人类的决策过程,易于理解和解释。
2.能够处理多类型的数据。
决策树可以处理离散型和连续型的特征,适用于各种类型的数据。
3.能够处理缺失值。
决策树算法可以直接处理缺失值,而不需要进行额外的处理。
4.能够处理多输出问题。
决策树可以处理多分类和回归问题,适用于多输出的情况。
决策树算法也存在一些缺点:1.容易过拟合。
决策树算法在处理复杂问题时容易产生过拟合现象,通过剪枝和设置合适的参数可以减少过拟合的风险。
2.对噪声和异常值敏感。
决策树算法对噪声和异常值比较敏感,容易产生不稳定的结果。
3.不适用于处理高维稀疏数据。
决策树算法在处理高维稀疏数据时效果较差,容易产生过拟合现象。
四、决策树的应用场景决策树算法在各个领域都有广泛的应用,例如:1.金融行业:决策树可以用于信用评估、风险评估和欺诈检测等。
决策树计算公式(一)
![决策树计算公式(一)](https://img.taocdn.com/s3/m/9ec5ea18dc36a32d7375a417866fb84ae45cc3e2.png)
决策树计算公式(一)决策树的相关计算公式1. 信息增益(Information Gain)•信息增益是衡量使用某个属性对样本进行划分后,所得到的信息不确定性减少的程度。
信息增益越大,说明使用该属性进行划分能获得更多的信息。
•计算公式为:[信息增益](其中:–[信息熵]( 是数据集 D 的信息熵,衡量数据集的不确定性。
–[条件熵]( 是在特征 A 的条件下,数据集 D 的概率分布的熵,表示在已知特征 A 的情况下,数据集 D 的不确定性。
2. 基尼指数(Gini Index)•基尼指数是衡量样本集中元组的不确定性的度量方式。
基尼指数越小,说明样本集中的元组属于同一类别的概率越大。
•计算公式为:[基尼指数](其中:–[p_k]( 是样本集 D 中属于第 k 类样本的概率。
– c 是样本集的类别数。
3. 信息增益率(Gain Ratio)•信息增益率是在信息增益的基础上对属性划分进行了修正,避免因为某个属性取值较多而对信息增益造成偏好。
•计算公式为:[信息增益率](其中:–[IV(A)]( 是特征 A 的固有值,表示属性 A 取值的多样性。
示例说明:假设我们要构建一个决策树模型,希望利用年龄、性别和教育背景等特征来预测一个人是否会购买某种商品。
我们有以下样本数据集:ID | 年龄 | 性别 | 教育背景 | 是否购买 ||—-|——|——||| | 1 | 青年 | 男性 | 高中 | 否 | | 2 |中年 | 男性 | 大学 | 是 | | 3 | 老年 | 女性 | 大学 | 是 | | 4 | 老年 | 男性 | 大学 | 否 | | 5 | 青年 | 女性 | 高中 | 否 | |6 | 中年 | 女性 | 大学 | 是 | |7 | 青年 | 女性 | 大学 | 否 | |8 | 中年 | 男性 | 高中 | 是 |首先,我们计算数据集的信息熵 [H(D)]( [p_是]( 和 [p_否]( [H(D)=-(p_是_2(p_是)+p_否_2(p_否))](计算可得[H(D)]( ≈ 。
决策树算法算法介绍
![决策树算法算法介绍](https://img.taocdn.com/s3/m/abdb75472a160b4e767f5acfa1c7aa00b52a9dde.png)
决策树算法算法介绍⽬录1.2.3.4.5.⼀、概念决策树(decision tree)是⼀种基本的分类与回归⽅法。
决策树模型呈树形结构,在分类问题中,表⽰基于特征对实例进⾏分类的过程。
它可以认为是if-then规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
其主要优点是模型具有可读性,分类速度快。
学习时,利⽤训练数据,根据损失函数最⼩化的原则建⽴决策树模型。
预测时,对新的数据,利⽤决策树模型进⾏分类其中每个⾮叶节点表⽰⼀个特征属性上的测试,每个分⽀代表这个特征属性在某个值域上的输出,⽽每个叶节点存放⼀个类别。
使⽤决策树进⾏决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分⽀,直到到达叶⼦节点,将叶⼦节点存放的类别作为决策结果。
总结来说:决策树模型核⼼是下⾯⼏部分:节点和有向边组成节点有内部节点和叶节点俩种类型内部节点表⽰⼀个特征,叶节点表⽰⼀个类下图即为⼀个决策树的⽰意描述,内部节点⽤矩形表⽰,叶⼦节点⽤椭圆表⽰:⼆、决策树的学习过程⼀棵决策树的⽣成过程主要分为以下3个部分:特征选择:特征选择是指从训练数据中众多的特征中选择⼀个特征作为当前节点的分裂标准,如何选择特征有着很多不同量化评估标准标准,从⽽衍⽣出不同的决策树算法。
决策树⽣成:根据选择的特征评估标准,从上⾄下递归地⽣成⼦节点,直到数据集不可分则停⽌决策树停⽌⽣长。
树结构来说,递归结构是最容易理解的⽅式。
剪枝:决策树容易过拟合,⼀般来需要剪枝,缩⼩树结构规模、缓解过拟合。
剪枝技术有预剪枝和后剪枝两种先了解⼀些基本概念(1)决策树节点的不纯度(impurity)不纯度⽤基尼系数(gini)表⽰:其中k代表y值的类别的个数,p k表⽰类别k样本数量占所有样本的⽐例,从该公式可以看出,当数据集中数据混合的程度越⾼,基尼指数也就越⾼。
当数据集只有⼀种数据类型,那么基尼指数的值为最低,纯度越⾼,基尼系数越⼩如果选取的属性为 A,那么分裂后的数据集 D 的基尼指数的计算公式为:其中 k 表⽰样本 D 被分为 k 个部分,数据集 D 分裂成为 k 个 Dj 数据集。
决策树(完整)
![决策树(完整)](https://img.taocdn.com/s3/m/28869553773231126edb6f1aff00bed5b9f373f2.png)
无缺失值样本中在属性 上取值 的样本所占比例
ቤተ መጻሕፍቲ ባይዱ
谢谢大家!
举例:求解划分根结点的最优划分属性
根结点的信息熵:
用“色泽”将根结点划分后获得3个分支结点的信息熵分别为:
属性“色泽”的信息增益为:
若把“编号”也作为一个候选划分属性,则属性“编号”的信息增益为:
根结点的信息熵仍为:
用“编号”将根结点划分后获得17个分支结点的信息熵均为:
则“编号”的信息增益为:
三种度量结点“纯度”的指标:信息增益增益率基尼指数
1. 信息增益
香农提出了“信息熵”的概念,解决了对信息的量化度量问题。香农用“信息熵”的概念来描述信源的不确定性。
信息熵
信息增益
一般而言,信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。决策树算法第8行选择属性
著名的ID3决策树算法
远大于其他候选属性信息增益准则对可取值数目较多的属性有所偏好
2. 增益率
增益率准则对可取值数目较少的属性有所偏好著名的C4.5决策树算法综合了信息增益准则和信息率准则的特点:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
3. 基尼指数
基尼值
基尼指数
著名的CART决策树算法
过拟合:学习器学习能力过于强大,把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,导致泛化性能下降。欠拟合:学习器学习能力低下,对训练样本的一般性质尚未学好。
过拟合无法彻底避免,只能做到“缓解”。
不足:基于“贪心”本质禁止某些分支展开,带来了欠拟合的风险
预剪枝使得决策树的很多分支都没有“展开”优点:降低过拟合的风险减少了训练时间开销和测试时间开销
决策树算法实验总结
![决策树算法实验总结](https://img.taocdn.com/s3/m/c38abd0be418964bcf84b9d528ea81c758f52efe.png)
决策树算法实验总结
决策树算法是一种常用的机器学习算法,它通过对数据集进行递归划分,构建出一棵树状的决策模型。
在实验中,我们使用了决策树算法进行分类任务,并对实验结果进行总结。
首先,我们需要准备一个带有标签的训练数据集,其中包含了多个特征和对应的类别标签。
然后,我们可以使用决策树算法对训练数据集进行训练,构建出一棵具有判断条件的决策树。
在实验中,我们可以使用不同的指标来评估决策树算法的性能,例如准确率、精确率、召回率等。
这些指标可以帮助我们了解决策树算法在分类任务中的表现。
此外,我们还可以通过调整决策树算法的参数来提高其性能。
例如,可以通过限制树的最大深度、设置叶子节点的最小样本数等来控制决策树的复杂度,避免过拟合问题。
在实验总结中,我们可以描述决策树算法在实验中的表现,比较其与其他算法的优劣势,并提出进一步改进的方向。
此外,还可以讨论决策树算法在不同数据集上的适用性,并分析其在实际应用中可能遇到的问题和局限性。
总而言之,决策树算法是一种简单而有效的机器学习算法,可以用于分类任务。
通过实验总结,我们可以更好地理解决策树算法的原理和性能,为进一步的应用和改进提供指导。
决策树 算法
![决策树 算法](https://img.taocdn.com/s3/m/5a4c81537f21af45b307e87101f69e314332fa16.png)
决策树算法1. 简介决策树算法是一种广泛应用于分类和回归问题的机器学习算法。
它通过从一组特征中选择最佳划分方式来构建一个树形结构的决策模型,从而对新样本进行预测或分类。
决策树算法简单易懂,可解释性强,且能处理同时包含离散和连续特征的数据。
2. 决策树的基本原理决策树算法基于以下几个关键概念:2.1 特征选择在构建决策树的过程中,需要选择最佳的特征来进行划分。
特征选择的目标是通过划分使得每个子节点的纯度最大化(分类问题)或者均方差最小化(回归问题)。
常用的特征选择指标有信息增益、增益率、基尼指数等。
2.2 决策树的构建决策树是通过不断选择最佳特征来递归地构建的。
首先将整个数据集作为根节点,选择一个最佳特征进行划分,然后将数据集划分为多个子集,每个子集对应一个子节点。
递归地对每个子节点进行特征选择和划分,直到满足终止条件(如纯度达到一定阈值或树的深度达到限制)为止。
2.3 决策树的剪枝决策树的构建过程容易导致过拟合,即模型对训练数据过于敏感而无法很好地推广到新样本。
为了避免过拟合,需要对决策树进行剪枝。
剪枝根据一定的准则,去除一些子树或叶节点,从而简化模型。
3. 决策树算法的优缺点3.1 优点•决策树易于理解和解释,模型生成的决策规则可以直观地呈现。
•决策树可以处理离散和连续特征,无需对数据进行特殊处理。
•决策树能够自动选择特征,并通过特征选择来提高模型的性能。
•决策树不需要很大的训练数据集,可以处理小型数据集。
3.2 缺点•决策树容易过拟合,特别是在处理复杂问题时。
•决策树对输入数据的变化非常敏感,哪怕是微小的变化也可能导致完全不同的树结构。
•决策树很难处理包含有不同类别交叉的数据集。
4. 决策树算法的应用决策树算法被广泛应用于许多领域,以下是一些常见的应用场景:4.1 金融风险评估决策树可以根据客户的个人信息和历史数据,判断其信用风险等级。
通过构建一个决策树模型,银行或金融机构可以快速准确地评估客户的风险,从而做出相应的贷款决策。
《决策树分析算法》word版
![《决策树分析算法》word版](https://img.taocdn.com/s3/m/250c31d7581b6bd97e19eac0.png)
数据挖掘算法>Microsoft 决策树算法是由Microsoft SQL Server 2005 Analysis Services (SSAS) 提供的分类和回归算法,用于对离散和连续属性进行预测性建模。
对于离散属性,该算法根据数据集中输入列之间的关系进行预测。
它使用这些列的值或状态预测指定的可预测列的状态。
具体地说,该算法标识与可预测列相关的输入列。
例如,在预测哪些客户可能购买自行车的方案中,假如在十名年轻客户中有九名购买了自行车,但在十名年龄较大的客户中只有两名购买了自行车,则该算法从中推断出年龄是自行车购买情况的最佳预测因子。
决策树根据朝向特定结果发展的趋势进行预测。
对于连续属性,该算法使用线性回归确定决策树的拆分位置。
如果有多个列设置为可预测列,或输入数据包含设置为可预测的嵌套表,则该算法将为每个可预测列分别生成一个决策树。
示例Adventure Works Cycle 公司的市场部需要标识其以前客户的特征,这些特征可以指示这些客户以后是否有可能购买其产品。
AdventureWorks 数据库存储了描述其以前客户的人口统计信息。
通过使用Microsoft 决策树算法分析这些信息,市场部可以生成一个模型,该模型根据有关特定客户的已知列的状态(如人口统计或以前的购买模式)预测该客户是否会购买产品。
算法的原理Microsoft 决策树通过在树中创建一系列拆分(也称为节点)来生成数据挖掘模型。
每当发现输入列与可预测列密切相关时,算法便会向该模型中添加一个节点。
该算法确定拆分的方式不同,主要取决于它预测的是连续列还是离散列。
有关Microsoft 决策树算法如何处理可预测的离散列的详细说明,请参阅Scalable Classification over SQL Databases和Learning Bayesian Networks: The Combination of Knowledge and Statistical Data。
决策树的原理及算法
![决策树的原理及算法](https://img.taocdn.com/s3/m/9ed12610580102020740be1e650e52ea5518ce15.png)
决策树的原理及算法本文主要介绍了决策树的原理及算法决策树的工作原理image.png决策树基本上就是把我们以前的经验总结出来。
我给你准备了一个打篮球的训练集。
如果我们要出门打篮球,一般会根据“天气”、“温度”、“湿度”、“刮风”这几个条件来判断,最后得到结果:去打篮球?还是不去?上面这个图就是一棵典型的决策树。
我们在做决策树的时候,会经历两个阶段:构造和剪枝。
构造构造就是生成一棵完整的决策树。
简单来说,构造的过程就是选择什么属性作为节点的过程,那么在构造过程中,会存在三种节点:根节点:就是树的最顶端,最开始的那个节点。
在上图中,“天气”就是一个根节点;内部节点:就是树中间的那些节点,比如说“温度”、“湿度”、“刮风”;叶节点:就是树最底部的节点,也就是决策结果。
剪枝剪枝就是给决策树瘦身,防止过拟合。
分为“预剪枝”(Pre-Pruning)和“后剪枝”(Post-Pruning)。
预剪枝是在决策树构造时就进行剪枝。
方法是在构造的过程中对节点进行评估,如果对某个节点进行划分,在验证集中不能带来准确性的提升,那么对这个节点进行划分就没有意义,这时就会把当前节点作为叶节点,不对其进行划分。
后剪枝就是在生成决策树之后再进行剪枝,通常会从决策树的叶节点开始,逐层向上对每个节点进行评估。
如果剪掉这个节点子树,与保留该节点子树在分类准确性上差别不大,或者剪掉该节点子树,能在验证集中带来准确性的提升,那么就可以把该节点子树进行剪枝。
拟合1是欠拟合,3是过拟合,都会导致分类错误。
image.png造成过拟合的原因之一就是因为训练集中样本量较小。
如果决策树选择的属性过多,构造出来的决策树一定能够“完美”地把训练集中的样本分类,但是这样就会把训练集中一些数据的特点当成所有数据的特点,但这个特点不一定是全部数据的特点,这就使得这个决策树在真实的数据分类中出现错误,也就是模型的“泛化能力”差。
信息熵(entropy)image.pngp(i|t) 代表了节点 t 为分类 i 的概率,其中 log2 为取以 2 为底的对数。
决策树C算法总结
![决策树C算法总结](https://img.taocdn.com/s3/m/bdec29b1c9d376eeaeaad1f34693daef5ff71377.png)
通过选择最重要的特征子集来降低特征维度,可以减少过拟合和提高模型泛化能力。常用的特征子集选择 方法有递归特征消除(Recursive Feature Elimination, RFE)和基于树的特征选择(Tree-based Feature Selection)。
决策树剪枝策略优化
预剪枝(Prepruning)
特点
决策树C算法具有直观易懂、分类速度快、可解释性强等优点 ,但也存在容易过拟合、对噪声数据敏感等问题。
决策树C算法的应用场景
01
02
03
分类问题
适用于解决各类分类问题, 如二分类、多分类等。
回归问题
适用于解决连续值的预测 问题,如房价预测、股票 价格预测等。
特征选择
决策树C算法在构建过程 中会自动进行特征选择, 有助于去除冗余特征,提 高模型性能。
决策树C算法的基本原理
01
数据集划分
决策树C算法通过递归地将数据集划分为更小的子集,直到满足终止条
件(如所有样本都属于同一类别或某个叶子节点样本数小于预设阈值)。
02
信息增益或基尼指数
在划分过程中,使用信息增益或基尼指数等指标来评估划分的好坏,选
择最优划分属性。
03
剪枝与集成
为了避免过拟合,可以对决策树进行剪枝操作,同时也可以将多棵决策
决策树C算法总结
目 录
• 决策树C算法概述 • 决策树C算法的构建过程 • 决策树C算法的性能优化 • 决策树C算法的优缺点分析 • 决策树C算法的未来研究方向
01 决策树C算法概述
定义与特点
定义
决策树C算法是一种监督学习算法,用于分类和回归问题。它 通过构建一棵树形结构来表达决策过程,每个内部节点表示 一个特征判断,每个分支代表一个可能的特征值,每个叶子 节点表示一个类别或数值。
决策树算法总结
![决策树算法总结](https://img.taocdn.com/s3/m/206ab8347fd5360cbb1adb15.png)
决策树研发二部目录1. 算法介绍 (1)1.1.分支节点选取 (1)1.2.构建树 (3)1.3.剪枝 (10)2. sk-learn中的使用 (12)3. sk-learn中源码分析 (13)1.算法介绍决策树算法是机器学习中的经典算法之一,既可以作为分类算法,也可以作为回归算法。
决策树算法又被发展出很多不同的版本,按照时间上分,目前主要包括,ID3、C4.5和CART版本算法。
其中ID3版本的决策树算法是最早出现的,可以用来做分类算法。
C4.5是针对ID3的不足出现的优化版本,也用来做分类。
CART也是针对ID3优化出现的,既可以做分类,可以做回归。
决策树算法的本质其实很类似我们的if-elseif-else语句,通过条件作为分支依据,最终的数学模型就是一颗树。
不过在决策树算法中我们需要重点考虑选取分支条件的理由,以及谁先判断谁后判断,包括最后对过拟合的处理,也就是剪枝。
这是我们之前写if语句时不会考虑的问题。
决策树算法主要分为以下3个步骤:1.分支节点选取2.构建树3.剪枝1.1.分支节点选取分支节点选取,也就是寻找分支节点的最优解。
既然要寻找最优,那么必须要有一个衡量标准,也就是需要量化这个优劣性。
常用的衡量指标有熵和基尼系数。
熵:熵用来表示信息的混乱程度,值越大表示越混乱,包含的信息量也就越多。
比如,A班有10个男生1个女生,B班有5个男生5个女生,那么B班的熵值就比A班大,也就是B班信息越混乱。
基尼系数:同上,也可以作为信息混乱程度的衡量指标。
有了量化指标后,就可以衡量使用某个分支条件前后,信息混乱程度的收敛效果了。
使用分支前的混乱程度,减去分支后的混乱程度,结果越大,表示效果越好。
#计算熵值def entropy(dataSet):tNum = len(dataSet)print(tNum)#用来保存标签对应的个数的,比如,男:6,女:5labels = {}for node in dataSet:curL = node[-1] #获取标签if curL not in labels.keys():labels[curL] = 0 #如果没有记录过该种标签,就记录并初始化为0 labels[curL] += 1 #将标签记录个数加1#此时labels中保存了所有标签和对应的个数res = 0#计算公式为-p*logp,p为标签出现概率for node in labels:p = float(labels[node]) / tNumres -= p * log(p, 2)return res#计算基尼系数def gini(dataSet):tNum = len(dataSet)print(tNum)# 用来保存标签对应的个数的,比如,男:6,女:5labels = {}for node in dataSet:curL = node[-1] # 获取标签if curL not in labels.keys():labels[curL] = 0 # 如果没有记录过该种标签,就记录并初始化为0 labels[curL] += 1 # 将标签记录个数加1# 此时labels中保存了所有标签和对应的个数res = 1# 计算公式为-p*logp,p为标签出现概率for node in labels:p = float(labels[node]) / tNum res -= p * p return res1.2. 构建树ID3算法:利用信息熵增益,决定选取哪个特征作为分支节点。
决策树算法梳理(从原理到示例)
![决策树算法梳理(从原理到示例)](https://img.taocdn.com/s3/m/2a8d8c51cd7931b765ce0508763231126fdb7765.png)
决策树算法梳理(从原理到示例)决策树是一种常见的分类和回归算法,可用于解决各种机器学习问题。
它是基于树结构的一种模型,通过对数据集进行分割,形成一系列的决策规则,以实现对未知数据的预测。
1.特征选择:决策树的关键步骤是选择一个最佳的特征来进行数据集的划分。
特征选择的目标是使划分后的子集尽可能地纯净,即同一类别的样本尽可能聚在一起。
常用的特征选择方法有信息增益、信息增益比等。
2.构建决策树:根据选择的特征,可以根据数据集的划分建立一棵决策树。
决策树的根节点表示整个数据集,每个非叶子节点表示一个特征,每个叶子节点表示一个类别。
根据特征值的不同,将数据集分割成多个子集,递归地构建子树。
3.决策规则生成:对于分类问题,决策树的叶子节点代表一个类别。
生成决策规则时,从根节点出发,逐级遍历决策树,将遍历路径上的特征值作为决策规则的条件,叶子节点的类别作为决策结果。
4.决策树剪枝:决策树在构建过程中容易产生过拟合的问题。
为了避免过拟合,需要对决策树进行剪枝。
剪枝的过程是通过从决策树中删除一些子树(代表一些特征)来简化模型,以提高泛化性能。
下面以一个示例来说明决策树的过程。
假设有一个二分类问题,需要根据患者的年龄、体温和白细胞计数来判断是否患有感染病。
现在有一组已知的训练样本,包括12个患者的信息和他们的感染病状态。
根据这些样本,我们可以构建一个决策树模型以进行预测。
首先,我们选择一个特征来对数据集进行划分。
假设我们选择的是年龄特征。
根据年龄的不同取值,将数据集分割成三个子集。
对于每个子集,我们可以计算它们的不纯度,这里我们使用基尼系数作为不纯度的度量指标。
接下来,我们选择一个最佳的特征值来划分数据集。
假设我们选择的是体温特征。
我们将数据集根据体温是否大于37度分为两个子集。
对于每个子集,我们可以继续选择特征和划分子集,直到满足一定的停止条件,例如子集中的样本属于同一类别或者特征已经用完。
最后,我们可以将决策树可视化,并使用它来进行预测。
决策树知识点总结
![决策树知识点总结](https://img.taocdn.com/s3/m/5e92052524c52cc58bd63186bceb19e8b9f6ec6d.png)
决策树知识点总结1. 决策树算法原理决策树算法的核心思想是通过对特征进行逐步划分,将数据集划分为不同的子集,使得每个子集内的数据尽可能属于同一类别。
在划分过程中,算法会选择一个最优的特征进行划分,使得划分后的子集的纯度最大。
通常情况下,我们会选择信息增益或基尼指数作为划分标准,以找到最优的划分特征。
决策树算法的训练过程可以分为以下几步:(1)选择最优的划分特征:通过计算每个特征的信息增益或基尼指数,选择最优的划分特征。
(2)将数据集按照最优特征进行划分:根据最优特征的取值将数据集划分为不同的子集。
(3)递归的训练子树:对划分得到的每个子集进行递归的训练,直到满足停止条件为止。
这样就可以得到一棵完整的决策树,用于对新数据进行预测。
2. 常见的决策树算法目前比较常见的决策树算法包括ID3、C4.5、CART和CHAID等。
ID3(Iterative Dichotomiser 3)算法是一种基于信息增益进行特征选择的决策树算法。
该算法在每次划分时选择信息增益最大的特征进行划分,直到所有特征都被使用或者剩余数据集中的样本属于同一类别。
C4.5算法是ID3算法的改进版,它使用信息增益比进行特征选择,解决了ID3算法可能会选择取值较多的特征进行划分的问题。
CART(Classification And Regression Tree)算法可以用于分类和回归问题,它使用基尼指数进行特征选择,对分类问题得到的决策树是二叉树结构。
CHAID(Chi-squared Automatic Interaction Detection)算法是一种基于卡方检验进行特征选择的决策树算法,适用于分类问题。
3. 决策树的优缺点(1)优点:决策树算法易于理解和解释,生成的决策树可以直观地表示分类的过程和结果。
此外,决策树算法可以处理数值型和类别型的数据,对缺失值和异常值具有较好的鲁棒性。
另外,决策树算法可以自动选择特征,不需要人工选择。
完整word版,决策树算法介绍(DOC)
![完整word版,决策树算法介绍(DOC)](https://img.taocdn.com/s3/m/3d77be81c8d376eeaeaa31bb.png)
3.1 分类与决策树概述3.1.1 分类与预测分类是一种应用非常广泛的数据挖掘技术,应用的例子也很多。
例如,根据信用卡支付历史记录,来判断具备哪些特征的用户往往具有良好的信用;根据某种病症的诊断记录,来分析哪些药物组合可以带来良好的治疗效果。
这些过程的一个共同特点是:根据数据的某些属性,来估计一个特定属性的值。
例如在信用分析案例中,根据用户的“年龄”、“性别”、“收入水平”、“职业”等属性的值,来估计该用户“信用度”属性的值应该取“好”还是“差”,在这个例子中,所研究的属性“信用度”是一个离散属性,它的取值是一个类别值,这种问题在数据挖掘中被称为分类。
还有一种问题,例如根据股市交易的历史数据估计下一个交易日的大盘指数,这里所研究的属性“大盘指数”是一个连续属性,它的取值是一个实数。
那么这种问题在数据挖掘中被称为预测。
总之,当估计的属性值是离散值时,这就是分类;当估计的属性值是连续值时,这就是预测。
3.1.2 决策树的基本原理1.构建决策树通过一个实际的例子,来了解一些与决策树有关的基本概念。
表3-1是一个数据库表,记载着某银行的客户信用记录,属性包括“姓名”、“年龄”、“职业”、“月薪”、......、“信用等级”,每一行是一个客户样本,每一列是一个属性(字段)。
这里把这个表记做数据集D。
银行需要解决的问题是,根据数据集D,建立一个信用等级分析模型,并根据这个模型,产生一系列规则。
当银行在未来的某个时刻收到某个客户的贷款申请时,依据这些规则,可以根据该客户的年龄、职业、月薪等属性,来预测其信用等级,以确定是否提供贷款给该用户。
这里的信用等级分析模型,就可以是一棵决策树。
在这个案例中,研究的重点是“信用等级”这个属性。
给定一个信用等级未知的客户,要根据他/她的其他属性来估计“信用等级”的值是“优”、“良”还是“差”,也就是说,要把这客户划分到信用等级为“优”、“良”、“差”这3个类别的某一类别中去。
《决策树分类》word版
![《决策树分类》word版](https://img.taocdn.com/s3/m/7725bec4ff00bed5b8f31dd9.png)
基于专家知识的决策树分类概述基于知识的决策树分类是基于遥感影像数据及其他空间数据,通过专家经验总结、简单的数学统计和归纳方法等,获得分类规则并进行遥感分类。
分类规则易于理解,分类过程也符合人的认知过程,最大的特点是利用的多源数据。
如图1所示,影像+DEM就能区分缓坡和陡坡的植被信息,如果添加其他数据,如区域图、道路图土地利用图等,就能进一步划分出那些是自然生长的植被,那些是公园植被。
图1.JPG图1 专家知识决策树分类器说明图专家知识决策树分类的步骤大体上可分为四步:知识(规则)定义、规则输入、决策树运行和分类后处理。
1.知识(规则)定义规则的定义是讲知识用数学语言表达的过程,可以通过一些算法获取,也可以通过经验总结获得。
2.规则输入将分类规则录入分类器中,不同的平台有着不同规则录入界面。
3.决策树运行运行分类器或者是算法程序。
4.分类后处理这步骤与监督/非监督分类的分类后处理类似。
知识(规则)定义分类规则获取的途径比较灵活,如从经验中获得,坡度小于20度,就认为是缓坡,等等。
也可以从样本中利用算法来获取,这里要讲述的就是C4.5算法。
利用C4.5算法获取规则可分为以下几个步骤:(1)多元文件的的构建:遥感数据经过几何校正、辐射校正处理后,进行波段运算,得到一些植被指数,连同影像一起输入空间数据库;其他空间数据经过矢量化、格式转换、地理配准,组成一个或多个多波段文件。
(2)提取样本,构建样本库:在遥感图像处理软件或者GIS软件支持下,选取合适的图层,采用计算机自动选点、人工解译影像选点等方法采集样本。
(3)分类规则挖掘与评价:在样本库的基础上采用适当的数据挖掘方法挖掘分类规则,后基于评价样本集对分类规则进行评价,并对分类规则做出适当的调整和筛选。
这里就是C4.5算法。
4.5算法的基本思路基于信息熵来“修枝剪叶”,基本思路如下:从树的根节点处的所有训练样本D0开始,离散化连续条件属性。
计算增益比率,取GainRatio(C0)的最大值作为划分点V0,将样本分为两个部分D11和D12。
决策树算法总结范文
![决策树算法总结范文](https://img.taocdn.com/s3/m/a96b2a7042323968011ca300a6c30c225901f08e.png)
决策树算法总结范文决策树是一种常用的机器学习算法,它通过使用树形结构来进行决策。
决策树算法具有简单、直观、易解释的特点,在数据挖掘和机器学习领域被广泛应用。
下面将对决策树算法进行详细总结。
首先,决策树算法的基本思想是通过对已有的数据进行分类来构建一个树形结构,从而可以对新的数据进行预测或分类。
决策树的每个内部节点表示一个属性条件,每个叶子节点表示一个类别。
通过判断样本在属性条件下的取值,决策树可以沿着树的分支进行分类。
决策树的构建过程可以分为两个步骤:特征选择和树的生成。
特征选择是决策树构建的关键步骤,它决定了选择哪些属性来进行分裂。
常用的特征选择方法有信息增益、信息增益比、基尼指数等。
决策树的生成是通过递归的方式来构建树的各个节点,直到满足停止条件。
决策树算法有以下几个重要的优点。
首先,决策树算法易于理解和解释,它生成的决策树类似于人类的决策过程,可以直观地解释为“如果...则...”。
其次,决策树可以处理离散型和连续型属性,不需要对数据进行过多的预处理。
此外,决策树算法对于噪声和缺失数据具有很好的鲁棒性。
决策树算法也有一些缺点。
首先,决策树生成的模型往往过于复杂,容易产生过拟合问题。
为了解决这个问题,可以通过剪枝来降低模型的复杂度。
其次,决策树算法对于特征空间的划分是基于属性条件的,可能导致局部最优解而非全局最优解。
决策树算法除了可以用于分类问题,还可以用于回归问题。
在回归问题中,决策树的叶子节点表示样本的输出值。
决策树回归算法具有对异常值鲁棒性较好、易解释等特点。
但是,决策树回归算法也存在过拟合问题,可以通过剪枝来降低模型的复杂度。
除了上述基本的决策树算法,还有一些改进和扩展的算法。
例如,随机森林是一种集成学习算法,它通过构建多棵决策树并进行投票来进行预测。
支持向量机决策树是一种将决策树与支持向量机相结合的方法,可以提高分类和回归的性能。
此外,还有一些对决策树进行优化的算法,如C4.5算法、CART算法等。
第9章 决策树算法
![第9章 决策树算法](https://img.taocdn.com/s3/m/766aa77e302b3169a45177232f60ddccda38e68f.png)
因此,以A为根的信息增益如下公式所示:
第9章 决策树算法
第十九页,共66页。
9.2.1 ID3算法
上面给出的ID3中的信息论的相关定义主要是在两类分类问题的前提下,下面给出将其扩展到多类后的相关定义描述。设训练数据集D一共有m类样例,每类样例数为: 。同样以属性A作为决策树的根,具有v个值 ,它将D分为v个子集 ,假设子集中任意元组属于类C的概率 用表示,并用 估计。那么,该子集的信息量定义如下所示:
第9章 决策树算法
第七页,共66页。
9.1 决策树算法原理
定义9.4 如果Xi是连续属性,那么分裂准则的形式为Xi,其中,就称为节点n的分裂点。定义9.5 如果Xi是离散属性,那么的形式为,其中,就称为节点n的分裂子集。注意:分裂准则与分裂属性、分裂点、分裂子集并不等同,它们是四个不同的概念,并且分裂子集分裂点分裂属性分裂准则
第9章 决策树算法
第二十二页,共66页。
9.2.2.1 C4.5的分裂属性选择度量
ID系列的搜索策略为:(1)优先选择较短的树而不是较长的;(2)选择那些信息增益高的属性离根节点较近的树。 结论:ID系列算法的归纳偏置是因为它在选的时候较短的树比较长的树优先所产生的,也就是那些信息增益高的属性更靠近的根节点将会有优先生成树的特权。
第十一页,共66页。
9.1 决策树算法原理
目前主要使用如下几个量化评估标准 (1)预测准确性 (2)模型强健性 (3)描述的简洁性 (4)计算复杂性 (5)处理规模性
第9章 决策树算法
第十二页,共66页。
9.2 常用决策树算法
ID3算法 ID3是Quinlan于1986年提出的,是机器学习中一种广为人知的一个算法,它的提出开创了决策树算法的先河,而且是国际上最早最有影响的决策树方法,在该算法中,引入了信息论中熵的概念,利用分割前后的熵来计算信息增益,作为判别能力的度量。
决策树(三)分类算法小结
![决策树(三)分类算法小结](https://img.taocdn.com/s3/m/d9f8ec9ca1116c175f0e7cd184254b35eefd1a62.png)
决策树(三)分类算法⼩结引⾔ 本⽂主要是对分类型决策树的⼀个总结。
在分类问题中,决策树可以被看做是if-then规则的结合,也可以认为是在特定特征空间与类空间上的条件概率分布。
决策树学习主要分为三个步骤:特征选择、决策树的⽣成与剪枝操作。
本⽂简单总结ID3和C4.5算法,之后是决策树的修剪。
ID3算法 ID3算法和核⼼是:在决策树各级节点上选择属性时,⽤信息增益(information gain)作为属性的选择标准,具体做法是:检测所有的属性,选择信息增益最⼤的属性产⽣决策树节点,由该属性的不同取值建⽴分⽀,再对各分⽀循环调⽤该⽅法建⽴决策树节点的分⽀,直到所有⼦集仅包含同⼀类别为⽌。
信息增益 了解信息增益,⾸先介绍熵与条件熵的概念。
熵表⽰随机变量不确定性的度量。
设X是⼀个取有限值的离散随机变量,其概率分布为:p(X=x i)=p i则随机变量X的熵定义为:H(X)=−n∑i=1p i logp i,i=1,2,n由定义可知,熵只依赖于X的分布,⽽与X的取值⽆关。
熵越⼤,随机变量的不确定性越⾼,并且:0⩽当随机变量只有两个取值时,例如0,1,则X的分布为:p(X=1)=p,p(X=0)=1-p, 0\leqslant{p}\leqslant1熵为:H(p)=-plog_2p-(1-p)log_2(1-p)当p=0或p=1时,H(p)=0,随机变量完全没有不确定性,当p=0.5时,H(p)=1,熵取最⼤值,随机变量的不确定性最⼤。
条件熵 设随即变量(X,Y),其联合概率分布为:P(X=x_i,Y=y_i)=p_{ij},i=1,2,\dots,n;j=1,2,\dots,n条件熵H(Y|X)表⽰在已知随机变量X的条件下随机变量Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵H(Y|X),定义为X给定的条件下Y的条件概率分布的熵对X的数学期望:H(Y|X)=\sum_{i=1}^np_iH(Y|X=x_i)这⾥,p_i=P(X=x_i)信息增益 特征A对训练数据集D的信息增益,定义为集合A的经验熵H(D)与特征A给定条件下D的经验条件熵H(D|A)之差:g(D,A)=H(D)-H(D|A)⼩结 ID3算法就是在每次需要分裂时,计算每个属性的增益率,然后选择增益率最⼤的属性进⾏分裂. 其核⼼是:决策树各级结点上选择属性时,⽤信息增益(information gain)作为属性的选择标准,以使得在每⼀个⾮叶结点进⾏测试时,能获得关于被测试记录最⼤的类别信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
决策树研发二部目录1. 算法介绍 (1)1.1.分支节点选取 (1)1.2.构建树 (3)1.3.剪枝 (10)2. sk-learn中的使用 (12)3. sk-learn中源码分析 (13)1.算法介绍决策树算法是机器学习中的经典算法之一,既可以作为分类算法,也可以作为回归算法。
决策树算法又被发展出很多不同的版本,按照时间上分,目前主要包括,ID3、C4.5和CART版本算法。
其中ID3版本的决策树算法是最早出现的,可以用来做分类算法。
C4.5是针对ID3的不足出现的优化版本,也用来做分类。
CART也是针对ID3优化出现的,既可以做分类,可以做回归。
决策树算法的本质其实很类似我们的if-elseif-else语句,通过条件作为分支依据,最终的数学模型就是一颗树。
不过在决策树算法中我们需要重点考虑选取分支条件的理由,以及谁先判断谁后判断,包括最后对过拟合的处理,也就是剪枝。
这是我们之前写if语句时不会考虑的问题。
决策树算法主要分为以下3个步骤:1.分支节点选取2.构建树3.剪枝1.1.分支节点选取分支节点选取,也就是寻找分支节点的最优解。
既然要寻找最优,那么必须要有一个衡量标准,也就是需要量化这个优劣性。
常用的衡量指标有熵和基尼系数。
熵:熵用来表示信息的混乱程度,值越大表示越混乱,包含的信息量也就越多。
比如,A班有10个男生1个女生,B班有5个男生5个女生,那么B班的熵值就比A班大,也就是B班信息越混乱。
基尼系数:同上,也可以作为信息混乱程度的衡量指标。
有了量化指标后,就可以衡量使用某个分支条件前后,信息混乱程度的收敛效果了。
使用分支前的混乱程度,减去分支后的混乱程度,结果越大,表示效果越好。
#计算熵值def entropy(dataSet):tNum = len(dataSet)print(tNum)#用来保存标签对应的个数的,比如,男:6,女:5labels = {}for node in dataSet:curL = node[-1] #获取标签if curL not in labels.keys():labels[curL] = 0 #如果没有记录过该种标签,就记录并初始化为0 labels[curL] += 1 #将标签记录个数加1#此时labels中保存了所有标签和对应的个数res = 0#计算公式为-p*logp,p为标签出现概率for node in labels:p = float(labels[node]) / tNumres -= p * log(p, 2)return res#计算基尼系数def gini(dataSet):tNum = len(dataSet)print(tNum)# 用来保存标签对应的个数的,比如,男:6,女:5labels = {}for node in dataSet:curL = node[-1] # 获取标签if curL not in labels.keys():labels[curL] = 0 # 如果没有记录过该种标签,就记录并初始化为0 labels[curL] += 1 # 将标签记录个数加1# 此时labels中保存了所有标签和对应的个数res = 1# 计算公式为-p*logp ,p 为标签出现概率 for node in labels:p = float (labels[node]) / tNum res -= p * p return res1.2. 构建树ID3算法:利用信息熵增益,决定选取哪个特征作为分支节点。
分支前的总样本熵值-分支后的熵值总和=信息熵增益。
T1的信息熵增益:1 – 13/20*0.961 - 7/20*0.863 = 0.073 T2的信息熵增益:1 – 12/20*0.812 - 8/20*0.544 = 0.295 所以使用T2作为分支特征更优。
ID3算法建树:依据前面的逻辑,递归寻找最优分支节点,直到下面情况结束 1. 叶节点已经属于同一标签2. 虽然叶节点不属于同一标签,但是特征已经用完了3. 熵小于预先设置的阈值4. 树的深度达到了预先设置的阈值ID3算法的不足:1.取值多的特征比取值少的特征更容易被选取。
2.不包含剪枝操作,过拟合严重3.特征取值必须是离散的,或者有限的区间的。
于是有了改进算法C4.5C4.5算法:基于ID3算法进行了改进,首先,针对ID3的不足1,采用信息增益率取代ID3中使用信息增益而造成的偏向于选取取值较多的特征作为分裂点的问题。
针对ID3的不足2,采用剪枝操作,缓解过拟合问题。
针对ID3的不足3,采用将连续值先排列,然后逐个尝试分裂,找到连续值中的最佳分裂点。
信息增益率的计算:先计算信息增益,然后除以spliteInfo。
spliteInfo为分裂后的子集合的函数,假设分裂后的子集合个数为sub1和sub2,total为分裂前的个数。
spliteInfo = -sub1 / total * log(sub1 / total) – sub2 / total * log(sub2 / total)#index:特征序号#value:特征值#该方法表示将index对应特征的值为value的集合返回,返回集合中不包含index对应的特征def spliteDataSet(dataSet, index, value):newDataSet = []for node in dataSet:if node[index] == value:#[0,index)列的数据newData = node[:index]#[index+1,最后]列的数据newData.extend(node[index + 1:])newDataSet.append(newData)return newDataSet;#选择最优分裂项def chooseBestFeature(dataSet):#特征个数featureNum = len(dataSet[0]) - 1#计算整体样本的熵值baseEntropy = entropy(dataSet)print("baseEntropy = %f"%(baseEntropy))#保存最大的信息增益率maxInfoGainRatio = 0.0bestFeatureId = -1for i in range(featureNum):#获取特征所有可能的值featureValues = []for node in dataSet:featureValues.append(node[i])print(featureValues)#将特征值去除重复uniqueFeatureValues = set(featureValues)print(uniqueFeatureValues)#按照i特征分裂之后的熵值newEntropy = 0.0#分裂信息spliteInfo = 0.0#按照i所表示的特征,开始分裂数据集for value in uniqueFeatureValues:#当i属性等于value时的分裂结果subDataSet = spliteDataSet(dataSet, i, value)print(subDataSet)#计算占比p = float(len(subDataSet)) / float(len(dataSet)) newEntropy += p * entropy(subDataSet)spliteInfo += -p * log(p, 2)#计算信息增益infoGain = baseEntropy - newEntropy#计算信息增益率if spliteInfo == 0:continueinfoGainRatio = infoGain / spliteInfoif infoGainRatio > maxInfoGainRatio:maxInfoGainRatio = infoGainRatiobestFeatureId = ireturn bestFeatureIdC4.5算法的不足:1.如果存在连续值的特征需要做排序等处理,计算比较耗时2. 只能用于分类使用于是有了CART算法CART算法:也是基于ID3算法优化而来,支持分类和回归,使用基尼系数(分类树)或者均方差(回归树)替代熵的作用,减少运算难度。
使用二叉树代替多叉树建模,降低复杂度。
基尼系数的计算:均方差的计算:计算举例,假设有如下数据源看电视时间婚姻情况职业年龄3 未婚学生124 未婚学生18 2 已婚老师265 已婚上班族472.5 已婚上班族363.5 未婚老师294 已婚学生21如果将婚否作为标签,该问题是一个分类问题,所以使用基尼系数假设使用职业作为特征分支,对于看电视和年龄,都是连续数据,需要按照C4.5的算法排序后处理,这里先分析简单的按照职业开始划分。
又因为,CART算法的建模是二叉树,所以,针对职业来说,有以下组合,学生|非学生,老师|非老师,上班族|非上班族,到底怎么划分,就要通过基尼系数来判断了。
gini = 3 / 7 * (1 – 2 / 3 * 2 /3 – 1 / 3 * 1 / 3) + 4 / 7 * (1 – 3 / 4 * 3 / 4 – 1 / 4 * 1 / 4) = 0.4gini = 2 / 7 * (1 – 1 / 2 * 1 / 2 – 1 / 2 * 1 / 2) + 5 / 7 * (1 – 2 / 5 * 2 / 5 – 3 / 5 * 3 / 5) = 0.49gini = 2 / 7 * (1 – 1 * 1) + 5 / 7 * (1 – 3 / 5 * 3 / 5 – 2 / 5 * 2 / 5) = 0.34所以,如果选择职业来划分,那么首先应该按照上班族|非上班族划分如果将年龄作为标签,该问题是一个回归问题,所以使用均方差同样,先考虑使用职业来划分mean = 开方(12 * 12 + 18 * 18 + 21 * 21 – 3 * 17 * 17) + 开方(26 * 26 + 47 * 47 + 36 * 36 + 29 * 29 – 5 * 32.5 * 32.5) = 34.71其他情况略。
可以看到选择分裂属性这一步骤会比较麻烦,首先要遍历所有特征,找到每一个特征的最优分裂方法,然后在选择最优的分裂特征。
功能树结构特征选取连续值处理缺失值处理剪枝ID3 分类多叉信息增益不支持不支持不支持C4.5 分类多叉信息增益率支持支持支持CART 分类/回归二叉基尼系数(分类),均方差(回归)支持支持支持1.3.剪枝CCP(Cost Complexity Pruning)代价复杂性剪枝法(CART常用)REP(Reduced Error Pruning)错误降低剪枝法PEP(Pessimistic Error Pruning)悲观错误剪枝法(C4.5使用)MEP(Minimum Error Pruning)最小错误剪枝法这里以CCP为例讲解其原理CCP选择节点表面误差率增益值最小的非叶子节点,删除该节点的子节点。