[DataAnalysis]数据挖掘导论——决策树详解

Hunt算法

Hunt是许多决策树算法的基础,包括ID3、C4.5和CART。

Hunt:递归地使用属性测试条件直至D_t中所有记录属于同一类。

(1)如果D_t中所有记录都属于同一类y_t,则t是叶结点,用y_t标记。

(2)如果D_t中包含属于多个类的记录,则选择一个属性测试条件,将记录划分为较小的子集。对于测试条件的每个输出,创建一个子女结点,并根据测试结果将D_t中的记录分布到子女结点中。然后,对于每个子女结点,递归地调用该算法。 

表示属性测试条件的办法

二元属性、标称属性、序数属性和连续属性

选择最佳划分的度量

一般是根据划分后子女结点不纯性的程度。

不纯性的度量:

Entropy(t)=-\sum_{i=0}^{c-1}p(i|t)log_2p(i|t)

Gini(t)=1-\sum_{i=0}^{c-1}[p(i|t)]^2

Classification\quad error(t)=1-\max_{i}[p(i|t)]

补充:

(1)增益率:

为解决熵和Gini指标等不纯性度量趋于有利于具有大量不同值的属性,CART使用二元划分属性,C4.5使用增益率。

Gain\quad ratio =\frac{\triangle _{info}}{Split\quad Info}

模型的过分拟合

分类模型的误差大致分为两种:训练误差和泛化误差。

拟合不足:训练误差与检验误差都很大

过分拟合:训练误差下降但是检验误差上升

过拟合的原因

(1)噪声导致的过拟合:样本被错误标记。

(2)缺乏代表性样本导致的过分拟合:根据少量训练记录做出分类决策的模型也容易受过分拟合的影响。

结合模型复杂度

奥卡姆剃刀(节俭原则):给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。

悲观误差评估:使用训练误差和模型复杂度罚项的和计算泛化误差

n(t)是结点t分类的训练记录数,e(t)是被误分类的记录数。决策树T的悲观误差估计e_g(T)可用下式计算:

e_g(T)=\frac{\sum_{i=1}{k}[e(t_i)+\Omega(t_i)]}{\sum_{i=1}^kn(t_i)}=\frac{e(T)+\Omega(T)}{N_t}

其中:k是决策树的叶结点数,e(T)决策树的总训练误差,N_t是训练记录数,\Omega(t_i)是每个结点t_i对应的罚项。

最小描述长度原则:

另一种结合模型复杂度的方法是基于称作最小描述长度(mininum description length,MDL)原则的信息论方法。

使用确认集:不再使用训练集估计泛化误差,而是把原始的训练数据集分为两个较小的子集,一个子集用于训练,另一个子集用于估计泛化误差。

处理决策树归纳中的过分拟合

介绍在决策树归纳上避免过分拟合的策略

先剪枝(提前终于规则)

在这种方法中,树增长算法在产生完全拟合整个训练数据集的完全增长的决策树之前就停止决策树的生长。具体实现方式可以当观察到的不纯性度量的增益低于某个确定的阈值时就停止扩展叶结点。这种方法的优点在于避免产生过分拟合训练数据的过于复杂的子树。但是阈值的选取是一个比较复杂的问题。

后剪枝:

初始决策树按照最大规模生长,然后进行剪枝的步骤,按照自底向上的方式修剪完全增长然后修剪。

修剪有两种做法:

(1)用新的叶子节点替换子树,该叶结点的类标号由子树下记录中的多数类决定。子树替换

(2)用子树中最常使用的分支代替子树。当模型不能再改进时终止剪枝步骤。子树提升

评估分类器的性能

1、训练集和测试集方法

2、交叉验证

每个记录用于训练的次数相同,并且恰好检验一次。

3、自助法bootstrap

训练记录采用有放回抽样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值