机器学习:算法模型:决策树

原文链接:https://www.cnblogs.com/wenyi1992/p/7685131.html

【基本流程】

分类决策树的核心思想就是在一个数据集中找到一个最优特征,然后从这个特征的选值中找一个最优候选值(这段话稍后解释),根据这个最优候选值将数据集分为两个子数据集,然后递归上述操作,直到满足指定条件为止。

最优特征怎么找?这个问题其实就是决策树的一个核心问题了。我们常用的方法是更具信息增益或者信息增益率来寻找最优特征,信息增益这东西怎么理解呢!搞清这个概念我们首先需要明白熵这个东西!熵简单的讲就是说我们做一件事需要的代价,代价越高肯定就越不好了。放到机器学习的数据集中来讲就是我们数据的不确定性,代价越高对应的不确定就越高,我们用决策树算法的目的就是利用数据的一些规则来尽可能的降低数据集的不确定性。好了,有了这个思想我们要做的事就很简单了,给定一批数据集,我们可以很容易得到它的不确定性(熵),然后呢!我们要想办法降低这个不确定性,我们需要挖掘数据集中有用的特征,在某个特征的限制下,我们又能得到数据集的不确定性(这个其实就是书上的条件熵),一般而言给定了一个有用的特征,数据的不确定性肯定降低了(因为有一个条件约束,比没有条件约束效果肯定会好一点,当然你的特征没有用,那就另说了)。我们用两次的值作差,这个结果的含义很明了,给定了这个特征,让我们数据集的不确定性降低了多少,当然降低的越多这个特征肯定就越好了。而我们讲了这么多就是要找到那一个让数据集不确定性降低最多的特征。我们认为这个特征是当前特征中最好的一个。

我们找到了最优特征,为什么还要找最优特征的最优候选值?其实呀,找不找主要看我们面对的问题,一般的二分类问题确实没必要找(因为总共就两个类),但对于多分类问题,这个还是建议找,为什么要找呢?我们来分析一下:假如我们的某个最优特征有三个类别:我们如果不找就直接分为三个子节点了。这样会出现一个问题,就是我们的这个分类对特征值会变得敏感,为什么这么说,我们来讲一个很简答的例子:我们平时考试规定了60分及格,这个控制对于大多数学生很好把控,因为就一个条件,相当于一个二分类。但是如果我们把条件控制严格一些,比如超过60分,不超过80分为优秀学生(当然有点扯蛋了)。这个控制很多学霸就不好控制了,对于多分类问题也是这个道理,如果我们一下子从父节点直接分了多个子节点,那么我们的数据肯定会对这个控制很敏感,敏感就会导致出错。出错不是我们希望看到的,所以我们建议对多分类问题找最优候选值来转化为二分类问题,同样多个二分类问题其实也是一个多分类问题,只是多了几个递归过程而已。

什么时候停止?停止条件是什么?这个问题其实书上也讲得很简单,基本都是一笔带过的,我来稍微详细说一下:我们从问题的根源出发去想一下,我们构造一颗决策树的目的是什么?当然是为了能在数据集上取得最好的分类效果,很好这就是一个停止标准呀!当我们检测到数据的分类效果已经够好了,我们其实就可以停止了。当然我们常用的是控制叶节点,比如控制叶节点的样本数目,比如当某个子节点内样本数目小于某一个指定值,我们就决定不再分了。还有叶节点的纯度,我们规定叶节点样本必须属于同一类才停止,这也是一个停止条件。还有最大树的深度,比如我们规定树的最大深度为某一个值,当树深度到达这个值我们也要停止。还有比如:分裂次数,最大特征数等等。总之停止条件不是死的,我们可以更具自己的问题来随意控制,开心就好!

【属性选择】

  • 信息增益——ID3

ID3算法其实就是我们一般所理解的决策树算法,其基本步骤就是我们上面所讲的步骤,这个算法的核心思想就是用信息增益来选择最优分类特征,信息增益的公式上面也给出了,这个公式我们仔细分析一下会发现一个问题:我们需要找到gain(D,A)最大的特征,对于一个数据集entropy(D)是给定的,也就是说我们需要entropy(D,A)最小,意思就是我们所选的特征是那些分完后子节点的纯度最高的特征,什么样的特征分完后子节点的特征纯度比较高(熵比较小),该特征的子类别很多,即可取值很多的这一类特征。总结一下就是信息增益偏向于去那些拥有很多子类的特征。这也是这个算法的一大致命缺点,任何带有主观偏向性的算法都不是一个好的算法,当然ID3算法的另一个缺点也显而易见,它只能处理那些分类的特征,对于连续值特征毫无办法(其实我们可以人为的把连续属性给离散化,但是人为必然会导致可能不准确)。

  • 增益率——C4.5

因此就有了下面的这个算法

C4.5是对ID3算法的一个改进,主要改进点就是解决了ID3的几个缺点。首先C4.5算法用的是信息增益率来代替ID3中的信息增益。从表达式可以看出来,这么做其实就是弱化那些偏向,让选择最优特征时更加公平。
另外C4.5的改进就是可以处理连续值(这个方法其实和上面我提到的连续值离散化很类似,可以理解为单点逐一离散化),具体步骤如下:
1.首先对于连续值属性的值进行排序(A1,A2......An);
2.我们可以在每两个值之间取一个点,用这个点就可以把该组连续值分为两部分,比如我们去一个点a1($A1<a1<A2$),则小于a1的部分(A1)大于a1的部分(A2......An)。但是这个a1好吗?不知道呀!那我们loop一下所有这样的a(共有n-1个),每一个ai我们可以算出分裂前后的信息增益率,然后我们求一个max即可。很简单吧!思路很好,但是呀很显然有个问题,时间开销有点大。
3.缺失值的处理,ID3不能直接处理(需要我们人工处理,比如单独赋值或赋一个平均值),C4.5给出了一个很优雅的方式,为什么说优雅,这样讲吧!我们每一个特征的取值都有若干个,根据训练集每个可能的取值都有一个概率,我们用这个概率来表示这个确实值得可能取值。这样就显得很合理了。

  • C5.0

C4.5各方面完胜ID3,所以C4.5一出现就被广泛应用,后面为了解决这个算法的时间开销问题,推出了这个算法的改进版C5.0。

国外有一篇比较C4.5和C5.0性能的blog写的很好,可以搜一下。大体上C5.0的速度是C4.5的10倍以上。

  • 基尼系数——CART

我们讲了这么多其实都没逃脱classification tree。我们还有很大一块问题没有讲,那就是regression。

这里我们在来讲讲regression tree。讲到regression tree我们就不能不提大名鼎鼎的CART(classification and regression tree)树了,这个才是最为核心的决策树。

为什么这么说,因为呀我们以后使用到的random forest,gbdt, xgboost里面的base estimator 都是CART树。所以这个东西我来认真讲讲。

CART树既可以用于分类问题也可以用于回归问题,用于分类问题的思想和我们上面介绍的ID3,C4.5其实是一样的,唯一的不同就是CART树用的是基尼指数来确定最优划分点的。

基尼指数: $gini(D) = \sum_{i=1}^n p_k (1-p_k)$

基尼指数的通俗解释就是:表示一件事物的不确定性,基尼指数越大不确定性越大。

我们要找基尼指数小的特征,这样的特征对于划分数据集的准确性会更高(不确定性低嘛)

类似的有一个条件基尼指数:$gini(D,A) = \sum_{i=1}^k \frac {D_{A_i}}{D} gini(D_{A_i})$整体思路跟信息增益一样,我就不浪费时间了。

对于回归问题:首先简单描述一下决策树处理回归问题的流程:

对于一个数据集我们可以将其分为m个子区间(R1,R2......Rm)对于每一区间我们可以产生一个对应的输出cm.

我们的最终输出$f(x)=\sum_{i=1}^mc_mI(x \in R_m)$.对于一个给定的回归树我们用平方误差来表示每个单元的损失$\sum_{x_i \in R_m}(y_i-f(x_i))^2$,

那么我们每个单元的最优输出就是使该单元的损失函数最小。

每个单元的最终输出可以表示为$C = avg(y_i|x_i)(x_i \in R_m)$(区间$R_m$ 上所有$x_i$ 的输出$y_i$的均值)

对于回归问题,我们面临的问题也是如何确定划分点(决策树的核心)。

这里CART树的处理方式和C4.5处理连续变量的方式有点类似,即对于每个特征的取值,我们从中找一个点j,这个点j可以将该特征分为两部分$R_1 = ({ x|x_i

这里我们必须强调一下,我们在使用决策树寻找每一步的最优切分点时,常用的是贪心算法,贪心算法有一个问题就是局部最优,而不是全局最优。

所以我们一定要记住,决策树在选择特征及切分点时考虑的是一个局部最优问题。

好了!上面基本就是决策树最常用的三个算法,我们先介绍了分类树及分类树中两个经典算法ID3和C4.5,然后我们又介绍了回归树CART树,

这个树在目前是主流的决策树,使用很广泛,必须十分熟悉其中的一些关键问题。

 

【剪枝处理】

  • 预剪枝
  • 后剪枝

【连续值与缺失值】

  • 连续值处理
  • 缺失值处理

【多变量决策树】

转载于:https://www.cnblogs.com/ForTech/p/8666873.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PDU

协议数据单元 PDU&#xff08;Protocol Data Unit&#xff09;是指对等 层次 之间传递的数据单位。 协议数据单元(Protocol Data Unit )物理层的 PDU是 数据位 &#xff08;bit&#xff09;&#xff0c; 数据链路层 的 PDU是 数据帧 &#xff08;frame&#xff09;&#xff0c;…

Haproxy+Percona-XtraDB-Cluster 集群

Haproxy介绍 Haproxy 是一款提供高可用性、负载均衡以及基于TCP&#xff08;第四层&#xff09;和HTTP&#xff08;第七层&#xff09;应用的代理软件&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点&…

mac安装和卸载mysql_基于centos7系统卸载rpm安装的mysql

概述前面有介绍了怎么用rpm包去安装mysql&#xff0c;那么如果我们要卸载的话可以怎么弄呢&#xff1f;下面介绍下卸载mysql的流程。环境&#xff1a;centos7.31、 检查是否安装了MySQL组件。# rpm -qa | grep -i mysql2、卸载前关闭MySQL服务systemctl stop mysqld3、收集MySQ…

(转)Linux服务器磁盘空间占满问题

转自&#xff1a;https://www.cnblogs.com/cindy-cindy/p/6796684.html 下面我们一起来看一篇关于Linux服务器磁盘占满问题解决&#xff08;/dev/sda3 满了&#xff09;&#xff0c;希望碰到此类问题的人能带来帮助。今天下班某电商技术部leader发现个问题&#xff0c;说他们服…

计算机组成原理2套题,计算机组成原理试卷及答案2套.doc

计算机组成原理试卷A一、 选择题(每小题2分&#xff0c;共30分)1&#xff0e; 下列数中最小的数是______。A.(100100)2 B.(43)8 C.(110010)BCD D.(25)162&#xff0e; 计算机经历了从器件角度划分的四代发展历程&#xff0c;但从系统结构上来看&#xff0c;至今绝大多数计算机仍…

改变您一生的90/10原理

了解并运用由Stephen Covey发现的90/10原理&#xff0c;您的一生或许会有所改变&#xff0c;至少&#xff0c;您对待事情的态度会与以前不一样了。 什么是90/10原理&#xff1f;即在您的一生中&#xff0c;只有10%的事情您无能为力&#xff0c;而90%的事情都在您的把握之中。 我…

透明网桥

所谓“透明网桥”是指&#xff0c;它对任何数据站都完全透明&#xff0c;用户感觉不到它的存在&#xff0c;也无法对网桥寻址。所有的路由判决全部由网桥自己确定。当网桥连入网络时&#xff0c;它能自动初始化并对自身进行配置。 透明网桥以混杂方式工作&#xff0c;它接收与…

vue用阿里云oss上传图片使用分片上传只能上传100kb以内的解决办法

首先&#xff0c;vue和阿里云oss上传图片结合参考了 这位朋友的 https://www.jianshu.com/p/645f63745abd 文章&#xff0c;成功的解决了我用阿里云oss上传图片前的一头雾水。 该大神文章里有写github地址&#xff0c;里面的2.0分支采用vue2.0实现&#xff0c;只不过这个上传图…

iphone11右上角信号显示_苹果iOS11信号强度的标志变了意味着什么?

原标题&#xff1a;苹果iOS11信号强度的标志变了意味着什么?在iOS 11测试版中&#xff0c;苹果将状态栏中表示 LTE信号强度的5个小圆点换成了4 个竖状条。从 iOS 7 到 iOS 10苹果就一直使用小圆点标志信号强度设计&#xff0c;而这次的改变也意味着范围的变化。这到底是什么意…

计算机二级access选择题技巧,计算机二级access考试注意事项及解题技巧策略

计算机二级access考试注意事项及解题技巧策略2017年计算机考试将至&#xff0c;今天yjbys小编为大家带来了计算机二级access考试注意事项及解题技巧哦!快点行动起来吧~考试注意事项1.考试时间&#xff1a;120分钟(即2小时)2.考试类型&#xff1a;上机操作 (总分100分&#xff0…

【uoj#37/bzoj3812】[清华集训2014]主旋律 状压dp+容斥原理

题目描述 求一张有向图的强连通生成子图的数目对 $10^97$ 取模的结果。 题解 状压dp容斥原理 设 $f[i]$ 表示点集 $i$ 强连通生成子图的数目&#xff0c;容易想到使用总方案数 $2^{sum[i]}$ 减去不为强连通图的方案数得到强连通图的方案数&#xff0c;其中 $sum[i]$ 表示点集 $…

交换机实现虚拟局域网

但由于它是逻辑地而不是物理地划分&#xff0c;所以同一个 VLAN内的各个工作站无须被放置在同一个物理空间里&#xff0c;即这些工作站不一定属于同一个物理LAN网段。一个VLAN内部的广播和单播流量都不会转发到其他 VLAN中&#xff0c;即使是两台计算机有着同样的网段&#xff…

产品与项目

产品和项目到底有什么区别&#xff0c;扩展开说&#xff0c;做产品和做项目最大的不同在哪里&#xff1f;产品经理和项目经理&#xff08;都是PM&#xff0c;有时候自己都搞不清说的哪一个&#xff09;职责的不同在哪里&#xff1f;一直困扰了我很长时间&#xff0c;直到2007年…

python斐波那契前20递归_算法python实现经典递归问题(汉诺塔, 斐波那契数列,阶乘)...

经典递归汉诺塔问题背景故事传说印度某间寺院有三根柱子&#xff0c;上串64个金盘。寺院里的僧侣依照一个古老的预言&#xff0c;以上述规则移动这些盘子&#xff1b;预言说当这些盘子移动完毕&#xff0c;世界就会灭亡。这个传说叫做梵天寺之塔问题(Tower of Brahma puzzle)。…

Hello This Cruel World!

第一天&#xff0c;已经成为了半年的OIer&#xff0c;仍然是个蒟蒻&#xff0c;希望以后能够变强&#xff01; 在OJ和博客的常用网名&#xff1a; TimeTraveller ->洛谷 VictoryCzt ->csdn,cnblog等 Czt Czttt czt ->OJ CrazyTea CrazyTeaMajor 游戏&#xff0c;QQ…

计算机系统的部件名称作用,电脑配件与每个配件作用详细完整的解释

电脑各配件的具体功能和特性说起来很长&#xff0c;先简单介绍一下。一台个人台式电脑的主要配件有&#xff1a;1.主板&#xff1a;也叫母板&#xff0c;是连接CPU、内存、AGP等电脑配件的最主要最基本的载体&#xff0c;主板的结构类型决定电脑各配件的结构和类型&#xff0c;…

信道效率以及信道的吞吐率

信道的效率即为信道的利用率&#xff0c;是指发送方在一个发送周期的时间内&#xff0c;有效的发送数据所需要的时间占整个发送周期的比率。 例如,发送方从开始发送数据&#xff0c;到收到第一个确认帧为止&#xff0c;称为一个周期&#xff0c;设为T。发送方在这个周期内共发…

jquery兄弟标签_js jquery获取当前元素的兄弟级 上一个 下一个元素

var chils s.childNodes; //得到s的全部子节点var pars.parentNode; //得到s的父节点var nss.nextSbiling; //获得s的下一个兄弟节点var pss.previousSbiling; //得到s的上一个兄弟节点var fcs.firstChild; //获得s的第一个子节点var lcs.lastChile; //获得s的最后一…

将本地代码备份到Github public repository

1. 在本地代码所在的文件夹中初始化&#xff0c;即打开powershell&#xff0c;输入下面命令 git init 此时本地文件夹中会出现一个.git的隐藏文件夹。 2. 然后将当前的文档commit&#xff0c;在本地commit之前可以先加一个.gitignore文件&#xff0c;忽略一些不必要的文件&…