人工智能知识全面讲解:生活中的决策树
在日常生活中,我们几乎每天都在做选择题。小到午饭选哪家餐厅的外卖,大到?业以后选择打工还是创业,都是一个有有限答案的选择题。这些看似简单的选项背后往往隐藏着一连串问题的答案,只有逐个回答,逐层深入方能找到答案。当我们选择外卖的时候可能会思考以?几个问题。先想想今天想吃什么口味的菜品,再想想自己能接受的价格区间是多少。因为午休的时间比较短,还要考虑送达时间等问题,最后选出一家合适的餐馆。在面对打工还
在日常生活中,我们几乎每天都在做选择题。小到午饭选哪家餐厅的外
卖,大到?业以后选择打工还是创业,都是一个有有限答案的选择题。这些看
似简单的选项背后往往隐藏着一连串问题的答案,只有逐个回答,逐层深入方
能找到答案。
当我们选择外卖的时候可能会思考以?几个问题。先想想今天想吃什么口
味的菜品,再想想自己能接受的价格区间是多少。因为午休的时间比较短,还
要考虑送达时间等问题,最后选出一家合适的餐馆。在面对打工还是创业的就
业选择时,通常我们先考虑创业的风险,如果风险较低,再考虑有没有好的创
业方向。如果碰巧有个比较靠谱的想法,接?来考虑启动资金够不够,如果不
够的话,再考虑是借钱还是找人合?等等一系列的问题。每一个问题在我们心
里有了答案以后,后续的问题随之而来,如图5-1所示,这个思考过程就像铁
索一样环环相扣,直到找到最终的答案。
总结这个思考过程为:当我们要解决一个问题A时,首先会去思考问题A的
子问题A1,对于A1问题可以得到答案B或者答案C;如果选了答案B,会遇到新
的问题D,对于问题D可以得到答案E或者答案F,选了答案E又会遇到新的问题
G,反复循环这个过程,直到获得最终的结果,也就是最初问题 A 的答案。这
个过程用图形展现,就像是一棵倒着生长的树,随着问题越来越深入,枝叶越
来越茂盛。因此,这个思考的过程有一个形象的名字——决策树。
5.2 决策树原理
决策树属于有监督学习分类算法。因为决策树具有构造简单、模型容易理
解、高效实用且易维护的特性,这使得它成为目前应用最广泛的分类方法之
一。决策树算法之所以如此流行,其中一个很重要的原因是使用者基本上不需
要了解任何算法知识,也不用深究它的工作原理,从决策树给出的结果就能理
解决策树的判断逻辑。从直观上,决策树分类器就像由很多分支判断组成的流
程图,顺着流程就能得到结果。
一般情况?,一棵决策树包含一个根节点、若干个内部节点和若干个叶节
点。树中的根节点与每个内部节点都表示一个属性,叶节点表示一个分类结
果,每个分?路径代表某个可能的属性值,而每个从根节点到该叶节点所经历
的路径则表示分类对象的所有属性值,如图5-2所示。通常一棵决策树仅有单
一输出值,若需要有一个以上的输出值,则可以建立多个独立的决策树以获得
多个输出值。
银行在决定要不要给某个客户办信用卡,以及确定卡片额度大小的时候,
经常会对客户进行多方面的考量。将这个客户的职业、学历、房产信息、婚姻
状况、有无贷款等特征输入模型中,最后让模型来分析这个客户会不会产生逾
期还款。在构建模型前,首先要让模型知道普通客户使用信用卡有什么规律,
因此需要取一批客户的信用卡还款记录(实际情况包含更多数据)输入模型
中,如图5-3所示,有以?这些数据。
上表中的数据记录了每个客户自身的特征以及最终的偿还情况。从表中很
容易看出,有房的客户一般都是有能力及时还款的,而没有房的客户则需要再
考虑其他的影响因素。根据这些数据可以构造如图5-4所示的决策树。
如果银行来了一个新客户办理信用卡,该客户没有房产,单身,学历在本
科以?且月收入只有10k以?,那么根据上面的决策树,银行可以判断该客户
产生信用卡逾期还款的概率较高,因此不能给该客户批太高的额度。此外从上
面的决策树来看,还可以知道不同客户不同的特征组合产生逾期还款的可能
性,这个结果对信用卡中心整体发放额度的制定具有指导意?。
从上述例子中,我们可以得出如?结论:决策树是一种树形结构,其中每
个内部节点都表示一个属性上的子结果,每个分支代表一个中间输出,每个叶
节点代表一种类别。
5.3 决策树实现过程
特征选择是构建决策树的第一步,也是最关键的一步。特征选择是指从训
练样本的众多特征中选择一个特征作为当前节点的分裂标准,分类决策树的核
心思想就是每次分类时,找到一个当前最优特征,然后从这个特征的取值中
找到一个最优结果值 。因为选择特征有很多不同的评估标准,所以衍生出很
多不同的决策树算法。
回到上面的例子,我们是先判断客户的婚姻状况再去看学历。如果另一个
同学认为客户的学历更重要,同样他也能基于他的判断去构造另外一棵决策
树,如图5-5所示。
两种特征选择方法构造的决策树分支不同,带来的应用效果也不完全相
同。那么对每个节点,应该选择什么特征作为当前节点呢?假设数据集再大一
点,有30个特征,那怎么选择每个节点?的最优特征呢?我们更希望找到一种
科学、合理的挑选方式。
。
5.3.1 ID3算法
1986年,一位叫兰昆(Ross Quinlan)的工程师提出,以“信息
熵”和“信息增益”作为挑选节点的衡量标准,来构建决策树。这个方法一出
现,它的简单构造以及高效选择特征的方式引起了学界的轰动,兰昆把这个算
法命名为 ID3(Iterative Dichotomiser 3)算法。
在ID3算法中,采取“信息增益”作为纯度的度量,也就是特征选取的衡
量标准。信息增益的计算公式为:信息熵-条件熵,用这个公式可以计算每个
特征的信息增益。每次建立节点时,只需要选取信息增益最大的特征作为当前
节点即可。
要理解这个公式首先需要理解信息熵这个概念。“熵”是一个热力学概
念,热力学第二定律认为孤立系统总是存在从高有序度转变成低有序度的趋
势,熵就是用来衡量事物混乱程度的指标。我们用这个混乱程度衡量一个随机
变量出现的期望值。熵越大,代表一个物体的混乱程度越高,也就是说变量的
不确定性就越大。造成这种现象的原因可能是这个变量的取值有很多,我们比
较难判断哪个才是正确的取值,为了找到正确的取值所需要的信息量较大。
因此,可以把“熵”简单地理解为:了解一件事情所需要的信息量。同时
信息熵是信息论中描述混乱度(有些书籍中称为纯度)的概念。一个系统越是
有序,信息熵越低;反之,一个系统越是混乱,信息熵越高。
这里举个例子帮助读者更好地理解什么是信息熵。假设此时我的手上握着
一枚硬币,如果直接松手,问你这个硬币会掉落在地上还是向天上飞去?根据
万有引力定律,相信你很容易就能回答出来:硬币会掉落在地上。因为这件事
情有物理定律的支撑,有一个必然的结果,所以我们判断这件事的熵为0,我
们不需要任何的信息量。
现在假设我手里这枚硬币是匀质的,问你将硬币抛出后是正面朝上还是反
面朝上?这个问题就比较难回答了,因为硬币正反朝上的概率相等,都是
50%,我们不能有一个很明确的判断,此时判断这件事情的熵为1。根据上述两
个例子,我们可以给出以?结论:当结果越容易判断时,熵越小;当结果越难
判断时,熵越大。熵可以通过数学公式计算出来,在此不再展开?述。
条件熵则为上述的判断增加一个前提条件。它描述了在已知随机变量 X
的前提?,随机变量Y的信息熵为多少。上述例子中假设硬币是匀质的,所以
正面朝上或反面朝上的概率都是 50%。但是在硬币制作过程中,硬币正反面的
图案不相同,因此两面的质量可能有少许的差异,时常会出现正面比反面多
0.001毫克,或者反面比正面多 0.002 毫克这样的情况。硬币正反面的质量不
同,正反面朝上的概率也就不同。计算每种情况中正反面朝上的熵,每一个熵
再乘以这个情况出现的概率,最后把所有情况?的熵加起来求和即可得到条件
熵。
搞清楚信息熵和条件熵的含?后,我们再看“信息增益=信息熵-条件
熵”这个公式,实际上信息增益描述的就是“没有前提条件X时的信息量-有前
提条件X时的信息量”,表示在一定条件?信息不确定性减少的程度。信息不
确定性减少变大,说明系统的混乱程度正在逐渐降低,数据的归类更加一致。
这时候有部分读者可能会问,为什么ID3算法选用信息增益作为最优特征
的选择依据?这种方式对数据的归类更加一致有什么好处?
这个问题涉及ID3算法的设计理念。ID3算法以“奥卡姆剃刀理论”为基
础,其提出“越是小型的决策树越优于大型的决策树”的核心思想。奥卡姆剃
刀理论又称为简单理论,这个理论表达的意思是,切勿浪费较多资源去做一件
事,很多时候用较少的资源同样可以完成事情。当基于这个理论构建决策树
时,我们的目标变成了建立一棵尽量小型的决策树。但是这个理论并非让我们
无论在什么情况?都要生成最小型的决策树,仅仅指导我们尽量实现最小型的
决策树。简单理论只是一个设计框架,类似于产品设计中我们常提到的易用性
原则,仅仅帮助我们做出更合理的规划。
降低信息的不确定性可以使一棵决策树的节点变少,而信息增益描述的是
信息不确定性减少的程度,因此使用信息增益作为节点选择依据,可以得到一
棵在某些条件?高度相对较矮的决策树,也就是最小型的决策树。这也是ID3
算法使用信息增益的重要原因。
掌握决策树的节点挑选方法以后,构建决策树的第二步是决策树生成。根
据选择特征的标准,从上至?递归生成子节点,直到数据集不可分则决策树停
止生长。以树结构来说,递归结构是最容易理解的。构建的基本步骤如图5-6
所示。
(1)开始,把所有记录的特征都看作一个节点。
(2)遍历每个变量的每一种分割方式,找到最好的分割点;在ID3算法中
就是计算每个特征的信息增益,选择最大的特征作为分割点。
(3)分割成两个节点N 1 和N 2 。
(4)对N 1 和N 2 分别继续执行步骤2与3,直到每个节点的数据足够“一
致”为止。
经过以上四个步骤后,能够得到一棵较为完整的决策树。
5.3.2 决策树剪枝
种过树的同学可能知道,有时候一棵树因为光照、水源等因素的影响,可
能会顺着某个方向“长歪了”。为了让这棵树茁壮成长,有时候我们需要人为
去修剪一些枝叶,“矫正”这棵树生长的方向。决策树算法也是同样的道理。
生成决策树并不复杂,但是如果只“生成树”而不“剪枝”的话,这棵树
很容易产生过拟合现象。一棵好的决策树需要有较强的泛化能力,在新数据上
能够取得较好的分类效果。为了避免过拟合现象,应该对决策树进行“剪枝处
理”,通过主动去掉一些分支来降低过拟合的风险。
决策树剪枝的基本策略有“预剪枝”和“后剪枝”两种。预剪枝是指在决
策树生成时,每个节点在划分前先进行计算,若当前节点的划分不能提升决策
树的泛化性能,则停止划分并将当前节点标记为叶节点,这是一种“未卜先
知”的策略。在树的构建过程中,通常设置一个阈值,若当前节点在分裂前和
分裂后的误差超过这个阈值则分裂,否则不分裂。
后剪枝是指从训练集生成一棵完整的决策树,然后自?向上对非叶节点进
行考察。若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则
将该子树替换为叶节点,如图5-7所示。选择去掉哪些子树,可以计算没有减
掉子树之前的误差和减掉子树之后的误差,如果相差不大,则可以将子树减
掉。对比两种剪枝方式,预剪枝发现“不对劲”时就停止节点的分裂过程;后
剪枝是先分裂到不能分裂为止,再看这棵树中哪些分支是没有意?的。
预剪枝使得决策树中部分分支没有充分“展开”,相当于将这个分支?的
所有子类归为同一个类别。这不仅降低了过拟合的风险,还显著减少了决策树
的训练时间和测试时间。但部分分支被修剪后不但不能提升泛化性能,甚至可
能导致泛化性能暂时?降。预剪枝基于“简单理论”的本质禁止了一些分支展
开,给预剪枝决策树带来了欠拟合的风险。
后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形?,后剪
枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但后剪枝需要
等待决策树完全生成之后进行,并且需要对树中所有非叶节点进行逐一考察,
因此其训练时间比未剪枝决策树和预剪枝决策树都要久得多。
剪枝是构建决策树的重要环节。有大量研究表明,剪枝过程比决策树生成
过程更为重要。对于由不同划分标准生成的决策树,在剪枝之后都能够保留
最重要的属性划分,因此由不同划分标准生成的决策树在剪枝后差别不大 。
与此相比,采用的剪枝方法,才是获得最优决策树的关键。
对比预剪枝与后剪枝生成的决策树,可以看出,后剪枝通常比预剪枝保留
更多的分支,其欠拟合风险很小,因此后剪枝的泛化性能往往优于预剪枝。但
后剪枝过程是从?层向上进行修剪,因此其训练时间开销要比预剪枝大得多。
在实际使用时,还是要根据数据集的规模以及特点选择合适的剪枝方式。
5.4 ID3算法的限制与改进
5.4.1 ID3算法存在的问题
通过以上学习,我们知道在ID3算法中,决策树选择节点的原则是使无序
的数据变得有序。如果一个训练数据中含有20个特征,则当?节点选择哪个特
征需要采用一种量化方法判断,以评判划分方法有多重要。
针对如何选择最优特征这个问题,ID3算法给出了一个比较好的解决思
路,即采用信息增益作为评判标准,每次选取使得信息增益最大的特征作为当
前节点。但随着学界对 ID3 算法的深入研究,人们也慢慢发现了 ID3 算法的
不足之处,其主要存在以?三个问题,如图5-8所示。
ID3算法最主要的问题在于不能处理连续特征,也就是说连续值无法在ID3
算法中运用。例如上述申请信用卡的例子,银行如果想知道客户申请信用卡的
日期与逾期还款有没有直接关联,需要利用申请日期这个特征。计算日期的信
息增益时你会发现,由于日期每一天都是唯一的,而且日期是无穷无尽的,所
以申请日期这个特征的特征值非常多,条件熵接近于0。因为分母非常大,所
以条件熵整体接近于0。这就造成每个子节点都只有一个分类,纯度非常高。
这就导致了新的样本只要有日期这个特征,就会构造出十分受限的决策
树。因为构建过程中首先会以日期作为根节点,这样的决策树显然不具有任何
泛化能力。有的读者可能会认为,在日常项目中避开日期这类的连续特征不就
好了吗?但偏偏在现实生活中存在大量的连续属性,例如年龄、密度、长度、
温度,等等,因此大大限制了ID3算法的用途。
其次,ID3 采用信息增益大的特征优先作为决策树的当前节点。在相同条
件?,取值比较多的特征比取值少的特征信息增益大,导致ID3算法总是倾向
选择取值更多的特征,这是ID3算法最致命的缺点。例如“拥有房产”这个特
征只有“是”“否”两个取值,“婚姻状况”这个特征有“未婚”“已
婚”“离异”三个取值,通过计算我们会发现,“婚姻状况”的信息增益永远
比“拥有房产”大,也就是说采用信息增益作为判断标准的话,在这两个特征
中一定会选择“婚姻状况”作为优先级更高的节点。在机器学习领域,任何带
有主观偏向性的算法都不是一个好的算法。
最后,ID3算法没有考虑过拟合的问题。该算法一直递归计算每个特征的
信息增益直至子数据集都属于同一类。这个过程缺少剪枝环节,没有考虑模型
过拟合的风险。
5.4.2 C4.5算法的出现
1993年,ID3 算法的作者兰昆针对上述的不足之处,对ID3算法做了改
进,提出了一种全新的C4.5算法。如今,C4.5算法已经成为最经典的决策树构
造算法之一,同时还被评为“数据挖掘十大算法”之一。值得注意的是,C4.5
不是单个算法,而是一组算法,该算法在继?了ID3算法优点的同时,还在以
?几个方面做出了改进,如图5-9所示。
(1)C4.5 算法不再直接使用信息增益率,而是引入信息增益率来选择特
征,克服了用信息增益选择特征时偏向选择取值多的特征这一缺点。信息增益
率的计算公式为“信息增益/分裂信息度量”。从公式可以看出,在 C4.5 算
法中引入了“分裂信息度量”计算信息增益率。分裂信息度量这个概念不好理
解,我们只需要知道它是一个惩罚项,对于取值很多的特征在权重上会有一
定的惩罚,让这种特征“显得”不那么重要 。通过信息增益除以分裂信息度
量得到的信息增益率对于取值多的属性不会有偏向性,能够做到更公平地选择
合适的特征。
增加了一个惩罚项以后,使用信息增益率作为节点选择依据实际上也存在
偏好性,这个指标会优先选择可取值较少的特征,因为这种特征的惩罚力度往
往较低。
因此C4.5算法很聪明地选择了一种折中的办法。该算法不直接选择信息增
益率最大的特征作为最优特征,而是先在所有候选特征中找到信息增益高于平
均水平的特征,以保证选择出来的特征大概率是好的特征,再从中选择信息增
益率最高的特征,以保证最后不会挑选出“日期”这类极端的特征,可谓把两
种指标的优势发挥到极致。
(2)在C4.5算法中设计了一种对连续属性离散化处理的方法。该算法采
用二分法,将连续属性分段处理。我们用一个例子讲述二分法的实现方式。假
设银行仍然想把客户申请信用卡的日期作为一个特征加入决策树中,如图5-10
所示。
首先将训练数据集中所有申请日期按照时间顺序排列,如图5-11所示。
接?来在每两个相邻日期之间取中位值,10 个日期可以得到 9 个中位
值。然后对9个中位值日期分别计算信息增益,选择信息增益最大的中位值日
期作为划分点。通过计算,将日期这个连续属性划分为“小于9月13
日”和“大于等于9月13日”这两个离散值,如图5-12所示。这种令连续属性
变成离散属性的方法大大增加了C4.5算法的普适性。
对于离散属性只需要计算1次信息增益率,连续属性?需要计算N-1次,如
果有10个日期就需要计算9次,这个计算量是相当大的。那么,有没有什么方
法可以减少计算量呢?
聪明的读者可能会发现,10 个日期中,存在几个相邻日期的逾期情况都
是一样的情形,我们可以在只有逾期情况发生改变的相邻日期之间取中位值,
这样我们就只需要计算4次信息增益,如图5-13所示,这种方式能够比原来节
省一大半时间。
(3)在构造树的过程中剪枝,避免模型产生过拟合现象。C4.5算法采用
后剪枝中的“悲观剪枝法”,该方法的核心思想是根据剪枝前后的误判率来判
定子树是否可以修剪。将一棵子树(具有多个叶子节点)归到同一类,变成一
个叶子节点,这样在训练集上的误判率肯定会上升,但是对于新样本的误判率
不一定会升高。假设一棵决策树被剪枝前后,某个分支节点在测试样本上的精
度并无太大变化,则可对该节点剪枝。
虽然悲观剪枝法存在局限性,但其在实际应用中有较好的表现。另外,这
种方法不需要分离训练集和验证集,有利于训练规模较小的数据集。而且悲观
剪枝法与其他方法相比效率更高,速度更快。因为在剪枝过程中,树中的每棵
子树只需要被?问一次,因此在最坏的情况?,也不需要太长的计算时间。
(4)C4.5 算法能够对不完整的数据集进行处理。在实际工作中,我们可
能会拿到缺少某些属性值的样本集。如果样本集中属性值缺失的样本数量较
少,则可以直接删除不完整的样本。如果数据集中存在大量缺失属性值的样
本,则不能简单地删除样本,因为大量删除样本,对于模型而言损失了大量有
用的信息,得到的结果不够精确。
在这种情况下,处理缺失属性值的正确做法是赋予该特征的常见值,或
者属性均值。另外一种比较好的方法是为每个属性可能出现的取值赋予一个
概率,将该属性以概率值形式赋值,再去计算这个特征的信息增益。
假设某个申请信用卡的客户,我们不知道他是否有房,但是我们从其他10
个申请人的数据来看,其中有6个人无房、4个人有房,那么在赋值过程中,该
客户是否有房的缺失值会以1/6的概率被分到无房的分支,以1/4的概率被分到
有房的分支,如图 5-14 所示,然后按前面介绍的方法计算条件熵。这种处理
方式的目的是使得对这类缺失属性值的样本也能计算信息增益。
因此,在引入了这些改善机制后,C4.5算法的流程如图5-15所示。
图5-15 在C4.5算法?决策树的生成过程
综上所述,C4.5 算法不但解决了 ID3 算法遇到的限制,而且产生的分类
规则更易于理解,准确率更高,是一种更有效的算法。但是在实际应用中,存
在?面两个性能问题:
(1)当面对连续属性时,需要对数据集进行多次的顺序扫描和排序,导
致算法耗时较长。
(2)C4.5 算法只适合于能够驻留在内存的数据集,当训练集大到内存无
法容纳时,程序无法运行。
这两个性能上的小缺陷让C4.5算法很难在工业中有大规模的应用,只能针
对小规模的数据集使用。好在兰昆仍不放弃,又在C4.5的基础上改进升级,提
出了C5.0算法。C5.0是C4.5应用于大规模数据集的分类算法,C5.0算法不但优
化了性能问题,而且采用Boosting的方式提高了模型准确率,因此又常被称为
提升树(BoostingTrees)。在性能表现上,C5.0 算法的计算速度比较快,占
用的内存资源较少,能够有效解决执行效率和内存使用方面的问题。同时也是
目前工业上应用比较普遍的算法,产品经理只需了解这个算法即可,在此不再
展开?述。
5.4.3 CART算法
ID3 算法和 C4.5 算法可以挖掘出训练样本集中的有效信息,但这两个算
法生成的决策树分支较多,规模较大。为了简化决策树的规模,提升构建决策
树的效率,学者又发明了根据“基尼系数”选择最优特征的CART算法。
CART 算法全称为“分类回归树”。从名字可以看出,CART 算法既适用于
分类问题也适用于回归问题,本章只讨论如何用CART算法解决分类问题。CART
树同样由特征选择、生成树以及剪枝三个环节组成。与ID3、C4.5算法相比,
CART树具有以?两个特点:
(1)CART树采用二分递归分割技术。每次分裂时,将当前样本分成两个
子样本集,使得生成的非叶子节点只有两个分支,因此CART树实际上是一棵二
?树。
(2)CART树使用基尼(Gini)系数代替信息增益比。基尼系数代表模型
的不纯度,特征的基尼系数越小,则不纯度越低,代表该特征越好,这与信息
增益相反。之所以采用基尼系数,是因为与信息熵相较而言,基尼系数的计算
速度更快。
在 CART 算法中, 基尼系数表示一个随机样本在分类子集中被分错的可
能性,用于度量任何不均匀的分布 。基尼系数的计算方式为这个样本被选中
的概率乘以它被分错的概率,所以基尼系数的取值范围在0~1之间。总体空间
内包含的类别越杂乱,基尼系数越大,这一点与信息熵的概念很相似。当一个
节点中所有样本都属于一个类时,基尼系数为0;反之当一个节点中所有的样
本完全不相同时,基尼系数为1。
回?在ID3算法或者C4.5算法中,如果选取“婚姻状况”这个特征建立决
策树节点,因为它有未婚、已婚、离异三个特征值,所以我们会在决策树上建
立一个三?的节点,这样生成的决策树就是多?树。但是 CART 树不同,采用
的是不断二分的方法。如果用CART树,我们会考虑将婚姻状况分成{未婚}和
{已婚、离异},{已婚}和{未婚、离异},{离异}和{未婚、已婚}三种情况,对
这三种情况分别计算相应的基尼系数,找到基尼系数最小的组合。例如以{未
婚}和{已婚、离异}这个组合建立二?树节点,一个节点是{未婚}对应的样
本,另一个节点是{已婚、离异}两种取值对应的样本,如图5-16所示。
在{已婚、离异}这棵子树中,由于本次分类没有将婚姻状况的取值完全分
开,因此在后面迭代的时候,还有机会在子节点中继续选择婚姻状况这个特
征,划分为已婚和离异这两种不同的情况,这点和ID3算法、C4.5算法有很大
的不同。在ID3算法、C4.5算法的一棵子树中,每个离散特征只会参与一次节
点的建立。按照二分的方式,循环递归,直至所有的特征被完全分类,再加上
后剪枝策略,就构成了一棵 CART分类树。
5.4.4 三种树的对比
上一节对CART算法做了一个?细的介绍。相比ID3算法与C4.5算法,CART
算法最大的优点在于,不但可以解决分类问题,还能解决回归问题。图 5-17
给出了ID3、C4.5和CART树三种算法的比较。
介绍完决策树三个最经典的算法以后,相信读者对决策树的原理与构造过
程有了更加深入的认识。虽然这三种算法之间有不小的差别,但它们的本质仍
然是决策树算法,具有决策树普遍的特性。总结?来决策树算法主要有以?3
个优点:
(1)简单直观,相比神经网络之类的黑盒模型,决策树在逻辑上可以得
到很好的解释。可以实际运用于很多场景,比如贷款倾向度的预测都是需要知
道模型关键因子以便后期模型调优与关键数据获取,最重要的是它的可解释性
能够很好地指导业务同事确定需要客户重点补充哪些资料,所以决策树很适用
于这种情况。
(2)数据预处理工作相较之?很简单,不需要提前处理缺失值和噪声
点,因为有剪枝的机制,所以对于异常点的容错性较强。
(3)既可以处理离散值也可以处理连续值。很多算法只能适用于离散值
或连续值,决策树的C4.5和CART等算法能够满足不同要求。
同样,决策树算法并非完美的算法,它也有算法上的限制,具体表现为:
(1)决策树非常容易产生过拟合现象,导致泛化能力不强。
(2)样本数据只要发生一点点的改动,就会导致树结构的剧烈改变。也
就是说构建的决策树模型不适用于特征不同的数据集,这个问题可以通过集成
学习的方法解决。
(3)决策树很难学习特征之间的复杂关系。例如决策树不能实现异或关
系,这种关系通常使用神经网络分类方法解决。
(4)忽略了数据之间的关联性。无论是 ID3、C4.5 还是 CART 算法,在
做特征选择的时候都是选择当前节点最优的一个特征来做分类决策。但是在大
多数情况?,分类决策不应该由某一个特征决定,而应该由一组特征决定,比
如医疗影像分析、投资决策分析等,通过这样的决策得到的决策树才会更加准
确。
(5)对于各类别样本数量不一致的数据,在决策树中,信息增益的结果
偏向于那些具有更多数值的特征。只要是使用信息增益作为节点挑选依据的算
法都有这个缺点。
通过以上的总结我们可以看出,决策树算法最大的优点是简单直观,每次
对一个特征进行决策,可解释性强。但因为每次决策都是“船到桥头自然
直”的模式,使得在分类过程中,每次特征选择都是做当前来看最好的选
择,并没有从整体上充分考虑最优特征的划分,忽略了数据之间的关联 。所
以决策树所做的选择只能是某种意?上的局部最优选择,针对这个问题,学者
们也在不断进行改进探索,但目前在实践中还没有找到能够大规模应用的方
法。目前比较成熟的解决方案是基于决策树衍生的随机森林、GBDT等集成算
法,这类算法在后面章节再展开?述。
5.5 决策树的应用
在机器学习业界有一个广为流传的说法:没有最好的分类器,只有最合适
的分类器。任何算法都具有两面性,关键在于能否发挥算法的特点,找到适用
的场景。“从场景出发”对于机器学习或产品设计来说,都不是一句空喊的口
号。早期,决策树主要解决简单的二分类问题,其在恶意入侵行为检测、预测
互联网用户对在线广告点击的概率、预测客户停止购买某项服务的概率等应用
场景上都有高效的表现,因为这类场景所需要的训练数据集较少,数据之间的
关联性较小,比较适合使用决策树解决。
早期的电信业运营商使用决策树寻找目标用户,进行细分客群营销。运营
商每个营销活动都覆盖具有不同特点的客群。在预算有限的情况?,若想找到
目标客群,可以根据以往类似活动的历史消费数据,用决策树建立一个分类器
对新客户进行分类,找到目标客群。
同时也因为决策树简单、高效的特性,使它成了许多高阶算法的基石。梯
度提升决策树(GBDT)、随机森林(RF)都是由决策树衍生出来的组合算法。
这些算法能够解决更复杂的问题,在后面章节中再做?细介绍。
决策树的分类思维对于产品经理的思维转变也具有参考的意?。在日常的
产品工作中,我们可以使用决策树的思维,组织产品的菜单架构与信息层级,
使用户在使用产品的过程中能够顺着“决策”的思路找到自己想要的功能或信
息。
用户使用美团搜索去哪家餐厅吃饭就是一个典型的决策树场景。当用户有
时间有能力去较远的地方就餐时,可以直接在美团的“首页”看看推荐的餐
馆,或者按照口味、价格等因素进行更精确的挑选。当用户受限于出行,只能
找附近的餐厅时,则可以在美团的“附近”页面寻找一公里以内能步行到达的
餐馆。这种按照用户思考过程组织的菜单结构,使得用户在找休闲场所的时候
不会到“美食”菜单中寻找,在挑选外卖的时候,能够从众多品种中快速找到
最适合自己的,因此决策树思维对于信息架构的分层和设计有很大的帮助。
另外在设计每个页面的跳转逻辑时,使用决策树思维,能够帮助用户感知
?一步需要做什么,?一步会跳转到哪里。每一步的操作都符合用户的操作预
期,降低理解成本。当我们使用携程预订机票或酒店时,细想每一步,填写日
期、选择出行地点、选择酒店到选择房间都是按照用户在线?订房时思考的流
程去设计的,这样的设计方式能够让用户按照习惯去使用产品,不需要额外学
习适应,从而提高产品的用户体验。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)