| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 1W1H:决策树是什么,基本步骤 -> 正文阅读 |
|
[人工智能]1W1H:决策树是什么,基本步骤 |
是什么决策树,顾名思义是在模仿人类做决策时的思路。常用于决策或预测。 人在决策时,基于过往经验进行分析,就能对经验外的场景,做出判断。 这些经验,在决策树算法中就是‘特征属性’,得到的决策和判断,在算法中就称为‘类别’或者‘标签’。这个根据特征属性进行分析获得分类的过程,就是决策树模型。 比如,相亲介绍时,通过对对方的条件进行分析,比如身高、学历、工作、爱好等,是否符合自己的条件,来决定要不要和这个人见面。 其中身高、学历、工作、爱好,这4个就是算法中的 特征/属性。你要求的条件是,身高170-180,学历是研究生,工作是私企,爱好是建筑。那么属性的取值落在这些区间的,就判断为要见面,否则就不见面。见面和不见面就是决策树中的标签。 这样我们根据【(属性,属性值)+挑选规则】-就可以得到【决策结果(标签)】。 然而在实际生活中,这个挑选规则不是那么容易就能总结出来的。你可能见了很多人,有的符合你认为的条件却发现见面之后不满意,下次不希望再到这种类型的。有的不符合你的条件,但聊下来觉得很合适。也就是说你认为重要的属性,不一定真的是你所看重的。所以怎么样的挑选规则才最适合你,你自己也并不能确定。 决策树算法就是用来分析出这个‘挑选规则’。 决策树算法,是根据你以往相亲经历的数据,计算总结出你可能自己也没有发现的挑选规则。让你可以选出对决策真正有效的属性,按优先级梳理成树的样式,协助你进行判断。 算法步骤决策树算法的目的是,根据许多个属性的值,得到一个明确的分类。也就是n个数据--》1个数据的过程。 n个数据时,你会觉得很混乱不知道怎么做出判断,衡量这种混乱程度的就称为信息熵。决策的过程就是混乱度减轻,信息熵下降的过程。 决策树算法有三个关键步骤:
决策树判断一个属性是不是当前数据集的最优属性,是依靠信息熵变化的程度来选择的。选择某个属性,依照这个属性的值,对训练集进行划分,划分后的子训练集的信息熵之和,相比未分割前的数据集信息熵,下降最多的,就是当前的最优属性。
选取最优属性后,根据此属性的取值,对原始数据集划分,得到子数据集,再将每个子数据集当作完整数据集,迭代进行最优属性的选取,直到数据集中样本都是同一个分类标签时,决策树生成过程结束。 有时根据场景业务需求的不同,也不要求数据集分割到无法再分类的程度,而是指定迭代的次数,即决策树到第几层就不再分割了,直接把当前叶子数据集中数量最多的分类标签作为叶子节点。这是不同的停止规则。 而决策树的三种常见算法,则是根据选择最优属性时计算的信息熵函数不同划分的。ID3 是根据信息熵,C4.5是根据信息增益率。CART是采用了基尼Gini系数。
剪枝是把通过训练集得到的决策树,切掉一些叶子节点,一方面可以减少判决步骤,提高判决效率。但更主要的是,防决策树模型对训练集数据过拟合。 过拟合会导致对测试集数据判决准确率低,也就是说使用这棵决策时实际进行预测时,结果不可靠。 过拟合是指,模型太贴合训练数据集,被一些特例影响,而丧失了泛化能力。无法移植到更普通常见的数据判决中。 预防过拟合可以通过 优化数据集,或者优化决策树进行。
剪枝是减掉一些特征属性节点。根据剪枝的流程次序不同,分为预剪枝和后剪枝。 预剪枝就是在生成决策树的同时衡量,这个节点要不要去掉。 后剪枝是指,决策树已经生成之后,再自下而上地计算,可以去掉哪些节点。 判断一个节点是否要去掉的方法是:将减掉节点前后的两棵决策树模型,分别用在测试集数据上,对比两者的准确率。 如果剪掉后测试集数据的预测准确率明显改善,那么就减掉该节点。用该属性节点下样本数据集中出现概率最大的类别,做为叶子节点代替原本属性节点的位置。 由于决策树算法,无法兼顾属性之间的关联性。如果在决策树生成之前就进行剪枝,也有可能会导致决策树欠拟合。因而后剪枝比预剪枝的拟合性能要好一点,对应的,后剪枝因为计算点更多,需要更大时间开销。 以上是基于自己的理解,对决策树算法的描述。如有不正确的地方,敬请指正。 下面是讲解非常优秀的决策树系列文章,无论是原理还是例子都很清晰到位。放在这里供参考: 决策树(decision tree)(一)——构造决策树方法_天泽28的专栏-CSDN博客_决策树 决策树(decision tree)(二)——剪枝_天泽28的专栏-CSDN博客_决策树剪枝 决策树(decision tree)(三)——连续值处理_天泽28的专栏-CSDN博客_决策树连续变量的处理 决策树(decision tree)(四)——缺失值处理_天泽28的专栏-CSDN博客_决策树缺失值的处理 END |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/21 4:00:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |