分类之决策树分类

基本概念

  • 树状结构,可以很好的对数据进行分类
  • 决策树的根节点到叶节点的每一条路径构建一条规则
  • 具有互斥且完备的特点,即每一个样本均被且只能被一条路径所覆盖
  • 只要提供的数据量足够庞大真实,通过数据挖掘模式,就可以构造决策树

分类之决策树分类_第1张图片

当决策属性的顺序不同时,就可以构建出不同的决策树

那么,哪种决策顺序是最好的

决策树构建

  • 决策树归纳的设计问题
    • 如何分裂训练记录
      • 怎样为不同类型的属性指定测试条件
      • 怎样评估每种测试条件
    • 如何停止分裂过程

指定测试条件

要点一:属性的类型

  • 标称、序数、连续

要点二:划分的路数

  • 多路划分
  • 二元划分

基于标称属性的分裂

  • 多路划分:划分数(输出数)取决于该属性不同属性值的个数

    例如:婚姻状态可以划分为 未婚、已婚、离婚

  • 二元划分:划分数为2,这种划分需要考虑创建K个属性值的二元化分的所有有 2 k − 1 − 1 2^{k-1}-1 2k11中方法

    例如:婚姻状态划分为 {已婚,未婚}和{离婚}两类

    或者:划分为{已婚,离婚}和{未婚}两类

基于序数属性的分裂

  • 多路划分:划分数(输出数)取决于该属性不同属性值的个数

    例如:把规模划分为 小、中、大

  • 二元划分:划分数为2,这种划分需要考虑创建K个属性值的二元化分的所有有 2 k − 1 − 1 2^{k-1}-1 2k11中方法

    注意:对序数属性的分裂,要保留序数的有序性

    即我们可以划分为{小,中}和{大} 或者 {小}和{中,大}

    不能划分为{小,大}和{中}

基于连续属性的划分

  • 二元划分:(A=v)

    考虑所有的划分点,选择一个最优划分点v

  • 多路划分: v i ≤ A < v i + 1 ( i = 1 , . . . , k ) v_i\leq AviA<vi+1(i=1,...,k)

    即将连续数据离散化——等宽法,等频法,聚类等

评估测试条件

最佳划分

  • 选择最佳划分的度量通常是根据划分后子结点纯性的程度

    纯性的程度越高,类分布就越倾斜,划分结果就越好

分类之决策树分类_第2张图片

Entropy基于熵

E n t r o p y ( s ) = − ∑ i = 1 C p i l o g ( p i ) p i 是数据属于第 i 个类别的概率 Entropy(s)=-\sum_{i=1}^Cp_ilog(p_i)\\ p_i是数据属于第i个类别的概率 Entropy(s)=i=1Cpilog(pi)pi是数据属于第i个类别的概率

  • 信息熵——

    熵值是用来衡量数据的不确定性的一个数学的度量方法

  • 熵值越高,数据越混乱

  • 熵值越低,数据越纯

c1 0
c2 6
  • 数据纯度高

E n t r o p y ( t ) = − ∑ j p ( j ∣ t )   l o g ( p ( j ∣ t ) ) p ( C 1 ) = 0 / 6 = 0 p ( C 2 ) = 6 / 6 = 1 E n t r o p y = − 0 l o g 0 − 1 l o g 1 = − 0 − 0 = 0 Entropy(t)=-\sum_jp(j|t)\,log(p(j|t))\\ p(C1)=0/6=0\\ p(C2)=6/6=1\\ Entropy=-0log0-1log1=-0-0=0\\ Entropy(t)=jp(jt)log(p(jt))p(C1)=0/6=0p(C2)=6/6=1Entropy=0log01log1=00=0

分类之决策树分类_第3张图片

C1 3
C2 3
  • 数据混乱

E n t r o p y ( t ) = − ∑ j p ( j ∣ t )   l o g ( p ( j ∣ t ) ) p ( C 1 ) = 3 / 6 = 1 / 2 p ( C 2 ) = 3 / 6 = 1 / 2 E n t r o p y = − 0.5 l o g 0.5 − 0.5 l o g 0.5 = 1 Entropy(t)=-\sum_jp(j|t)\,log(p(j|t))\\ p(C1)=3/6=1/2\\ p(C2)=3/6=1/2\\ Entropy=-0.5log0.5-0.5log0.5=1\\ Entropy(t)=jp(jt)log(p(jt))p(C1)=3/6=1/2p(C2)=3/6=1/2Entropy=0.5log0.50.5log0.5=1

Hunt算法

D t D_t Dt是与节点t相关联的训练记录集,算法步骤如下:

  • 如果 D t D_t Dt中所有的记录都属于同一个类 y t y_t yt,则t是叶节点,用 y t y_t yt标记
  • 如果 D t D_t Dt中包含属于多个类的记录,则选择一个属性测试条件,将记录划分成较小的子集
  • 对于测试条件的每个输出,创建一个子结点,并根据测试结果将 D t D_t Dt中的记录分布到子结点中。然后对于每个子结点,递归地调用该算法

分类之决策树分类_第4张图片

  • 我们先把具有还贷能力的记录拿出来,发现类标签都是No

    即对应第一点, D t D_t Dt中的记录都属于同一类

  • 然后,不具备还贷能力的,属于多个类的记录,因此选择一个属性测试条件——婚姻状况

    然后发现,已经结婚的都是No,则结婚伸出来的是叶节点(有对应标签)

  • 再在剩余的记录里,发现新的属性测试条件——收入情况

    大于80k的都会做欺诈

    (这个数值分类限定,可以通过回归或其他一些方式获得这个类别的界限)

分类之决策树分类_第5张图片

算法特点

  • Hunt算法采用贪心策略构建决策树

    在选择划分数据的属性是,采取一系列局部最优决策来构造决策树

信息增益算法ID3

基于Entropy基于熵

  1. 我们先不考虑任何一个特征,只考虑类标签,获得类标签的一个熵值

    得到我们本身类标签是混乱的

E n t r o p y ( s ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.940 Entropy(s)=-\frac{9}{14}log_2\frac{9}{14}-\frac{5}{14}log_2\frac{5}{14}=0.940 Entropy(s)=149log2149145log2145=0.940

  1. 我通过选取的特征属性,将数据进行一个划分,观测熵值会不会发生变化

G a i n ( S , A ) = E n t r o p y ( S ) − ∑ v ∈ A ∣ S v ∣ ∣ S ∣ E n t r o p y ( S v ) ∙ 原始数据分类所需的期望信息 I n f o ( D ) = I ( 9 , 5 ) = − 9 14 l o g 2 9 14 − 5 14 l o g 2 5 14 = 0.940 ∙ 按照年龄分类所需的期望信息 期望信息 = 老年人占比 ∗ 老年人数据的信息熵 + 中年人占比 . . . I n f o a g e ( D ) = 5 14 I ( 2 , 3 ) + 4 14 I ( 0 , 4 ) + 5 14 I ( 3 , 2 ) = 5 14 ( − 2 5 l o g 2 2 5 − 3 5 l o g 2 3 5 ) + 4 14 ( − 0 4 l o g 2 0 4 − 4 4 l o g 2 4 4 ) + 5 14 ( − 3 5 l o g 2 3 5 − 2 5 l o g 2 2 5 ) = 0.694 Gain(S,A)=Entropy(S)-\sum_{v\in A}\frac{|S_v|}{|S|}Entropy(S_v)\\ \bullet 原始数据分类所需的期望信息\\ Info(D)=I(9,5)=-\frac{9}{14}log_2\frac{9}{14}-\frac{5}{14}log_2\frac{5}{14}=0.940\\ \bullet 按照年龄分类所需的期望信息\\ 期望信息=老年人占比*老年人数据的信息熵+中年人占比...\\ Info_{age}(D)=\frac{5}{14}I(2,3)+\frac{4}{14}I(0,4)+\frac{5}{14}I(3,2)\\ =\frac{5}{14}(-\frac{2}{5}log_2\frac{2}{5}-\frac{3}{5}log_2\frac{3}{5})+\\\frac{4}{14}(-\frac{0}{4}log_2\frac{0}{4}-\frac{4}{4}log_2\frac{4}{4})+\frac{5}{14}(-\frac{3}{5}log_2\frac{3}{5}-\frac{2}{5}log_2\frac{2}{5})\\ =0.694 Gain(S,A)=Entropy(S)vASSvEntropy(Sv)原始数据分类所需的期望信息Info(D)=I(9,5)=149log2149145log2145=0.940按照年龄分类所需的期望信息期望信息=老年人占比老年人数据的信息熵+中年人占比...Infoage(D)=145I(2,3)+144I(0,4)+145I(3,2)=145(52log25253log253)+144(40log24044log244)+145(53log25352log252)=0.694

分类之决策树分类_第6张图片

  • 则按照年龄来划分,使得数据信息熵降低为了0.694

所谓信息增益Gain,就是原本的信息熵-划分之后的信息熵

即,在本次示例中,按照年龄分类所带来的信息熵是0.94-0.694=0.246

同理,我们得到

  • G a i n ( a g e ) = 0.246 Gain(age)=0.246 Gain(age)=0.246

  • G a i n ( i n c o m e ) = 0.029 Gain(income)=0.029 Gain(income)=0.029

  • G a i n ( f a n c y ) = 0.151 Gain(fancy)=0.151 Gain(fancy)=0.151

  • G a i n ( c r e d i t _ r a t i n g ) = 0.048 Gain(credit\_rating)=0.048 Gain(credit_rating)=0.048

  • 在信息增益算法ID3里面,我们通过信息增益最大的属性,作为根节点

  • 信息增益从大到小,决策树从上到下,递归构造

  • 直到数据都属于同一类,分裂停止

算法特点

  • 要求数据都是离散的(才可以计算概率和信息熵)

计算纯度扩展

除了上述提及的Entropy信息熵,还有Gini指数和分类误差

GINI指数

给点结点 t 的 G i n i 值计算: G I N I ( t ) = 1 − ∑ j [ p ( j ∣ t ) ] 2 p ( j ∣ t ) 是在结点 t 中,类 j 发生的概率 给点结点t的Gini值计算:\\ GINI(t)=1-\sum_j[p(j|t)]^2\\ p(j|t)是在结点t中,类j发生的概率 给点结点tGini值计算:GINI(t)=1j[p(jt)]2p(jt)是在结点t中,类j发生的概率

  • 当类分布均衡时,GINI值达到最大值
  • 相反,当只有一个类时,GINI值达到最小值0,纯性越大
  • GINI指数不需要计算对数,一定程度上可以降低计算开销

Classification Error

给点结点 t 的 C l a s s i f i c a t i o n E r r o r 值计算: E r r o r ( t ) = 1 − m a x P ( i ∣ t ) 给点结点t的Classification Error值计算:\\ Error(t)=1-maxP(i|t)\\ 给点结点tClassificationError值计算:Error(t)=1maxP(it)

  • 当类分布均衡时,分类错误值达到最大
  • 只有一个类时,分类错误值达到最小值0,纯性越大

连续变量处理

分割区间策略

  1. 对其进行一个排序,按照等宽法进行分类——即离散化

得到离散区间——收入高、收入中等、收入低

  1. 排序,然后从最小值开始建立分割区间,开始计算各自的信息增益

    选择信息增益最大的一个分割区间作为最佳划分点

    得到一个二路划分

分类案例

对应的特征都是连续变量

  1. 排序
  2. 选择某特征,寻找使得信息增益最大的分裂点

分类之决策树分类_第7张图片

——图为根据草地面积寻找信息增益最大的分裂点

  1. 递归寻找,每一类里的属性差别

分类之决策树分类_第8张图片

分类之决策树分类_第9张图片

  • 如此的过程是通过CART算法进行,本质上运用的是GINI指数

过拟合问题

  • 复杂的决策时容易带来过拟合问题

分类之决策树分类_第10张图片

  • 从图中可以看出,这个蓝点其实是个噪音点
  • 但决策树的思路下,我们会在其附近划分出一片空间,认为是属于蓝色
  • 但实质上,那片空间的点也应该属于红圈
  • 这就叫做过拟合

分类之决策树分类_第11张图片

剪枝方法

为了避免决策树过于复杂,我们通过剪枝才避免过拟合情况的发生

  • Prepruning:如果划分带来的信息增益、Gini指标等低于阈值或元组数目低于阈值,则停止这次划分

  • Postpruning:从完全生长的树中剪去树枝——得到一个逐步修剪树

    度量分类器性能

    事后剪枝,使用新的测试及,将错误率比较高的分支给删掉

  • 过拟合是由于训练集少,模型过于复杂

  • 欠拟合是由于训练集多,模型过于简单

决策树特点

  • 决策树是一种构建分类模型的非参数方法

    不像深度学习和神经网络,需要估算w权值

  • 不需要昂贵的计算代价

    只需要计算信息熵,信息增益等

  • 决策树相对容易解释

  • 决策树是学习离散值函数的典型代表

  • 决策树对于噪声的干扰具有相当好的鲁棒性

    通过事前剪枝或事后剪枝,将噪音点去除

  • 冗余属性不会对决策树的准确率造成不利影响

    因为决策树本质是,通过信息增益,优先选择最能够划分类别的属性

    同时,冗余属性可能因为事前剪枝阈值的设定,压根不会进行考虑

  • 决策时无法学习特征之间的线性关系:特征构造

你可能感兴趣的:(AIStudy,决策树,分类,机器学习)