精华内容
下载资源
问答
  • CART树回归代码

    2017-07-13 18:52:29
    CART树回归附件代码
  • 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点 目录 决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、...

    决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点

    目录

    决策树ID3、决策树C4.5、决策树CART、CART树的生成、树的剪枝、从ID3到CART、从决策树生成规则、决策树优缺点

    决策树ID3

    决策树C4.5

    决策树CART

    CART树的生成

    树的剪枝

    从ID3到CART

    从决策树生成规则

    决策树优缺点


    决策树ID3

    ID3采用信息增益作为选择最优的分裂属性的方法,选择熵作为衡量节点纯度的标准,根据以上规则对根节点进行分裂,分别计算每一个属性的信息增益,选择信息增益最大的属性进行分裂

    决策树C4.5

    C4.5算法用信息增益率选择特征,在树的构造过程中会进行剪枝操作优化,能够自动完成对连续属性的离散化处理;C4.5算法在选择分割属性的时候选择信息增益率最大的属性。

    决策树CART

    分类与回归树(Classification and Regression Tree, CART)既可以用于回归也可以用于分类CART决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些单元上确定预测的概率分布,也就是输入给定的条件下输出的条件概率分布。使用基尼系数作为数据纯度的量化指标构建决策树。CART算法使用Gini增长率作为分割属性选择的标准,选择Gini增长率最大的作为当前数据集的分割属性

    CART树的生成

    CART使用二元切分法来处理连续型数值。CART是在给定输入随机变量X条件下输出随机变量Y的条件概率分布的学习方法。CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支CART 树的生成就是递归地构建二叉决策树的过程。对回归树用平方误差最小化准则,对分类树用基尼指数最小化准则 ,进行特征选择,生成二叉树。如何选择分裂的属性:分裂的目的是为了能够让数据变纯,使决策树输出的结果更接近真实值。那么CART是如何评价节点的纯度呢?如果是分类树,CART采用GINI值衡量节点纯度;如果是回归树,采用样本方差衡量节点纯度。节点越不纯,节点分类或者预测的效果就越差

    树的剪枝

    决策树算法的贪心策略很容易对训练集过拟合,导致模型的泛化能力差。为了解决这个问题,一般需要对决策树进行剪枝处理。剪枝有先剪枝和后剪枝两种。先剪枝是指在决策树的生成过程中就采取一定措施来限制某些不必要的子树的生成(例如,在C4.5算法决策树生成的过程中可以设置一个阈值,当小于某个值就不再分叉子树了)。后剪枝就是先使用训练集中的大部分数据去尽可能生成一颗大的树,然后再从决策树的底部开始不断剪枝,直到形成一颗只有根节点的子树,从而得到一个剪枝后的子树序列,最后利用余下的数据进行交叉验证,挑选最优子树。

    ID3CART

    模型

    分类

    回归

    树叉

    特征类型

    选择特征的标准

    ID3

    多叉树

    离散特征

    信息增益

    C4.5

    多叉树

    离散、连续特征

    信息增益比

    CART

    二叉树

    离散、连续特征

    分类用基尼指数,回归用平方误差

     

     

    从决策树生成规则

    可以从训练好的决策树结构中提取一些对未来场景和任务有用的通用规则。决策树完全可以转化为一条条规则,而规则提取也完全可以转化为决策树的形式。

    决策树优缺点

    优点:

    决策树易于理解和解释,可以可视化分析,容易提取出规则;
    可以同时处理标称型和数值型数据;
    比较适合处理有缺失属性的样本;
    能够处理不相关的特征;
    测试数据集时,运行速度比较快;
    在相对短的时间内能够对大型数据源做出可行且效果良好的结果
     

    缺点:

    容易发生过拟合(随机森林可以很大程度上减少过拟合);
    容易忽略数据集中属性的相互关联;
    对于那些各类别样本数量不一致的数据,在决策树中,进行属性划分时,不同的判定准则会带来不同的属性选择倾向;信息增益准则对可取数目较多的属性有所偏好(典型代表ID3算法),而增益率准则(CART)则对可取数目较少的属性有所偏好,但CART进行属性划分时候不再简单地直接利用增益率尽心划分,而是采用一种启发式规则)(只要是使用了信息增益,都有这个缺点,如RF)。
    ID3算法计算信息增益时结果偏向数值比较多的特征。

     

    展开全文
  • 代码功能描述:(1)读取第二次xlsx文件,该文件已经人工加上了属性类标签,划分数据集为... (2)调用相关函数用训练集构造CART树字典 (3)用测试集得到混淆矩阵并且输出正确率 (4)调用相关函数得到该决策树图形
  • CART树实现

    2019-01-31 17:40:58
    首先向原博客作者表示感谢,其次这是本人学习机器学习算法第一次实现机器学习算法,感觉对CART树理解又进了一步,(本人强烈建议把常用的机器学习算法能够尽量的实现一遍,会对公式的理解和其他细节更加清...

    本文为CART树实现,基于python3语言,  参考的博客为http://www.dmlearning.cn/single/6362dfbeddd6448c9ff1ceaf6eec0ef9.html

    首先向原博客作者表示感谢,其次这是本人学习机器学习算法第一次实现机器学习算法,感觉对CART树理解又进了一步,(本人强烈建议把常用的机器学习算法能够尽量的实现一遍,会对公式的理解和其他细节更加清晰明了。)CART树的概念和公式网上搜索一大把,本文只是介绍CART树具体实现。如有错误请不吝赐教,谢谢

    import numpy as np 
    import pandas as pd 
    
    class TreeNode(object):
    	"""docstring for TreeNode"""
    	def __init__(self, trueBranch = None, falseBreach = None, value = None, result = None):
    		self.trueBranch = trueBranch
    		self.falseBreach = falseBreach
    		self.value = value
    		self.result = result
    
    data = pd.read_csv('./fishiris.csv')
    y = data['Name']
    x = data.drop(["Name"], axis=1 )
    
    def calculateDiffCount(datas):
    	result = {}
    	for data in datas:
    		if(data not in result):
    			result[data] = 1
    		else: 
    			result[data] += 1
    	return result
    #计算每一个feature下所选元素的基尼系数
    def Gini(datas):
    	length = len(datas)
    	imp = 0.0
    	counts = calculateDiffCount(datas)
    	for i in counts:
    		imp += np.square(counts[i] / length)
    	return 1 - imp
    #构建CART树,使用递归方法构建分类回归树,其中在所分类的基尼指数增益为0时停止分裂。
    def bulidDecisionTree(x, y):
    	currentGini = Gini(y)
    	print('currentGini = ', currentGini)
    	bestGini = 0.0
    	colnums = len(x[0])
    	rows = len(x)
    	for col in range(colnums):
    		val_set = set(x[col] for x in x)
    		for val in val_set:
    			listx1, listx2, listy1, listy2 = SplitData(val, col, x, y)
    			p = len(listy1) / rows
    			gain = currentGini - p * Gini(listy1) - (1 -p) *Gini(listy2)
    			print('gain = ', gain)
    			if gain > bestGini:         #选择基尼指数增益最大为分裂点
    				bestGini = gain
    				Bestvalue = val
    				bestlist = [listx1, listy1, listx2, listy2]
    
    	if bestGini > 0:
    		trueBranch = bulidDecisionTree(bestlist[0], bestlist[1])
    		falseBranch = bulidDecisionTree(bestlist[2], bestlist[3])
    
    		return TreeNode(value = Bestvalue, trueBranch = trueBranch, falseBreach = falseBranch)
    	else:
    		return TreeNode(result = list(zip(x, y)))
    
    
    def SplitData(value, col,  x, y):
    	listx1 = []
    	listx2 = []
    	listy1 = []
    	listy2 = []
    
    	for (tempx, tempy) in zip(x, y):
    		if(tempx[col] >= value):
    			listx1.append(tempx)
    			listy1.append(tempy)
    		else:
    			listx2.append(tempx)
    			listy2.append(tempy)
    	return listx1, listx2, listy1, listy2
    
    
    xdata = x.values.tolist()
    ydata = y.values.tolist()
    root = bulidDecisionTree(xdata, ydata)

    首先核心的地方就是计算gini指数和生成树,其中 gini指数为def Gini(datas): 生成树为def bulidDecisionTree(x, y):

    该程序还有很多未完善的地方,比如对string变量的gini指数增益计算,还有剪枝操作,还有对连续值进行gini指数计算时过程为先将所选feature的元素进行从小到大排列,后将两两元素取均值进行左右两树基尼指数增益的计算,选取最佳切分点,

    该程序还不太完善,后续会继续完善该程序, 但对理解CART树的核心内容还是很有用的。谢谢

    展开全文
  • 分类树与CART树python实现(含数据集),结构清晰易懂,适合初学者
  • 机器学习之CART树

    2020-12-26 14:15:39
    CART树1、CART树介绍2、Cart树生成 1、CART树介绍 分类回归树(CART,Classification And Regression Tree)算法是一种决策树分类方法。 它采用一种二分递归分割的技术,分割方法采用基于最小距离的基尼指数估计函数,...

    1、Cart树介绍

    分类回归树(CART,Classification And Regression Tree)算法是一种决策树分类方法。
    它采用一种二分递归分割的技术,分割方法采用基于最小距离的基尼指数估计函数,将当前的样本集分为两个子样本集,使得生成的的每个非叶子节点都有两个分支。因此,CART算法生成的决策树是结构简洁的二叉树。
    其核心思想与ID3和C4.5相同,主要的不同处在于CART在每一个节点上都采用二分法,即每个节点都只能有两个子节点,最后构成的是二叉树。
    Cart算法步骤:
    1.决策树的生成:基于训练数据集生成决策树,生成的决策树要尽量大。
    2.决策树的剪枝:用验证数据集对以生成的树进行剪枝并选择最优子树。这时用损失函数最小作为剪枝标准。

    2、Cart树生成

    决策树的生成就是递归地构建二叉决策树的过程,对回归树用平方误差最小准则,对分类树用基尼指数最小化原则,进行特征选择,生成二叉树。

    3、回归树

    如果目标是连续变量,则是Regression Tree回归树。CART树是二叉树,不像多叉树那样形成过多的数据碎片。
    对于连续变量X(x1…xn)如何处理?
    首先将值排序,分别取其两相邻值的平均值点作为分隔点,将树一分成左枝和右枝,不断扫描,进而判断最佳分割点。特征值小于分裂值就走左子树,或者就走右子树。

    下面从数学层面做推导:
    假设X与Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集:
    在这里插入图片描述

    考虑如何生成回归树。
    一个回归树对用着一个特征空间的一个划分及在划分单元上的是输出值。假设已输入特征空间划分为M个单元R1,R2…Rm,并且在每个单元上有一个固定的输出类别Cm,于是我们把回归树表示为:
    在这里插入图片描述

    损失函数:
    在这里插入图片描述

    表示回归树对于训练数据的预测误差,用平方误差最小的准则求解每个单元上的最优输出值。我们考虑特征空间的第m个单元上的的最优值,它是上的所有输入实例对应输出的的均值:(连续值通常的最优值都是取均值)
    在这里插入图片描述

    问题是怎么样对输入空间进行划分,我们采用启发式的方法;选择第j个变量和它取的值s,作为切分变量(splitting variable)和切分点(splitting point),并定义两个区域:
    在这里插入图片描述
    然后我们需要寻求切分变量j和最有优切分点s,求解如下方程:
    在这里插入图片描述
    对固定输入变量j可以寻找最优切分点s:
    在这里插入图片描述
    遍历所有的输入变量,找到最优的切分变量j,构成一个对(j,s),依次将输入空间划分为两个区域。
    接着对每个区域重复上述过程,直到满足停止条件为主。这样就生成了一颗回归树,也称为最小二乘回归树(least square regression tree)。
    为什么是平均值?
    均方误差的目标函数最优值(取定值)是均值
    在这里插入图片描述

    4、分类树

    4.1 分类树原理

    如果目标变量是离散变量,则是classfication Tree分类树。
    分类树是使用树结构算法将数据分成离散类的方法。
    (1) 分类树两个关键点:
    将训练样本进行递归地划分自变量空间进行建树
    用验证数据进行剪枝。
    (2)对于离散变量X(x1…xn)处理:
    分别取X变量各值的不同组合,将其分到树的左枝或右枝,并对不同组合而产生的树,进行评判,找出最佳组合。如果只有两个取值,直接根据这两个值就可以划分树。取值多于两个的情况就复杂一些了,如变量年纪,其值有“少年”、“中年”、“老年”,则分别生产{少年,中年}和{老年},{上年、老年}和{中年},{中年,老年}和{少年},这三种组合,最后评判对目标区分最佳的组合。因为CART二分的特性,当训练数据具有两个以上的类别,CART需考虑将目标类别合并成两个超类别,这个过程称为双化。这里可以说一个公式,n个属性,可以分出(2^n-2)/2种情况。

    4.2 分类树算法步骤

    CART分类树生成算法:
    输入:训练数据集D,停止计算的条件;
    输出:CART决策树
    根据训练数据集,从根节点开始,递归地对每个节点进行以下操作,构建二叉决策树:
    (1)设结点的训练数据集为D,计算现有特征对该数据集的基尼指数,此时对每一个特征A,对其可能取得每个值a,根据样本点对A=a的测试为“是”或“否”将D分割成D1和D2两部分,利用集合的基尼指数公式计算A=a的基尼指数。
    在这里插入图片描述
    (2)在所有可能的特征A(切分变量)以及他们的所有可能的切分点a中,选择基尼指数最小的特征及其对应的切分点作为最优特征与最优切分点。依照最优特征和最优切分点,从现结点生成两个子节点,将训练数据集依特征分配到两个子节点中去。
    (3)对两个子节点递归地调用(1),(2),直到满足停止条件。
    (4)生成CART决策树。

    4.3 案例

    在这里插入图片描述
    应用上述数据集,应用CART算法生成决策树。
    分析:首先计算各特征的基尼指数,选择最优特征以及其最优切分点。我们以A1,A2,A3,A4表示年龄、有工作、有自己的房子和信贷4个特征,并以1,2,3表示年龄的值为青年、中年、老年,以1、2表示有工作和有自己的房子的值为是和否,以1、2、3表示信贷情况的值为非常好、好和一般。
    求特征A1的基尼指数:
    在这里插入图片描述
    优于Gini(D,A1=1)和Gini(D,A1=3)相等,且最小,所以A1=1和A1=3都可以选作最优切分点。
    求特征A2和A3的基尼指数:
    在这里插入图片描述
    由于A2和A3只有一个切分点,所以他们就是最优切分点。
    求解特征4的基尼指数:
    在这里插入图片描述
    Gini(D,A4=3)最小,所以A4=3为A4的最优切分点。
    在A1,A2,A3,A4几个特征中,Gini(D,A3=1)=0.27最小,所以选择A3为最优特征,A3=1为其最优切分点。于是根节点生成两个子节点,一个是叶节点,对另一个结点继续使用以上方法在A1,A2,A3中选择最优特征及其最优切分点,结果是A2=1,依次计算得知,所有结点都是叶节点。
    该例子按照CART算法和ID3算法生成的决策树完全一致的。下图我们只拿A3和A2作为最优划分来切分数据集。
    在这里插入图片描述

    5、Cart树总结

    创建分类树递归过程中,CART每次都选择当前数据集中具有最小Gini信息增益的特征作为结点划分决策树。ID3算法和C4.5算法虽然在对训练样本集的学习中可以尽可能多地挖掘信息,但其生成的决策树分支多、规模较大,CART算法的二分法可以简化决策树的规模(叶子结点个数),提高生成决策树的效率。对于连续特征,CART也是采取和C4.5同样的方法处理。为了避免过拟合(Overfitting),CART决策树需要剪枝(后剪枝)。预测过程当然也就十分简单,根据产生的决策树模型,延伸匹配特征值到最后的叶子节点即得到预测的类别。

    展开全文
  • CART树的剪枝

    2017-08-28 17:42:21
    CART树剪枝 预剪枝 控制树的深度设定基尼系数(残差)的阈值,即若当前划分特征的基尼系数(残差)小于阈值时不再对当前的特征进行划分设定样本量的阈值,样本量小于阈值不再划分 后剪枝 总体思路: 由完全树T0开始,...

    CART树剪枝

    预剪枝

    • 控制树的深度
    • 设定基尼系数(残差)的阈值,即若当前划分特征的基尼系数(残差)小于阈值时不再对当前的特征进行划分
    • 设定样本量的阈值,样本量小于阈值不再划分

    后剪枝

    总体思路:

    1. 由完全树T0开始,剪枝部分结点,得到T1,再次剪枝部分结点得到T2。。。知道仅剩树根的树Tk;
    2. 通过交叉验证,对以上k个树分别评价,选择损失函数最小的数Tα

    具体过程:

    • 损失函数 

      原来的损失函数,子树的整体损失等于,对于每个叶子节点t,叶子结点t的样本个数再乘以叶子结点t的熵,的加和。   

       在此基础上,加上正则项,损失函数可转化为: 



    lTleafl为子树的叶子结点的个数,Cα(T)是参数是α时的子树T的整体损失。参数α权衡训练数据的     拟合程度与模型的复杂度。设定了α就相当于给树剪枝了,保证了不会随着叶结点的增多,让模型复杂。

    在真实计算过程中,当α = 0时,相当于不加正则项,也就是相当于未剪枝,也就是表示未剪枝的决策树损失最小;当α = 正无穷时,充分剪枝,造成单根结点的决策树损失最小


    • 剪枝系数

    假定当前对以r为根的子树剪枝,可以计算剪枝前和剪枝后的损失函数,令两者相等,可以恰巧求出一个α,让剪枝前剪枝后损失相似,此时的α即为剪枝系数。

    表示了剪枝后整体损失函数减少的程度。 



    • 剪枝过程
    1. 对整体树T0,计算内部各个结点的剪枝系数
    2. 查找剪枝系数最小的结点进行剪枝,得到一棵新的决策树
    3. 然后对新的决策树再次计算各个结点的剪枝系数,再剪枝,重复以上步骤,知道只剩一个结点。
    4. 通过以上步骤生成了T0,T1,…Tk决策树
    5. 对这些决策树依次进行交叉验证,选取最优子树Tα 
    展开全文
  • 决策树中的CART树

    千次阅读 2018-04-25 18:06:57
    1、cart树的介绍 : Classification and Regression Trees (CART): (L. Breiman, J. Friedman, R.Olshen, C. Stone) cart模型是一种决策树模型,它既可以用于分类,也可以用于回归,其学习可以分为两步: (1)决策树...
  • 机器学习笔记-CART树

    2019-02-23 17:15:09
    机器学习笔记-CART树 摘要 CART树可以回归树或分类树 CART树采用L2-norm作为损失函数度量追求方差 即(Y预测-y)^2 最小 GBDT中是基于CART回归树,其也追寻方差最小来构建GBDT树,但在构建过程中后面的树是基于...
  • CART树(分类回归树)

    千次阅读 2018-08-28 16:37:58
    (1)CART树简介 (2)CART树节点分裂规则 (3)剪枝 --------------------------------------------------------------------------------------------------------------------- 一、简介 CART分类回归树是一...
  • CART树:树回归和标准回归的比较、o2o
  • CART树算法的剪枝算法

    2018-07-16 00:02:03
    输入是CART树建立算法得到的原始决策树T。输出是最优决策子树Tα。算法过程如下:1)初始化αmin=∞, 最优子树集合ω={T}。2)从叶子节点开始自下而上计算各内部节点t的训练误差损失函数Cα(Tt)(回归树为均方差,...
  • 基于CART树的银行贷款风控模型实现
  • 树类算法之---决策树Cart树Gini系数就算原理。

    千次阅读 多人点赞 2019-05-23 18:16:55
    ID3树与CART树的区别: ID3算法中,选择的是信息增益来进行特征选择,信息增益大的特征优先选择。 而在C4.5中,选择的是信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的缺点。 但是无论是ID3还是C...
  • 决策树ID3,C4.5是多叉树,CART树是一个完全二叉树,CART树不仅能完成分类也能实现回归功能,所谓回归指的是目标是一个连续的数值类型,比如体重、身高、收入、价格等,在介绍ID3,C4.5其核心是信息熵的应用,而在...
  • CART树算法详解

    万次阅读 多人点赞 2018-03-22 08:05:57
    CART假设决策是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些...
  • 二、决策树类型(ID3、C4.5、CART树) 1、ID3:解决分类问题 1.1、分裂节点:计算信息增益,值最大的为当前分裂特征 信息论中定义为互信息:,信息增益越大,当前节点该特征越适合做分裂特征 熵的理解:特征的...
  • ID3,ID4.5,CART树

    千次阅读 2017-04-01 10:50:08
    ID3,ID4.5,CART树算法及对比
  • CART树为什么使用GINI系数

    千次阅读 2019-03-25 23:08:15
    1.ID3树与CART树的区别 ID3算法中,选择的是信息增益来进行特征选择,信息增益大的特征优先选择。 而在C4.5中,选择的是信息增益比来选择特征,以减少信息增益容易选择特征值多的特征的缺点。 但是无论是ID3还是C4.5...
  • CART树回归

    2017-10-07 23:29:59
    基于的回归算法是一类基于局部的回归算法,通过将数据集...分类回归(Classification And Regression Tree,CART)算法是使用比较多的一种模型,CART算法既可以解决分类问题也可以解决回归问题。前面的博客随机森林
  • 一、CART树简介: ClassificationAnd Regression Tree(CART)是决策树的一种,并且是非常重要的决策树,属于Top Ten Machine Learning Algorithm。顾名思义,CART算法既可以用于创建分类树(ClassificationTree),...
  • ID3、C4.5与CART树的联系与区别: 参考博客: 链接1 链接2 特征选择准则: ID3的特征选择准则为信息增益,即集合D的经验熵H(D)与给定特征A下条件经验熵H(D|A)之差,即: H(D)表现了数据集D进行分类的不确定性,而H...
  • 看了李航的《统计学习方法》中CART树的剪枝,不很清晰,又查了网上一些相关资源,终于明白了整个过程,个人的理解如下(原本写在OneNote上,公式粘贴过来不能显示,就贴图了): but...既然剪来剪去都要所有子树...
  • 为什么梯度提升方法倾向于选择决策树(通常是CART树)作为基学习器呢?这与决策树算法自身的优点有很大的关系。决策树可以认为是if-then规则的集合,易于理解,可解释性强,预测速度快。同时,决策树算法相比于其他...
  • CART树 python小样例

    2018-07-23 18:08:00
    决策不断将数据切分成小数据集,直到所有目标变量完全相同,或者数据不能再...实现CART算法和回归,回归和分类的思路类似,但叶节点的数据类型不是离散型,而是连续型 回归的一般方法 (1)收集数据:...
  • CART树算法解析加举例

    2019-08-27 16:11:01
    CART假设决策是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支。这样的决策等价于递归地二分每个特征,将输入空间即特征空间划分为有限个单元,并在这些...
  • ID3、C4.5、CART树算法简介,这几个算法有什么区别?对于异常值和分类值有什么需要注意的? 目录 ID3、C4.5、CART树算法简介,这几个算法有什么区别?对于异常值和分类值有什么需要注意的? ​ ID3、C4.5、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,764
精华内容 8,305
关键字:

cart树