| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 《机器学习》之决策树(四) -> 正文阅读 |
|
[人工智能]《机器学习》之决策树(四) |
写在最前面:本文基于周志华老师的《机器学习》书籍,为了不照本宣科,本文尽可能从自己理解的角度来写,但行文目录及内容还是会参照该书,希望能帮助到大家,如果有理解有误的地方,欢迎大家留言。 1.基本流程决策树是常见的一类机器学习方法,从名字上可以看出是帮助人做判断的一个工具。比如说:对于一个东西,是否有买的必要(yes or no),我们会综合考虑多种因素最终决定(yes or no),这其实就对应了机器学习中的二分类任务。 在判断的过程中,多种 例如:一件商品的价格是9磅15便士,但我现在只有9磅,我个人它的需求程度相对较高,但此时能买吗?显然不能。原因是:我的余额无法支撑起购买花销,此时,我的余额对买不买这个决策影响较大,如果不满足当前的条件的话,是没有必要再考虑下面的影响因素的。 再例如:一件商品的价格仍是9磅15便士,我现在有20磅,我对此件商品的需求程度一般,但有买家评论体验良好,那么此时,我先满足了购买的条件,接下来看需求程度、买家评论,最终可能趋于购买此件商品。当然如果评论一般甚至差的话,虽然满足了前面的购买条件,且有需求(一般),可能也不会购买了。 基于以上讨论,我们产生了一个新的问题:如何在当前因素中,选出决定性最大的那个因素呢?接着往下看。 2.划分选择上面提到,如何选择决定性最大的因素,对应机器学习中的如何选择最优划分属性;随着决策的不断进行,决定是否购买的不确定性也更加明确,这对应机器学习中,随着划分过程不断进行,决策树分支结点所包含的样本尽可能输入同一类,即结点的”纯度“越来越高。 以上的例子对应专业术语可能存在偏差,但主要是为了帮助大家理解,希望大家可以从例子中走出来,回归专业语言。 2.1信息增益在讨论信息增益之前,首先需要知道一个名词”熵“,关于这个名词,我在知乎上找到了一个讲的比较好的,链接:信息时代最重要的一个概念:熵 2.2增益率增益率的提出是针对信息增益存在的问题的,信息增益的问题是对可取值数目较多的属性有所偏好,例如色泽有青绿、乌黑、浅白三种取值,而触感只有硬滑、软粘两种属性,使用信息增益则跟倾向于以色泽为划分属性。那么如何计算得到增益率呢? 2.3基尼指数继续采用上面的符号,数据集D的纯度可用基尼值来度量:Gini(D) =
∑
k
=
1
∣
γ
∣
∑
k
′
≠
k
p
k
p
k
′
\displaystyle \sum^{|{\gamma}|}_{k=1}\displaystyle \sum_{k'≠k}{{p_k}{p_{k'}}}
k=1∑∣γ∣?k′?=k∑?pk?pk′? = 1 -
∑
k
=
1
∣
γ
∣
p
k
2
\displaystyle \sum^{|γ|}_{k=1} {p^2_k}
k=1∑∣γ∣?pk2? 3.剪枝处理基于某样本集训练产生一棵决策树时,容易产生过拟合的现象, 决策树剪枝的基本策略有” 3.1预剪枝预剪枝:在决策树生成的过程中,对每个结点在划分之前先进行估计,如果当前结点的划分不能带来决策树泛化性能提升,则停止划分,并把当前结点标记为叶结点。 3.2后剪枝后剪枝则是先从训练集中生成一个完整的决策树,然后自底向上地对非叶结点进行考察,如将该结点对应的自述换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶子结点。 在《机器学习》这本书中,针对西瓜数据集2.0展开了详细的预剪枝和后剪枝步骤及计算,这里不再计算。 3.3剪枝处理比较不管预剪枝还是后剪枝,都存在一定的优点和缺点。 首先对于预剪枝来说,其可以使很多分支都不“展开”,从而不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。但同时,有些分支当前划分虽然不能带来泛化性能的提升甚至暂时下降,但是后续的划分却能使决策树的泛化性能显著提高,因此预剪枝基于”贪心“禁止分支展开,会给预剪枝决策树带来欠拟合的风险。 对于后剪枝来说,后剪枝决策树通常比预剪枝决策树保留更多的分支。一般情况下后剪枝的欠拟合风险很小,泛化性能往往优于预剪枝。但后剪枝过程是在生成完全决策树之后进行的,并且要白底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树 和预剪枝决策树都要大得多。 4.缺失值处理现实任务中常会遇到不完整样本,即样本的某些属性值确实,例如由于诊测成本、隐私保护等因素,患者的医疗数据在某些属性上的取值未知;尤其是在属性数目较多的情况下,往往会有大量样本出现缺失值,如果简单地放弃不完整样本,仅使用无缺失值的样本来进行学习,显然是对数据信息极大的浪费。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 6:41:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |