Decision Tree算法(决策树)

Decision Tree算法(决策树)

1.定义

决策树是一种十分常用的分类方法。

决策树是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果。

 

2.主要思想

决策树分类主要思想是通过特征选择剪枝在已有的样本数据上建立一棵决策树。常见的决策树算法包括 ID3、C4.5、CART、随机森林等。

2.1特征选择

即如何选择最优划分属性。

随着划分过程不断进行,我们希望决策树的分支结点所包含的样本尽可能属于同一类别,即结点的“纯度”越来越高。如何衡量一个数据集纯度,这里就需要引入数据纯度函数。下面将介绍两种表示数据纯度的函数。

2.1.1.信息增益

“信息熵”是度量样本集合纯度最常用的一种指标,假定当前样本集合D中第k类样本所占的比例为,则D的信息熵定义为

Decision Tree算法(决策树)_第1张图片

Ent(D)的值越小,则D的纯度越高。

假定离散属性a有V个可能的取值,若使用a来对样本集D进行划分,则会产生V个分支结点,其中第v个分支结点包含了D中所有在属性a上取值为的样本,记为。则属性a对样本集D进行划分所获得的“信息增益”为

Decision Tree算法(决策树)_第2张图片

信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大。ID3决策树算法就是以信息增益为准则来选择划分属性

eg:用SNS社区中不真实账号检测的例子说明如何使用ID3算法构造决策树。

Decision Tree算法(决策树)_第3张图片

日志密度的信息增益为

Decision Tree算法(决策树)_第4张图片

用同样方法得到好友密度和是否使用真实头像的信息增益分别为0.553和0.033。所以根节点的划分属性为好友密度。递归上述算法后将得到整棵决策树。

ID3算法存在一个问题,就是偏向于多值属性,例如,如果存在唯一标识属性ID,则ID3会选择它作为划分属性,这样虽然使得划分纯度最大,但这种划分对分类几乎毫无用处。所以ID3的后继算法C4.5决策树算法不直接使用信息增益,而是使用“增益率”来选择最优划分属性,试图克服这个偏倚。

增益率的定义为

其中

Decision Tree算法(决策树)_第5张图片

因为增益率准则对可取值数目较少的属性有所偏好,因此,C4.5算法并不是直接选择增益率最大的划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

2.1.2.基尼指数

CART决策树使用“基尼指数”来选择划分属性

数据集D的纯度可用基尼值来度量:

Decision Tree算法(决策树)_第6张图片

Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率,因此,Gini(D)越小,则数据集D的纯度越高。

属性a的基尼指数定义为:

Decision Tree算法(决策树)_第7张图片

最终选择那个使得划分后基尼指数最小的属性作为划分属性。

 

2.2剪枝处理

剪枝是决策树算法对付“过拟合”的主要手段。

决策树剪枝的基本策略有“预剪枝”和“后剪枝”。预剪枝是指在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该结点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点,

一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树,但其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

 

2.3随机森林(Random Forest 简称RF)

随机森林其实就是在决策树的基础上,进一步在决策树的训练过程中引入了随机属性选择。

数据随机选取:

首先,从原始的数据集中采取有放回的抽样,构造子数据集,子数据集的数据量是和原始数据集相同的。不同子数据集的元素可以重复,同一个子数据集中的元素也可以重复。第二,利用子数据集来构建子决策树,将这个数据放到每个子决策树中,每个子决策树输出一个结果。最后,如果有了新的数据需要通过随机森林得到分类结果,就可以通过对子决策树的判断结果的投票,得到随机森林的输出结果了。

属性随机选取:

传统的决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性;而在随机森林中,对子决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。这里的参数k控制了随机性的引入程度:若令k=d,则子决策树的构建与传统决策树相同,一般情况下,推荐值k=log2d

 

你可能感兴趣的:(机器学习,决策树,随机森林)