恰西瓜 [ 2 ] 决策树
Decision
本文仅记录自身学习,本着知识分享的目的,放出来供大家参考交流,故请勿转载。文中若有错误,望不吝赐教。
【一】 决策树
1.1 基本流程
决策树是基于树形结构来进行决策,通过给定训练数据集学得一个模型,用以对新示例进行分类。决策过程中提出的每个 判定问题 都是对某个属性的验证,每个验证的结果或者导出最终结论,或者导出进一步的判定问题。一般的,一棵决策树包含一个根节点,若干个内部节点(表征一个特征或属性)和若干个叶节点(表示一个类);
输入:
- 训练集 \(D=\{(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)\}\)
- 属性集 \(A= \{a_1,a_2,\dots,a_d\}\)
TreeGenerate(D,A){
生成结点 node ;
if D 中样本全属于同一类别 C then{
将 node 标记为 C 类叶结点;
return //递归返回,情形(1)
}
end if
if A = 空集 || D 中样本在 A 上取值相同 then{
将 node 标记为叶节点,其类别标记为 D 中样本数最多的类;
return //递归返回,情形(2)
}
ende if
//划分策略 语句,最重要!
从 A 中选择“最优”划分属性 a*;
for a* 的每一个值 a^v, do{
为 node 生成一个分支;
令 Dv 表示 D 中在a*上取值为 a_*v的样本子集;
if Dv 为空 then{
将分支节点标记为叶节点,其类别表记为 D中样本最多的类;
return //递归返回,情形(3)
}else{
以 TreeGenerate(Dv,A\{a*}) 为分支节点//从A集合中去掉 a*
}
end if
}end for
}
输出:以 node 为根节点的一棵决策树
1.2 划分选择
决策树学习的关键在于如何选择最优划分属性,一般而言,我们希望决策树的分支节点所包含的样本尽可能属于同一类别,即节点的 purity 越来越高。 那么该如何定量的刻画这个“纯度”呢?
1.2.0 离散信源及其信息测度(本节主要介绍信息论,可跳过)
我将首先介绍信源,简要列出信源的统计特性和数学模型,以及离散信源的信息测度-熵 及其性质。
信源是信息的来源,是产生消息或消息序列的源泉,信息是抽象的,而消息是具体的,他不是信息本身,却携带者信息。
- 信源输出的消息用随机变量描述
假设我们仍一颗质地均匀的骰子,研究其落下后朝上一面的点数,每次实验结果必定是\(一点,二点\dots六点\)中的某一面朝上。
这种信源输出的消息是:
这六个不同的消息构成两两互不相容的基本事件集合,样本空间为符号集\(A=\{\alpha_1,\cdots,\alpha_6\}\)由大量实验表明,个消息都是等概率出现的为\(\frac{1}{6}\),因此,可以用一个离散型随机变量\(X\),而\(X\)的概率分布就是个消息出现的先验概率,来描述这个信源输出的消息:
上式表明信源的概率空间必定是一个完备集。由上式可推广出最基本的离散信源模型如下:
如果信源给定,其相应的概率空间也就给定,反之若概率空间给定,则相应信源相当于给定,所以概率空间能表征离散信源的统计特性,因此有时也把概率空间称为信源空间
同理可以定义连续信源空间
- 信源的输出可以用N维随机矢量\(X=(X_1\ X_2\dots\ X_N)\)来描述,其中N可以为有限正整数或可列个,有时又成\(X\)为随机序列,我们假设信源输出的是平稳的随机序列,也就是序列的统计性质与时间增量无关。
平稳信源又分为无记忆信源和有记忆信源,在某些简单的离散平稳信源情况下,信源先后发出的一个个符号彼此是统计独立的,则\(N\)维随机矢量的联合概率分布满足:
即当不同时刻的离散随机变量又取自同一个符号集
是N维随机矢量的一个取值.
由符号集\(A:\{a_1,a_2,\cdots ,a_q\}\)与概率测度\(\leq P(a_{i_k}\leq1(i_k=1,\cdots ,q)\)构成一个概率空间
我们称由信源空间\([X,P(x)]\)描述的信源\(X\)为 离散无记忆信源 。这种信源在不同时刻发出的符号之间是无依赖的,彼此统计独立的。我们把此信源X 所输出的随机矢量\(X\)所描述的信源称为 离散无记忆信源\(X\)的N次扩展信源。离散无记忆信源的N此扩展信源的数学模型是X信源空间的N重空间
其中,\(\alpha_i=(a_{i_1}\cdots a_{i_k})\ \ \ \ (i_1,i_2,\cdots ,i_N=1,2,\cdots ,q)\)并满足\(0\leq P(\alpha_i) \leq 1\)且
离散信源的信息熵
首先我们直观的定义信息量为:
我们也知道,事件发生的不确定性与事件发生的概率呈负相关关系,对于发生概率等于1的必然事件,就不存在不确定性,某事件发生所含有的信息量应该是该事件发生的先验概率的函数
式中,\(P(a_i)\)是时间ai发生的先验概率,而I表示时间ai发生所含有的信息量,我们称之为 ai 的自信息量.代表某一信源发出某一消息所含有的信息量。
我们定义自信息的数学期望为信源的平均自信息量,即
信源的信息熵H 是从整个信源的统计特性来考虑的,他是平均意义上来表征信源的总体信息测度的,对于确定的信源,其信息熵是一个确定的数值。
信息熵的基本性质
- 对称性
当变量的顺序任意呼唤是,熵函数的值不变:\(H(p_1,p_2\cdots ,p_q)=\cdots=H(p_q,p_1,\cdots,p_{q-1})\)
- 确定性
从总体来说,信源虽然有着不同的输出消息,但他只有一个消息几乎必然出现,而其他消息都是几乎不可能出现,那么此心愿就是个确知信源,熵为零。
- 非负性
显然,易证,观察得知,证明略,由文章篇幅限制证明留做习题,易见 qwq
- 扩展性
信源消息集中的消息数目增多时,若这些消息对应的概率很小,则信源的熵不变,这是信源总体平均性的一种体现。
- 可加性
独立统计信源X和Y的联合信源的熵等于分别熵之和:\(H(XY)=H(X)+H(Y)\)
- 强可加性
两个相互关联的信源X,Y的联合信源的熵等于:\(H(XY)=H(X)+H(Y|X)\)
其中,条件熵公式为:\(\sum_{i=1}^np_iH_m(p_{i1},\cdots,p_{im})=\sum_{i=1}^np_iH(Y|X=x_i)=H(Y|X)\)
- 递增性
- 极值性
\(H(p_1,\cdots,p_q)\leq H(1/q,\cdots,1/q)=logq\),又称为最大离散熵定理
- 上凸性
熵函数H(P)是概率矢量P的严格上凸函数,即对于任意\(0<\theta<1\),有
1.2.1 信息增熵
由上节,我们假定当前样本集合 \(D\) 中第\(k\)类样本所占的比例为 \(p_k,(k=1,2,\cdots,|\gamma|)\),则 \(D\) 的信息熵(entropy)定义为
- 易知 \(min\ Ent(D)=0,max\ Ent(D)=log_2|\gamma|\),Ent(D)的值越小,则D的纯度越高。
假定离散属性 a 由 V 个可能的取值\(\{a^1,a^2,\cdots,a^V\}\),若用 特征a 来对样本集 D 进行划分,则会产生 V 个分支节点,其中第v个分支节点包含了 D中所有在属性 a 上取值为 \(a^v\) 的样本,记为\(D^v\),由(2.1)式可计算出 \(D^v\) 的信息熵,再考虑到不同的分支节点所包含的样本数也不同,给分支节点赋予权重\(\frac{|D^v|}{|D|}\), 于是可计算出用属性 a 对样本集 D 进行划分所获得的信息增益(information gain)
- 每次划分后信息增益越大,则意味着使用属性 a 来进行划分所获得的“纯度提升“越大。因此,我们可以讲划分策略设定为
1.2.2 增益率
信息增益准则对可取值数目较多的属性有所偏好(例如可能将样本的编号作为一种特征),为减少这种偏好可能带来的不良影响,C4.5决策树算法[Quinlan,1993]使用 增益率 来选择最优划分属性.
值得注意的是,增益率准则可能会对可取值数目较少的属性有所偏好,因此C4.5算法使用了一个启发式[Quinlan, 1993]:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。
1.2.3 基尼系数
CART决策树[Breiman et al., 1984] 试图用基尼系数(Gini index)来选择划分属性,数据集 D 的纯度可以通过 基尼系数来度量:
Gini(D) 反映了从数据集D 中随机抽取的两个样本,其类别标记不一致的概率。
属性a的基尼指数定义为:
于是我们在后选属性集合A 中,选择那个使得划分后基尼系数最小的属性作为最优划分属性,即:
1.3 剪支处理
剪支 pruning是决策树学习算法对付”过拟合“的主要手段。通过主动去掉一些分支来降低过拟合的风险。
决策树剪枝的基本策略有“预剪枝”和“后剪枝”,预剪枝是说在决策树生成过程中,对每个结点划分前先进行估计,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分,并将当前节点标记为叶节点。后剪枝则是先从训练集中生成一颗完整的决策树,然后自底向上的对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来泛化性能提升,则替换。
后剪枝决策树通常比预剪枝决策树保留了更多的分支,一般情况下,后剪枝决策树的欠拟合风险很小(有些分支可能当前的划分不能提升泛化性能,但在其基础上进行的后续划分却有可能导致性能显著提高),泛化性能往往优于预剪枝决策树,但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上的对数中所有非叶节点进行逐一考察,因此训练时间开销要比未减枝决策树和预剪支决策树都要大得多。
1.4 连续与缺失值
在数据属性数目较多的情况下,往往会有大量样本出现缺失值,如简单放弃不完整样本,无疑是对信息极大的浪费,如果利用有缺失属性值的训练样例进行学习,我们需要解决两个问题:(1)如何在属性值缺失的情况下进行划分属性选择;(2)给定划分属性,若样本再改属性上得值缺失,该如何对样本进行划分?
给定训练集 D 和属性 a,令\(\tilde{D}\)表示 D 中在属性 a 上没有确实值得样本子集,对于(1)显然我们只可以根据\(\tilde{D}\)判断属性a的优劣。假定属性a有V个可取值\(\{a^1,a^2,\dots,a^V\}\),令\(\tilde{D^v}\)表示\(\tilde{D}\)中在属性a上取值为\(a^v\)的样本子集,\(\tilde{D_k}\)表示\(\tilde{D}\)中属于第 k类(k =1,2,...,|y|)的样本子集,显然有\(\tilde{D}=\bigcup_{k=1}^{|y|}\tilde{D_k}=\bigcup_{v=1}^{V}\tilde{D^v}\)假定我们对每一个样本x赋予一个权重\(\omega_x\)并定义:
显然\(\sum_{k=1}^{|y|}\tilde{p}_k=1,\sum_{v=1}^V\tilde{r}_v=1\)
基于上述定义,我们把信息增益的计算式推广为:
对问题(2),若样本\(x\)在划分属性 a 上的取值已知,贼将\(x\)划入于其取值相对应的子节点,且样本权值在子结点中保持为\(\omega_x\),若样本\(x\)在划分属性 a 上的取值位置,则将\(x\)同时划入所有子节点,且样本权值在属性值\(a^v\)对应的子结点中调整为\(\tilde r_v.\omega_x\);直观来看,就是让同一个样本以不同的概率划入到不同的子结点中去-C4.5 [quinlan, 1993]