gini

机器学习之决策树三-CART原理与代码实现

可紊 提交于 2021-02-18 17:53:04
决策树系列三—CART原理与代码实现 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9482885.html ID3,C4.5算法缺点 ID3决策树可以有多个分支,但是不能处理特征值为连续的情况。 在ID3中,每次根据“最大信息熵增益”选取当前最佳的特征来分割数据,并按照该特征的所有取值来切分, 也就是说如果一个特征有4种取值,数据将被切分4份,一旦按某特征切分后,该特征在之后的算法执行中, 将不再起作用,所以有观点认为这种切分方式过于迅速。 C4.5中是用信息增益比率(gain ratio)来作为选择分支的准则。和ID3一样,C4.5算法分类结果存在过拟合。 为了解决过拟合问题,这里介绍一种新的算法CART。 CART(classification and regression tree) CART由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。 分类:如晴天/阴天/雨天、用户性别、邮件是否是垃圾邮件; 回归:预测实数值,如明天的温度、用户的年龄等; CART决策树的生成就是递归地构建二叉决策树的过程,对分类、以及剪枝采用信息增益最大化准则,这里信息增益采用的基尼指数公式, 当然也可以使用ID3的信息熵公式算法。 基尼指数 分类问题中,假设有K个类别,样本点属于第 类的概率为

决策树

痞子三分冷 提交于 2021-02-17 15:50:02
[TOC] 参考资料 台湾大学《机器学习技法》视频 周志华《机器学习》 李航《统计学习方法》 决策树算法原理(上) 决策树算法原理(下) 深入浅出ML之Tree-Based家族 决策树--信息增益,信息增益比,Geni指数的理解 决策树—剪枝 决策树 决策树是一种运用概率与图论中的树对决策中的不同方案进行比较,从而获得最优方案的风险型决策方法。 决策树学习三步骤: 特征选择 决策树的生成 决策树的剪枝 常用的决策树算法有ID3,C4.5和CART。 用信息论中的熵来度量决策树的决策选择过程 ,这几个算法选择属性划分的方法各不相同。 决策树算法 划分选择 连续值处理 缺失值处理 剪枝 ID3 信息增益 不支持 不支持 不支持 C4.5 信息增益率/增益比 支持 支持 支持 CART-分类 基尼值 支持 支持 支持 CART-回归 最小二乘 支持 支持 支持 划分选择 在了解划分选择前,需要先了解一个概念,信息熵。 信息熵 设$X$是一个取有限个值的离散随机变量,其概率分布为: $$ P(X=x_i)=p(x_i)\i=1,2,...n $$ 信息熵是在结果出来之前对可能产生的信息量的期望: $$ Ent(D)=H(X)=-\sum_{i=1}^{n} p(x_i)log_2(p(x_i))\以2为底,是因为信息熵的单位为比特bit $$ 熵越大,说明系统越混乱

50经典面试题 | 附参考答案

亡梦爱人 提交于 2021-01-31 01:46:03
点击上方 “ AI算法与图像处理 ”,选择加"星标"或“置顶” 重磅干货,第一时间送达 来源:计算机视觉研究院专栏 作者:Edison_G 有兴趣的同学请学会面试答题!祝大家都可以拿到心仪的Offer! 1、请详细说说支持向量机(support vector machine,SVM)的原理 支持向量机,因其英文名为support vector machine,故一般简称SVM,通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。 2、哪些机器学习算法不需要做归一化处理? 在实际应用中,需要归一化的模型: 1.基于距离计算的模型:KNN。 2.通过梯度下降法求解的模型:线性回归、逻辑回归、支持向量机、神经网络。 但树形模型不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、随机森林(Random Forest)。 3、树形结构为什么不需要归一化? 因为数值缩放不影响分裂点位置,对树模型的结构不造成影响。 按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。而且,树模型是不能进行梯度下降的,因为构建树模型(回归树)寻找最优点时是通过寻找最优分裂点完成的,因此树模型是阶跃的,阶跃点是不可导的,并且求导没意义,也就不需要归一化。 4、在k

决策树是如何选择特征和分裂点?

冷暖自知 提交于 2021-01-09 10:13:48
©PaperWeekly 原创 · 作者|贲忠奇 单位|便利蜂算法工程师 研究方向|推荐算法、反作弊 缘起 在解决回归和分类问题的时候,一般会使用 Random Forest、GBDT、XGBoost、LightGBM 等算法,这类算法因为性能好,被业界广泛采用。突然想到树类型的算法都需要明白一个基本问题,树是如何选择特征和分裂点的?其根本要追溯到决策树的种类,每种是如何划分特征和分裂点,以及如何剪枝的。 决策树分为三类:ID3、C4.5、CART。提出时间却是 1984 年提出 CART,1986年提出的 ID3,1993 年提出的 C4.5。在介绍决策树之前需要了解一些信息论的知识,信息、熵、条件熵、信息增益。决策树中的 ID3 和 C4.5 与信息论息息相关。 信息论基础 信息是杂乱无章数据的一种度量方式。在分类问题中,如果待分类的事物可以划分在多个分类中,那么某个分类 的信息定义为: 其中, 是某个分类的信息; 是选择该分类的概率。 熵是信息的期望,也就是计算所有分类包含信息的期望值: 其中,H(Y) 表示分类数据集的熵。 条件熵是在特征 X 给定条件下,类别 Y 的条件概率分布的熵对特征 X 的数学期望。 其中, 表示在特征 X 下的条件熵; 表示特征下 具体特征值的条件熵; 表示 x 和 y 的联合概率分布。 在划分数据集之前之后信息发生的变化叫做信息增益

21.决策树(ID3/C4.5/CART)

孤街浪徒 提交于 2020-12-27 06:31:10
总览 算法 功能 树结构 特征选择 连续值处理 缺失值处理 剪枝 ID3 分类 多叉树 信息增益 不支持 不支持 不支持 C4.5 分类 多叉树 信息增益比 支持 支持 支持 CART 分类/回归 二叉树 基尼系数,均方差 支持 支持 支持 论文链接: ID3: https://link.springer.com/content/pdf/10.1007%2FBF00116251.pdf    C4.5: https://link.springer.com/content/pdf/10.1007%2FBF00993309.pdf sklearn库: https://www.studyai.cn/modules/tree.html 每个样本的输出概率prob:对于一个叶子节点,该叶子节点预测类别对应的训练样本数占该叶子节点所有训练样本数的比例。 决策树可视化: https://www.cnblogs.com/pinard/p/6056319.html 1.ID3(分类) 信息熵: 随机变量不确定性的度量 $$H(D) = -\sum\limits_{k=1}^{K}\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|}$$ 条件信息熵:在特征A给定的条件下对数据集D分类的不确定性 $$H(D|A) = -\sum\limits_{i=1}^{n}\frac{|D

决策树(ID3、C4.5、CART)

ε祈祈猫儿з 提交于 2020-12-27 04:31:55
ID3决策树 ID3决策树分类的根据是样本集分类前后的信息增益。 假设我们有一个样本集,里面每个样本都有自己的分类结果。 而信息熵可以理解为:“样本集中分类结果的平均不确定性”,俗称信息的纯度。 即熵值越大,不确定性也越大。 不确定性计算公式 假设样本集中有多种分类结果,里面某一种结果的“不确定性”计算公式如下 其中 x:为按照某特征分类后的第x种分类结果 p(x):表示该分类结果样本集在总样本集中的所占比例。 Dx:表示样本结果为x的样本数量。 D:表示样本的总数量 可看出某一种分类结果在总样本集中所占比例越少,其“不确定性”也越大。 信息熵计算公式 样本集的熵,就是他所有分类结果的平均不确定性,即所有分类结果不确定性求期望。公式如下: 说白了,就是算出整个样本集中每一个分类结果的不确定性,然后求一个期望值,就作为这整个样本集的熵值。 信息熵增益 熵越大表示事件变数越多,我们要做的就是每一次分类都让事件集变的最稳定。所以当我们选择某一个特征进行分类后,样本集分类前后的熵的减小量就是熵的增益。 ID3算法的核心就是计算按照每一种特征分类后,其熵差大小,选择能使熵差最大的特征作为分类特征。 分类前的熵就是集群整个的熵。 分类后的熵其实是所有分类后的小样本集的熵的期望。 ID3算法缺陷 1、抗噪声性差,如果数据样本数量太少或噪声太大,就会产生过拟合的问题。 样本少

R语言简单实现决策树算法

放肆的年华 提交于 2020-11-23 22:48:19
常用的分支准则方法有三种:信息增益、信息增益率、基尼系数。其实,这里问题就来了,决策树是可以不加限制的生长到有可能到很深的吗?当然是不行的,这就是这一节需要介绍的主要内容之一决策树的修剪,当然还会对决策树算法规律稍微总结一下,并用几个小例子说明R语言的具体实现。 01 决策树的修剪 单单根据决策树算法完成树的建立后,各个叶节点代表不同的种类,部分叶节点可能只包含少数样本,有可能还是一些异常数据,没有足够的支持度,增加了树的深度,过度适配也会导致分类错误率的增加。这就需要修剪决策树,原理是:从树的底部开始,检查每个节点和该节点的子决策树,看是否能将该子决策树去掉而该节点就自然成为了叶节点代替原来的子决策树,生成一个分类错误率更低、树的深度更低的决策树。 决策树的修剪分为 事前修剪 事后修剪 顾名思义,事前修剪就是在决策树的生长过程中,比如叶节点中数据数要大于3或者信息增益值要大于一个事先设定的阈值;否则,就停止分支。事后修剪就是在树的生长完成后进行修剪,引入测试组样本来验证决策树对于新输入数据的分类与预测结果。事后修剪法较前者效率略微低下,但可避免产生稀疏叶节点,对噪声的忍耐程度也更强。这里我们主要介绍事后修剪法。 事后修剪法考虑成本复杂度,我们以R(t)代表t为起始节点的决策树分类错误率。给定一个复杂系数a可以理解为代表决策树节点个数的影响,因为我们定义他们是正比例关系的

决策树(R语言)

余生颓废 提交于 2020-11-23 22:48:05
决策树是有监督学习算法中的一种。基于属性做一系列的决策,每次决策要么进入下一级决策,要么生成最终结果。决策树可以作为集成算法中的基分类器,并且有最为广泛的应用。 决策树算法 要想理解决策树的工作原理,首先需要了解决策树的层次结构。决策树由结点与有向边组成,其中,结点分为如下三种: 根结点 :无入边,但有零条或多条出边 内部结点 :有一条入边和多条出边 叶节点 :有一条入边,无出边 每个叶节点都有一个类标号,根节点和内部结点包含属性测试条件,每个根节点和内部结点都对应一次条件判断,用来分开有不同特性的记录。对一条记录进行判断时,从根结点开始,根据判断进入相应分支,只到叶节点,叶节点的类别即为分类结果。比如,根据历史贷款记录预测贷款申请者是否会逾期,是否有房和婚姻状况作为属性,是否逾期作为类标号。历史数据如下: 序号 有房 婚姻状况 是否逾期 1 是 单身 否 2 否 已婚 否 3 否 单身 是 4 是 已婚 否 5 否 离异 是 6 否 已婚 否 7 是 离异 否 8 否 单身 是 9 否 已婚 否 根据历史贷款记录,可构造如下决策树: 当决策树构造好后,对未标记的记录进行分类就非常容易了。如使用以及构造好的决策树,对如下序号8这个人进行预测,可以知道,最终停在了未逾期这个节点。 序号 有房 婚姻状况 是否逾期 8 是 离异 ? Hunt算法 是常用的用来建立决策树的算法

Python实现CART决策树

强颜欢笑 提交于 2020-11-19 10:45:35
CART决策树 前言 一、CART决策树算法 二、Python代码实现 1.计算结点GINI值 2.分离数据集 3.选择最好的特征 4.生成决策树 5.测试决策树 6.决策树可视化 7.主程序部分 CART决策分类树所有代码 三、运行结果 总结 前言   CART算法的全称是Classification And Regression Tree,采用的是Gini指数(选Gini指数最小的特征s)作为分裂标准,是一种实用的分类算法。 一、CART决策树算法   主要思路是对一个数据集选择几个属性作为特征,对于每个特征提出一个划分条件,根据这个条件将结点分为两个子节点,对于子节点同样利用下一个特征进行划分,直到某结点的Gini值符合要求,我们认为这个结点的不纯性很小,该节点已成功分类。如此反复执行,最后可以得到由若干个结点组成的决策树,其中的每个叶节点都是分类的结果。   某结点的Gini值的计算公式如下:   如果要对某种划分计算Gini值,可以利用加权平均,即:   明确了Gini值的计算以及决策树的基本思路后,就可以继续向下看具体的代码实现了,本文没有使用sklearn库,如果读者只是需要使用该算法,而不想了解算法实际的实现思路的话,可以无需向下看了。 二、Python代码实现 主要分为6个步骤: 寻找到最佳属性 创建决策树 将上一结点分裂,分别计算左、右子节点的Gini值。

Python快速实战机器学习(7) 决策树

蓝咒 提交于 2020-11-15 04:44:35
点击上方“蓝字”带你去看小星星 引言 近日,南大周志华等人首次提出使用 深度森林 方法解决多标签学习任务。该方法在 9 个基准数据集、6 个多标签度量指标上实现了最优性能。 而深度森林是基于 决策树 构建的深度集成模型,因此对于想了解深度森林以及对这个方法本身感兴趣的同学需要对决策树有一个了解。 在这一讲中,你将会: 1、认识决策树; 2、大体了解决策树是如何训练的; 3、学会sklearn中决策树使用方法。 什么是决策树 如果我们在意模型的 可解释性 ,那么决策树(decision tree)分类器绝对是上佳的选择。如同名字的字面意思,我们可以把决策树理解为基于一系列问题对数据做出的分割选择。 举一个简单的例子,我们使用决策树决定去不去见相亲对象 这就是决策树,每一层我们都提出一个问题,根据问题的回答来走向不同的子树,最终到达叶子节点时,做出决策(去还是不去)。 再比如我们可以用一个决策树来判断一个西瓜好瓜还是坏瓜: 在上面的两个例子中,方框子树为 特征 ,比如是“美不美”或者“触感”; 而分支的条件为特征下的 数据 ,比如西瓜例子中触感:硬滑或者软粘。 虽然上图中做出的每个决策都是根据离散变量,但也可以用于连续型变量,比如,对于Iris中sepal width这一取值为实数的特征,我们可以问“sepal width是否大于2.8cm 当一颗决策树的节点以及判断条件都被确定的时候