| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> AI遮天传 ML-决策树 -> 正文阅读 |
|
[人工智能]AI遮天传 ML-决策树 |
决策树学习是最早被提出的一批机器学习的方法之一,由于它好用且具有很强的可解释性,到现在依然在被广泛使用。 一、决策树学习基础(比较简单,一带而过)? 例:享受一种运动? ?对于新的一天,是否可以去享受运动? 适用决策树学习的经典目标问题
样本表示
训练样本 决策树概念 决策树发展历史-里程碑 ? 1966,由Hunt首先提出 ? 1970’s~1980’s ????????? CART 由Friedman, Breiman提出 ????????? ID3 由 Quinlan 提出 ? 自1990’s以来 ????????? 对比研究、算法改进(Mingers, Dietterich, Quinlan, etc.) ????????? 最广泛使用的决策树算法: C4.5 由 Quinlan 在 1993 年提 ? 二、经典决策树算法 – ID3自顶向下,贪心搜索 递归算法 核心循环:
如:outlook是我们找出的最佳决策属性,我们就把它当成当前的根节点,根据outlook也就是天气情况我们就会有不同的分支不同的子节点,比如sunny、overcast、rain,如到了overcast就已经结束/有标签了,说明已经被分好了,如果还没被分好,我们就按照数据的取值把一批数据分到sunny、rain对应的分支上,humidity、wind,进入递归继续执行。如此时humidity是我们选择的最佳属性。 问题:
Q1:哪个属性是最佳属性?比如这里有两个属性 A1(湿度)和 A2(风力)(64个数据,29个正例35个负例)
此时到底A1和A2(湿度和风力)哪个作为根节点/最佳决策属性好呢?
如上图,假如有两种水果,西瓜和柠檬。我们使用颜色color作为根节点则只需要根据green还是yellow便能够判断是西瓜还是柠檬。而如果我们选择size大小,大的肯定是西瓜了,而小的说不定还是小西瓜,所以还要根据颜色来判断。 属性选择和节点混杂度(Impurity)
如上图第一个的例子,经过了 颜色 ,则左边绿色都是西瓜右边黄色都是柠檬 而在第二个 尺寸 小 的节点上,又有西瓜又有柠檬,就不够 纯。 如何衡量混杂度?1.?熵(Entropy) (广泛使用) 节点N的熵表示为在这个节点下不同的取值(w:以size大小为例w1是大w2是小,为w1的概率,为w2的概率。),每一个的和的相反数。
计算并判断下图例子: ?可以看到A1 A2都是29+,35-,接近一半一半,熵应该是接近于1的。 ? ? 蓝线:1个类时概率为1,2个类时概率为0.5,16个类时概率为1/16 红线:1个类时最大熵为0,2个类时最大熵为1,无限增长。(其中最大时为均匀分布的) ? 2. Gini 混杂度 ( Duda 倾向于使用 Gini 混杂度) 在经济学和社会学上人们用 基尼系数 来衡量一个国家发展的平衡与否。 表示所有不相同情况的乘积(如果是A、B两种情况则p(A)*p(B),如果是A、B、C三种情况则p(A)*p(B)+p(A)*p(C)+p(B)*p(C)) 或者?1-相同情况的乘积 () n = number of class(也是因为是均匀分布的,各部分都是1/n) 有了上限,上限为1. ? 3. 错分类混杂度 1-最大类的概率,即1-大多数进入的那个类(分对了,1-就是错的) ? 度量混杂度的变化--信息增益(IG)由于对A的排序整理带来的熵的期望减少量 ?原始S的熵值-经过属性A分类以后的期望熵值 经计算,可见A1(湿度)的IG(信息增益)更大一些,也就意味着我们获得了更多的信息(减少的熵更多一些),我们选择A1作为根节点。 ? 例:根据下表选择用哪个属性做根节点 Outlook的Gain最大,选它作为根节点。? ? Q2: 何时返回(停止分裂节点)??“如果训练样本被完美分类” ? 情形 1: 如果当前子集中所有数据 有完全相同的输出类别,那么终止 ? ? 情形 2: 如果当前子集中所有数据 有完全相同的输入特征,那么终止 ????????比如:晴天-无风-湿度正常-温度合适,最后有的去了有的没去。此时即使不终止也没办法了,因为能用的信息已经用完了。这意味着:1、数据有噪声noise。需要进行清理,如果噪声过多说明数据质量不够好。2、漏掉了重要的Feature,比如漏掉了当天是否有课,有课就没办法出去玩。 ? 可能的情形3: 如果 所有属性分裂的信息增益为0, 那么终止? ?这是个好想法吗?(No) 如上图此时树的第一个节点都找不出来(IG都是0),如果3说得对,那此时决策树都无法构建。 假如我们不要这个条件,反正都一样,IG都是0,多个最大值的时候随机选一个关系就被构建出来了(此时也完美分类了) ?即在ID3中只有上面两种情况会停止分裂,如果IG=0,则随机取一个就好。 ? ID3算法搜索的假设空间
????????目标函数一定在假设空间里
????????不超过20个问题(根据经验,一般feature不超过20个,过于复杂树比较长也容易产生过拟合)
????????局部最优
????????数据驱动的搜索选择 ????????对噪声数据有鲁棒性 ? ID3中的归纳偏置(Inductive Bias)
????????没有对假设空间作限制
????????尝试找到最短的树 ????????该算法的偏置在于对某些假设具有一些偏好 (搜索偏置), 而不是对假设空间 H 做限制(描述偏置). ????????奥卡姆剃刀(Occam’s Razor)*:偏向于符合数据的最短的假设 ? CART (分类和回归树)一个通用的框架:
许多决策树算法都在这个框架下,包括ID3、C4.5等等。 ? 三、过拟合问题如上图,b比a更好,但如果像c一样每个点都被完美拟合了,错误率为0,但是如果有一个新的点: 此时c的算法的误差就太大了,过于匹配训练数据了,使得它在测试的更多未见实例上的泛化能力下降了。 决策树过拟合的一个极端例子:
即此时的树就是一个数据查表,可以类比数据结构里哈希表。这意味着查找时只能查找表里有的数据,对于没有的数据查不到,没什么泛化能力。 ? 四、如何避免过拟合对决策树来说有两种方法避免过拟合
在实际应用中,一般预剪枝更快, 而后剪枝得到的树准确率更高。? 对于预剪枝
预剪枝: 基于样本数
比如有100个数据,到当前节点只有5个数据了,就不继续向下分了,无论几个正几个负,说明分的过细了。 预剪枝: 基于信息增益的阈值
选IG大的为节点,如果IG最大的还是有点小了,?则停止。 对于后剪枝:
后剪枝: 错误降低剪枝
剪枝后新的叶节点的标签赋值策略
错误降低剪枝的效果 从后到前,在验证集上一点点减枝。? 后剪枝: 规则后剪枝
为什么在剪枝前将决策树转化为规则?
? 五、扩展: 现实场景中的决策树学习1. 连续属性值? 建立一些离散属性值,区间化,便于建立分支 ? 可选的策略: ????????? I.选择相邻但有不同决策的值的中间值? ? ? ? ? ? ??上图48与60,80与90之间yes no变了,我们可以取中间值 ? ? ? ? ? ? (Fayyad 在1991年证明了满足这样条件的阈值可以信息增益IG最大化) ????????? II. 考虑概率?? ? ? ? ? ? ? ?如正态分布概率密度函数图像,区间长短可以不同,但其面积/数量是相同的。 2. 具有过多取值的属性问题: ? 偏差: 如果属性有很多值,根据信息增益IG,会优先被选择 ????????? e.g. 享受运动的例子中,将一年里的每一天作为属性(又变成像查表了) ? 一个可能的解决方法: 用 GainRatio (增益比)来替代 3. 未知属性值有的特征我们不知道是什么,可以把不知道的选成常见的,或者根据概率赋值。 4. 有代价的属性即如果feature多,IG可以除以一个惩罚项,有代价可以除以cost... ? 六、其他信息? 决策树可能是最简单和频繁使用的算法 ????????? 易于理解 ????????? 易于实现 ????????? 易于使用 ????????? 计算开销小 ? 决策森林: ????????? 由C4.5产生的许多决策树 ? 更新的算法:C5.0 http://www.rulequest.com/see5-info.html ? Ross Quinlan的主页: http://www.rulequest.com/Personal/ ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/26 0:31:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |