标签:二分 过程 提高 分享 size addclass ann idt 带来
决策树的基本思想与人自身的决策机制非常类似,都是基于树结构进行决策,即对于不论什么问题。我们都先抽出当中的几个主要特征。然后对这些特征一个一个的去考察,从而决定这个问题应该属于的类别。比如我们要去商场买电脑,我们一般要通过考察电脑的CPU。内存,硬盘。显存等这些特征来推断这台电脑是好电脑还是一般电脑。当我们做推断的时候。我们都是首先看这个电脑的CPU怎么样,是i3?i5?还是i7?假设是i7我们就有更大概率倾向于觉得这台电脑是好电脑。然后我们再依次考察内存,硬盘。显存等。终于根据这些特征决定其性能的好坏。
这样我们就能够构建出一颗决策树来:
当然,对于不同的人,需求不同,所以对于特征考量的重要性也不同,比如常常玩儿游戏的人会更在乎显存,而常常看电影的则会更加在乎硬盘的大小,这时候由于其需求的不同。对于好电脑的定位也可能会不同。也会构建不同的树。因此决策树算法的核心在于怎样选择特征从而构建出我们要想要的决策树从而能够更加通用的去进行分类。为了能够构建决策树,须要介绍特征选择算法,为了能够让构建的决策树更加通用,也就是泛化能力更强,须要介绍剪枝算法
变量定义:
在维基百科中,对熵的定义是这样的“entropy (more specifically, Shannon entropy) is the expected value (average) of the information contained in each message.”。我们能够知道熵是用来定义一条消息中所包括的的信息量的,即熵越大,信息量越大,熵越小,信息量越小。那么我们能够知道,假设一个消息中的信息大部分都属于同一个类别,即消息中的信息纯度非常高,信息的确定性非常大,信息不混乱的时候,信息量是非常小的。这时候熵也是非常小的。而假设一个消息中包括全部信息且这些信息是均匀分布的,即并没有那个信息占有主导,那么这时候我们能够觉得消息中的信息的纯度是非常低的,信息的不确定性非常大,信息量也非常大,由于其包括全部可能的信息,这时候熵应该是最大的。
即信息的纯度越高,熵越大,纯度越低,熵越小。
集合
通过该公式我们能够知道,当
我们在选择特征的时候。都希望所选择的特征能够使得数据的纯度提升最大,不确定性减少最多。最好能够通过该特征的选择使得数据完毕分类。通过上面对熵和信息增益的描写叙述我们能够知道。这样的描写叙述与信息增益的功效正好相符。因此我们每次选择特征的时候,都希望选择信息增益最大的特征。
这样的利用信息增益进行选择的算法就是ID3算法。
可是我们能够发现,当使用信息增益进行特征选择的时候,其倾向于选择取值数目多的属性。
假设数据集
CART是Classfication and Regression Tree的简称,其即能够用于分类也能够用于回归,该算法使用的是基尼指数来进行特征的选择
基尼值的定义为
对于属性
在选择属性的时候,要选择那个使得划分后基尼指数最小的属性作为最优化分属性。
在构建决策树的时候,有时候为了更好的学习训练样本,可能会学过头。使得决策树分支过多。以至于将训练数据自身的一些特征作为了全部数据的一般特征从而导致学习过拟合。因此我们须要一些方法来去掉一些分支从而减少过拟合的风险。
剪枝算法有两种,预剪枝和后剪枝。预剪枝是指在构建决策树的过程中,对每个节点在划分之前进行预计。假设划分无法带来决策树泛化性能的提升,则放弃这次划分,将该节点标记为叶子节点。而后剪枝则是先通过训练集生成一个决策树,然后再自底向上的对非叶子节点进行考察。假设将该节点相应的子树转化为一个叶子节点不会减少泛化性能。则将该子树替换为叶子节点。我们能够看到预剪枝的基本思想是贪心算法,其基于贪心策略防止这些分支的展开,这可能会导致所生成的欠拟合的问题。
而后剪枝由于通常会保留比预剪枝很多其它的分支,因此欠拟合的风险要小非常多。泛化性能通常优于预剪枝。可是后剪枝过程是在生成决策树之后,须要从底向上对树中全部非叶子节点都考察一遍,因此其训练时间要比预剪枝和不剪枝都要打非常多。
标签:二分 过程 提高 分享 size addclass ann idt 带来
原文地址:http://www.cnblogs.com/jhcelue/p/7389058.html