决策树decision tree:基于树的结构来进行的决策。
算法原理:在分类问题上,从逻辑角度,表示基于特征对实例进行分类的过程,可以认为是if-then的集合。从几何角度可以认为是定义在特征空间与类空间上的条件概率分布。
决策树结构:如下图所示的西瓜分类决策树(我感觉更像树的根,可以叫决策根),一颗完整的决策树包含三个部分:
1,根节点:树的最顶端的节点,如色泽。
2,叶子节点:树最底部的那些节点,也就是决策结果,好瓜或者坏瓜。
3,内部节点:除了叶子节点的,都是内部节点,如根蒂,表示属性特征。
决策树的目标:根据给定的训练数据集构建一个泛化能力强的决策树模型,将样本越分越纯。
基本流程:遵循简单且直观的分而治之的策略。
决策树的三个步骤:特征选择,决策树的生成,决策树的修剪。
如上图所示,为决策树学习的基本算法,决策树的生成是一个递归过程,在决策树算法中,有以下三种情况会导致递归返回:
1,当前节点包含的样本全属于同一类别,无需划分;
2,当前属性集为空,或是所有样本在所有属性上取值相同,无法划分;
3,当前结点包含的样本集合为空,不能划分。
情形2,把当前结点标记为叶结点,井将其类别设定为该结点所含样本最多的类别,利用当前结点的后验分布。
情形3,把当前结点标记为叶结点,且将其类别设定为其父结点所含样本最多的类别,把父结点的样本分布作为当前结点的先验分布。
-参考自香农信息论
信息熵 information entropy:假设离散随机变量x的取值有 x 1 , x 2 , x 3 , . . . x n x_1,x_2,x_3,...x_n x1,x2,x3,...xn,其发生的概率为 p 1 , p 2 , p 3 , . . . p n p_1,p_2,p_3,...p_n p1,p2,p3,...pn,那么信息熵为:
信息熵用以描述信源的不确定度, 概率越大,可能性越大,但是信息量越小,不确定性越小,熵越小。
举个例子:假如说天气预报说明天下雨的概率是 3 / 4 3/4 3/4,那明天下雨的可能性就很大,也就意味着不确定性很小;假如说明天下雨的概率是100%,那就没有不确定性。
条件熵:条件熵 H ( Y ∣ X ) H(Y∣X) H(Y∣X) 表示在已知随机变量X的条件下随机变量Y的不确定性。即:(X,Y)发生的熵,减去X单独发生的熵,就是在X发生的前提下,Y发生新带来的熵,有点类似于贝叶斯公式。
他们的关系公式如下:
H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H(Y|X)=H(X,Y)-H(X) H(Y∣X)=H(X,Y)−H(X)
相对熵:又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度。设p(x),q(x)是随机变量X中取值的两个概率分布,则p对q的相对熵为:
D ( P ∣ ∣ Q ) = ∑ x p ( x ) l o g ( p ( x ) / q ( x ) ) D(P||Q)=\sum_xp(x)log(p(x)/q(x)) D(P∣∣Q)=x∑p(x)log(p(x)/q(x))
互信息:两个随机变量X和Y的互信息,定义为X,Y的联合分布和独立分布乘积的相对熵。
I ( X , Y ) = K L ( ( P ( X , Y ) ∣ ∣ P ( X ) P ( Y ) ) I(X,Y)=KL((P(X,Y)||P(X)P(Y)) I(X,Y)=KL((P(X,Y)∣∣P(X)P(Y))
几个参数之间的关系如下图所示:具体推导后续填坑。
将信息论中的内容引入到决策树中,便产生以下算法,不得不说,香农真NB!
信息增益==>信息熵,互信息
在决策树中,信息熵用来度量样本集合纯度的一种指标。
E n t ( D ) Ent(D) Ent(D)的值越小,则D的纯度越高。
信息增益:引用互信息的概念。
信息增益公式:
特征a对训练数据集D的信息增益g(D,a),定义为集合D的经验熵H(D)与特征a给定条件下D的经验条件熵H(D|a)之差:
G a i n ( D , a ) = H ( D ) − H ( D ∣ A ) Gain(D,a)=H(D)-H(D|A) Gain(D,a)=H(D)−H(D∣A)
熵H(D)与条件熵H(D|a)之差成为互信息,决策树学习中的信息增益等价于训练数据集中类与特征的互信息。
信息增益即互信息:表示已知一个随机变量的信息后,使得另一个随机变量的不确定性减少的程度。一般而言,信息增益越大,表示一个随机变量使得另一个随机变量的不确定性减少的程度越大,也就意味着样本的纯度越高。
ID3决策树算法就是以信息增益为准则来选择划分特征。
由于信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,引入了C4.5决策树优化算法,并引入了信息增益率。
IV(a)称为属性α 的"固有值",属性α 的可能取值数目越多(即V 越大),则IV(α) 的值通常会越大。
C4.5算法:由于信息增益偏向于属性多,增益率对可取值数目较少的属性有所偏好。为了更准确,采用先选出信息增益高平均水平的属性,再选择信息增益率最高的。
CART 决策树使用Gini指数来选择划分属性,基尼指数表示了在样本集合中,一个随机选中的样本被分错的概率。公式如下:
G i n i ( D ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(D)=\sum_{k=1}^Kp_k(1-p_k)=1-\sum_{k=1}^Kp_k^2 Gini(D)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2
Gini(D) 反映了从数据集D 中随机抽取两个样本,其类别标记不一致的概率.因此,Gini(D) 越小,则数据集D 的纯度越高。
关于基尼系数的理解,我在写笔记的时候看到了一种通俗易懂的方法,如参考3:
我们都知道信息熵的定义式为:
那么基尼系数实际上就是用 1 − p i 1-p_i 1−pi来代替 − l o g ( p i ) -log(p_i) −log(pi),画出二者图像:
基尼系数对于信息熵而言,就是在01区间内近似的用切线来代替了对数函数。因此,既然信息熵可以表述不确定度,那么基尼系数自然也可以,只不过存在一些误差。
剪枝(pruning):是决策树学习算法对付"过拟合"的主要手段。
预剪枝(prepruning):在决策树生成过程中,对每个结点在划分前先进行估计,若当前结点的划分不能带来决策树泛化性能提升,则停止划分并将当前结点标记为叶结点。
特点:
1,预剪枝使得决策树的很多分支都没有"展开,降低过拟合风险,显著减少了时间开销。
2,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高
3,预剪枝基于"贪心"本质禁止这些分支展开,给预剪枝决策树带来了欠拟合的风险。
后剪枝(post-pruning):先生成一棵决策树,然后自底向上地对非叶结点进行验证,若将该结点对应的子树替换为叶结点能带来决策树泛化性能提升,则将该子树替换为叶结点。
特点:
1,通常比预剪枝决策树保留了更多的分支. 一般情形下后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树.
2,但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对树中的所有非叶结点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。
1,统计学习方法
2,信息论
3,决策树与随机森林(从入门到精通)