| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> [机器学习导论]—— 第四课——决策树 -> 正文阅读 |
|
[人工智能][机器学习导论]—— 第四课——决策树 |
文章目录第四课——决策树会出一道大题 决策树与机器学习 决策树简介决策树是一种基于树结构的分类预测方法 决策树引入决策树(DecisionTree)又称为判定树,是用于分类的一种树结构。其中每个内部结点(internalnode)代表对某个属性的一次测试,叶结点(leaf)代表某个类(class)或者类的分布(classdistribution),最上面的结点是根结点 决策树提供了一种展示在什么条件下会得到什么类别的方法。 决策树组成决策树的基本组成部分:根节点、决策结点、分枝和叶子结点。树是由节点和分枝组成的层次数据结构。 决策树是描述分类过程的一种数据结构,从上端的根节点开始,各种分类原则被引用进来,并依这些分类原则将根节点的数据集划分为子集,这一划分过程直到某种约束条件满足而结束。 决策树基本原理首先对数据进行处理,利用归纳法生成可读的规则和决策树,然后使用决策对新数据进行分析。 本质上决策树是通过一系列规则对数据进行分类的过程。 决策树技术发现数据模式和规则的核心是采用递归分割的贪婪算法。 决策树基本流程1??收集待分类的数据,这些数据的所有属性应该是完全标注的。 2??设计分类原则,即数据的哪些属性可以被用来分类,以及如何将该属性量化。 3??分类原则的选择,即在众多分类准则中,每一步选择哪一准则使最终的树更令人满意。 4??设计分类停止条件,实际应用中数据的属性很多,真正有分类意义的属性往往是有限几个,因此在必要的时候应该停止数据集分裂:
ID3算法针对第三个步骤,ID3算法在决策树各个节点上使用信息增益准则选择特征(属性)进行数据划分,从而递归地构建决策树。 具体方法
🔥信息熵信息熵使信息得以量化
一条信息的信息量和它的不确定性有着直接的关系 比如,要搞清楚一件非常不确定的事,或是我们一无所知的事情,就需要了解大量信息。相反,如果我们对某件事已经有了较多了解,那么不需要太多信息就能把它搞清楚 信息熵是消除不确定性所需信息量的度量,也即未知事件可能含有的信息量。需要引入消除不确定性的信息量越多,则信息熵越高,反之则越低。 例如“中国男足进军2022年世界杯决赛圈”,这个因为确定性很高,几乎不需要引入信息,因此信息熵很低。 信息熵的计算Shannon定义的信息熵的计算公式如下: 其中X表示随机变量,随机变量的取值为{𝑥1,𝑥2,…,𝑥𝑛},𝑃(𝑥𝑖)表示事件𝑥𝑖发生的概率,且有 ∑ 𝑃 ( 𝑥 𝑖 ) = 1 \sum𝑃(𝑥𝑖)=1 ∑P(xi)=1。信息熵的单位为比特(bit) 熵越小表示概率分布的纯度越高,反之,熵越大表示概率分布的纯度越低。 数据集的信息熵设数据集D中有m个不同的类C1,C2,C3,…,Cm 设Di是数据集D中Ci类的样本的集合,|D|和|Di|分别是D和Di中的样本个数 数据集D的信息熵 使用熵衡量数据纯度假设有一个数据集合D,其中只有两个类,一个是正例类,一个是负例类。计算D中正例类和负例类在三种不同的组分下熵的变化情况。 信息增益信息增益可以衡量划分数据集前后数据纯度提升程度。信息增益=原数据信息熵?数据划分之后的信息熵 其中,离散属性𝑎有𝐾个可能的取值{𝑎1,𝑎2,…,𝑎𝐾},其中第𝑘个分支节点包含了𝐷中所有在属性𝑎上取值为 𝑎 𝑘 𝑎^𝑘 ak的样本,记为 𝐷 𝑘 𝐷^𝑘 Dk。 选择划分属性示例以买电脑为例进行决策树划分说明
1?? 确立初始的信息熵
2?? 确立第一次分裂的属性 🍎 如果按照年龄划分
🍌 如果按照收入划分
🍑 如果按照学生划分
🥝 如果按照信用划分
综上,“年龄”属性具有最高信息增益,成为分裂属性 3?? 确立第二次分裂的属性 按照上述方法,可以确定第二次分裂的属性为学生 4?? 划分到不可划分为止 ID3算法总结算法流程
优点
缺点
ID3算法改进—C4.5改进1:用信息增益率代替信息增益来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足 改进2:能够完成对连续值属性的离散化处理 改进3:能处理属性值缺失的情况 改进4:在决策树构造完成之后进行剪枝,一定程度上解决了过拟合问题 改进1:信息增益率D3采用信息增益度量。它优先选择较多属性值的feature,因为属性值多的feature会有相对较大的信息增益。 极端例子:对ID的分裂将产生大量划分(与样本个数一样多),每个分类只包含一个样本,且每个划分都是纯的。 C4.5使用增益率将信息增益规范化,选择具有最大信息增益率的属性作为分裂属性 当K越大时,则SplitInfo (𝐷,𝑎)越大,从而 GainRatio(D,a)越小,计算举例如下
改进2:处理连续值属性采用二分法对连续属性进行处理 假定连续属性a在D上出现了n个不同取值,将这些值从小到大进行排序,记为𝑎1,𝑎2,…,𝑎𝑛 举例说明: 对属性“密度”,其候选划分点集合包含16个候选值:{(0.243+0.245)/2,(0.245+0.343)/2,…,(0.774+0.719)/2} 逐一计算每个二划分对应的信息增益率,选择可以使信息增益率最大的划分 改进3:处理缺失值在某些情况下,可供使用的数据可能缺少某些属性的值,例如:
针对缺失值问题,在决策树的建模过程中,需要解决两个问题:
G a i n ( D , a ) = F r ( I n f o ( D ) ? I n f o A ( D ) ) Gain(D,a)=F_r(Info(D)-Info_A(D)) Gain(D,a)=Fr?(Info(D)?InfoA?(D)) 其中𝐹𝑟为属性值未缺失的实例所占比例;计算 Info(D)和 InfoA(D)时忽略属性值缺失的实例 计算 SplitInfo 时,将缺失的属性值当作一个正常值进行计算。本例中,当作天气有四个值,分别是晴,多云,雨,? \end{align} G a i n R a t i o ( D , 天 气 ) = G a i n ( D , 天 气 ) / S p l i t I n f o 天 气 ( D ) = 0.199 / 1.809 GainRatio(D,天气)=Gain(D,天气)/SplitInfo_天气(D)=0.199/1.809 GainRatio(D,天气)=Gain(D,天气)/SplitInfo天?气(D)=0.199/1.809 分裂时,将属性值缺失的实例分配给所有分支,但是带一个权重 本例14个实例中共13个实例天气属性值未缺失:5个实例的天气属性为“晴”,3个实例的天气属性为“多云”,5个实例的天气属性为“雨”。 因此针对天气属性值缺失的第6个实例:估计天气是晴的概率是5/13,是多云的概率是3/13,是雨的概率是5/13 叶节点以(N/E)的形式定义,其中 N 为到达该叶节点的实例数, E 为其中属于其它分类的实例数。例如,不玩(3.4/0.4)表示3.4个实例到达“不玩”节点,其中0.4个实例不属于“不玩” 待分类实例有缺失值,如何测试该实例属于哪个分支?
改进4:通过剪枝降低过拟合过拟合:可以完美地拟合训练数据,但是不能很好地拟合训练数据外的数据 实际应用中,当训练样本中有噪声或训练样例的数量太少时或缺乏代表性样本时,都容易导致机器学习模型出现过拟合问题。 上述的决策树算法增长树的每一个分支的深度,直到恰好能对训练样例比较完美地分类,会造成决策树分支过多,从而极有可能导致过拟合问题。 所以我们需要通过剪枝减少过拟合
训练过程中允许对数据的过度拟合,然后再利用验证集对树进行修剪 使用留出法定义一个验证集,后剪枝的目标是通过剪枝使得在验证集上的误差率降低。
C4.5总结优点
缺点
CART算法Gini指标分类回归树(CART: Classification and Regression Tree) 使用Gini指标度量数据集的纯度或者不确定性 在分类问题中,假设有m个类,样本点属于第i类的概率为
p
i
p_i
pi?,使用
∣
D
i
∣
∣
D
∣
\frac{|D_i|}{|D|}
∣D∣∣Di?∣?估计,则数据集D的纯度可以用Gini值度量: CART算法CART关键点: 1?? 决策树生成:基于训练数据集生成决策树。 CART假设决策树是二叉树,内部节点特征的取值为“是”和“否”,左分枝为“是”的分支,右分枝是取值为“否”的分支。 CART决策树的生成就是递归的构建二叉决策树的过程。 2?? 决策树后剪枝:用验证数据集对已生成的树进行剪枝并选择最优子树。 3?? CART决策树既可以用于分类也可以用于回归。 具体步骤 根据训练数据集,从根结点开始,递归地对每个结点进行以下操作,构建二叉决策树: 1?? 设结点的训练数据集为D,计算现有特征对该数据集的Gini指标。对每一个特征a,对其可能取的每个值$a^k , 根 据 “ 是 ” 或 “ 否 ” 将 D 分 割 成 ,根据“是”或“否”将D分割成 ,根据“是”或“否”将D分割成D1$和$D2$两部分,计算Gini指标。 2?? 在所有可能的特征a以及它们所有可能的切分点$a^k $中,选择Gini 指标最小的特征及其对应的切分点作为最优特征与最优切分点。依最优特征与最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子结点中去。 3?? 对两个子结点递归地调用步骤1~2,直至满足停止条件。 举例说明
第一步,生成决策树。对数据集属性{是否有房,婚姻状况,年收入}分别计算它们的Gini指数增益,取Gini指数增益值最大的属性作为决策树的根节点属性。 首先,使用Gini值计算数据集D的纯度: 考虑所有可能的二元划分,并计算划分前后的Gini指标,选择能产生最小Gini指标的子集作为分裂子集 1??当分组为{married}|{single, divorced}时: 当根据是否有房来进行划分时,Gini 系数增益计算过程为: 处理连续值属性:年收入属性是一个连续的属性。需要对数据 按升序排序,然后依次用相邻值的中间值作为分隔将样本划分 为两组。例如当面对年收入为60和70这两个值时,算得中间值 为65。以中间值65作为分割点,于是则得Gini系数增益为: 划分依据:基尼指数增益最大。根据计算知道,三个属性划分 根节点的增益最大的有两个: 年收入和婚姻状况,增益都为 0.12。此时,随机选择一个属性作为第一次划分。例如选择婚 姻状况进行第一次划分。 接下来,采用同样的方法,分别计算剩下属性,其中根节点的Gini指数为 (此时是否拖欠贷款的各有3个记录): 最后构建的CART如下图所示: CART总结
CART的缺点 1)无论是ID3, C4.5还是CART,在做特征选择的时候都是选择最优的一个特征来做分类决策,但是大多数,分类决策不应该是由某一个特征决定的,而是应该由一组特征决定的。这样决策得到的决策树更加准确。 2)如果样本发生一点点的改动,就会导致树结构的剧烈改变。这个可以通过集成学习里面的随机森林之类的方法解决。 决策树总结优点简单直观,生成的决策树很直观。 基本不需要预处理,不需要提前归一化,处理缺失值。 既可以处理离散值也可以处理连续值。 可以处理多维度输出的分类问题。 相比于神经网络之类的黑盒分类模型,决策树在逻辑上可以得到很好的解释。 推理过程容易理解,决策推理过程可以表示成If Then形式 缺点决策树算法非常容易过拟合,导致泛化能力不强。可以通过设置节点最少样本数量和限制决策树深度来改进。 决策树会因为样本发生一点点的改动,就会导致树结构的剧烈改变。可以通过集成学习之类的方法解决。 寻找最优的决策树是一个NP难的问题,启发式方法容易陷入局部最优。可以通过集成学习之类的方法来改善。 有些比较复杂的关系,决策树很难学习,比如异或。可以换神经网络分类方法来解决。 参考资料[1]庞善民.西安交通大学机器学习导论2022春PPT [2]CART树算法详解 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年1日历 | -2025/1/8 4:14:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |