八月快乐呀~小李又回归啦!决策树是从去年就想写的,然而拖延到了现在,果然人总到deadline才有高效的输出。
—————————————————————————————————
决策树
决策树是一种典型的分类方法。这个方法,首先对数据进行处理,利用归纳算法生成可读的规则和决策树,然后使用决策对新数据进行分析。
本质上决策树是通过一系列规则对数据进行分类的过程。
接下来具体详解:决策树结构:
决策树由结点和有向边组成。其中它的结点有两种类型: 内部结点和叶节点。 内部节点表示一个特征或属性, 叶节点表示一个类。
决策树(Decision Tree),又称为判定树, 是一种以树结构(包括二叉树和多叉树)形式表达的预测分析模型。决策树的构造过程
决策树学习的算法通常是一个递归地选择最优特征,并根据该特征对训练数据进行分割,使得各个子数据集有一个最好的分类的过程。这一过程对应着对特征空间的划分,也对应着决策树的构建:
① 开始:构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。
②如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。
③如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如果递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。
④每个子集都被分到叶节点上,即有了明确的类,就生成了一颗决策树。举个例子:假定公司收集了如下表数据,那么对于任意给定的客人(测试样例),你能帮助公司将这位客人归类吗?即:你能预测这位客人是属于“买”计算机的那一类,还是属于“不买”计算机的那一类?
从上述问题我们可以发现:买或者不买属于一个预测的结果即为最后的叶子节点,而需要多少信息则为内部需要构造的节点。那么我们可以得到以下这个简单的模型(当然比如最后一个就不符合,但整体来说是符合的--这可以看到我们只需要年龄、学生、信誉三个信息来分类即可):
又:你需要多少有关这位客人的信息才能回答这个问题?接下来划重点 想讲一下在几个博客看到的比较通俗易懂的核心思想
分类决策树的核心思想:在一个数据集中找到一个最优特征,然后从这个特征的选值中找一个最优候选值,根据这个最优候选值将数据集分为两个子数据集,然后递归上述操作,直到满足指定条件为止。
上述这段话里面有几个需要注意的点:
①最优特征怎么找?
常用的方法是依据信息增益或者信息增益率来寻找。【这里需要做一下概念的解释。熵:简单的讲就是我们做一件事需要的代价,代价越高就越不好了。在机器学习的数据集中来讲就是我们数据的不确定性,代价越高对应的不确定就越高。决策树算法的目的就是利用数据的一些规则来尽可能的降低数据集的不确定性。】
给定一批数据集,我们可以得到它的不确定性(熵),我们需要想办法降低这个不确定性,因而需要挖掘数据集中有用的特征,在某个特征的限制下,我们又能得到数据集的不确定性(这个其实就是条件熵)。
一般而言给定了一个有用的特征,数据的不确定性会降低了。因为有一个条件约束,比没有条件约束效果会好一点。用两次的值作差,就可以得出给出的这个特征使得数据集的不确定性降低了多少以及是否为有用特征,降低的越多这个特征就越好了。我们需要找到让数据集不确定性降低最多的特征即为所需要的最优特征。
②我们找到了最优特征,为什么还要找最优特征的最优候选值?
这个问题大部分是对于多分类问题。分析一下:假如我们的某个最优特征有三个类别:我们如果不找就直接分为三个子节点了。这样会出现一个问题,就是我们的这个分类对特征值会变得敏感。举个例子:我们平时考试规定了60分及格,这个控制对于大多数学生较好把控,因为就一个条件,相当于一个二分类。但是如果我们把条件控制严格一些,比如超过60分,不超过90分为优秀学生。这个条件学霸就不好控制了,对于多分类问题也是这个道理,如果我们一下子从父节点直接分了多个子节点,那么我们的数据肯定会对这个控制很敏感,敏感就会导致出错。所以我们建议对多分类问题找最优候选值来转化为二分类问题,同样多个二分类问题其实也是一个多分类问题,只是多了几个递归过程而已。
③什么时候停止?停止条件是什么?
从问题的根源出发去想一下,我们构造一颗决策树的目的是为了能在数据集上取得最好的分类效果。这其实就是一个停止条件。当我们检测到数据的分类效果已经达到够好了,我们其实就可以停止了。当然我们常用的是控制叶节点,比如控制叶节点的样本数目,比如当某个子节点内样本数目小于某一个指定值,我们就决定不再分了。还有叶节点的纯度,我们规定叶节点样本必须属于同一类才停止,这也是一个停止条件。还有最大树的深度,比如我们规定树的最大深度为某一个值,当树深度到达这个值我们也要停止。还有比如:分裂次数,最大特征数等等。
一些补充
决策树的优缺点
优点:1、推理过程容易理解,决策推理过程可以表示成If Then形式;
2、推理过程完全依赖于属性变量的取值特点;
3、可自动忽略目标变量没有贡献的属性变量,也为判断属性变量的重要性,减少变量的数目提供参考。
缺点:可能会产生过度匹配的问题
适用数据类型:数值型和标称型与决策树相关的重要算法包括:CLS, ID3,C4.5,CART
决策树学习的损失函数:正则化的极大似然函数
决策树学习的测试:最小化损失函数
决策树学习的目标:在损失函数的意义下,选择最优决策树的问题。
具体算法之后有空再补充吧~写完自己也乱乱的哈哈
搬运参考:代码参考--
机器学习实战(三)——决策树、
决策树
————————————————————————
Ending 坚持输出!
网友评论