小白自学机器学习之一文读懂决策树算法详解

1.概念准备

  • 1.1 递归与迭代

    迭代是人,递归是神。

    区别 定义 优缺点
    递归(recursion) 程序调用自身 1.问题大化小,减少代码量
    2.易造成堆栈溢出,浪费空间
    迭代(iterate) 利用变量的原值推算出变量的新值 1.效率高,不增加空间开销
    2.不易理解,代码不如递归简介
  • 1.2 信息熵(H(X))

    概念由来:信息论–>信息量–>自信息–>信息熵

    信息论研究信息的量化、传输、存储,一个事件中包含的信息量自信息(I(X))来量化。
    I ( X ) = l o g 1 p ( x ) I(X)=log\cfrac{1}{p_{(x)}}

​ 信息熵公式
H ( X ) = E [ I ( X ) ] = E ( log 1 p ( x ) ) ) = E [ log ( p ( x ) ) ] = ( p ( x ) log 1 p ( x ) ) ) H(X)=E[I(X)]=E(\log\cfrac{1}{p_{(x)}}))=E[-\log(p_{(x)})]=\sum(p_{(x)}\log\cfrac{1}{p_{(x)}}))
的本质是对不确定性的度量,用数学公式表达只与概率p(x)有关,是信息的期望值。熵值越高,则数据混合的种类越多,其可能的变化越多,携带的信息量也就越大,只与值的种类和各种类发生概率有关。(与具体的值无关)

​ 物理意义是平均编码长度。

​ 信息论中 l o g log 底数用2,对应单位是 b i t bit ;机器学习中习惯用 e e ,对应单位为 n a t nat ;底数用10,对应单位为 H a r t Hart

  • 1.3条件熵(H(Y|X))

    表示已知随机变量X的前提下,随机变量Y的不确定性。
    H ( Y X ) = x p ( x ) H ( Y X = x ) ) = x p ( x ) y p ( y x ) log 1 p ( y x ) = x y p ( x ) p ( y x ) log p ( y x ) = x y p ( x , y ) log p ( x , y ) p ( x ) = x y p ( x , y ) log p ( x ) p ( x , y ) H(Y|X)=\sum_x p_{(x)}H(Y|X=x)) \\ =\sum_xp_{(x)}\sum_yp_{(y|x)}\log\cfrac{1}{p{(y|x)}}\\ =-\sum_{xy}p_{(x)}p_{(y|x)}\log p_{(y|x)}\\ =-\sum_{xy}p_{(x,y)}\log\cfrac{p_{(x,y)}}{p_{(x)}}\\ =\sum_{xy}p_{(x,y)}\log\cfrac{p_{(x)}}{p_{(x,y)}}
    其中,条件概率(又称为后验概率):

p ( y x ) = p ( x , y ) p ( x ) p_{(y|x)}=\cfrac {p_{(x,y)}}{p_{(x)}}

通俗理解条件熵
p ( y x ) = p ( x , y ) p ( x ) p_{(y|x)}=\cfrac{p_{(x,y)}}{p_{(x)}}

  • 1.4 交叉熵

    以上是从信息论来理解信息熵。从**计算机编码角度(物理含义)**来理解:信息熵是随机变量平均编码的最小长度。信息熵是完美编码,交叉熵是不完美编码,相对熵是两者差值,差值也称为差异,即KL散度。
    R e l a t i v e E n t r o p y ( ) = C r o s s E n t r o p y ( ) I n f o r m a t i o n E n t r o p y ( ) Relative Entropy() = Cross Entropy() - Information Entropy()
    对于一个以 p p 为概率的样本集X(信息熵 H ( X ) = E ( I ( X ) ) = E ( log 1 p ( x ) ) H(X)=E(I(X))=E(\log \cfrac{1}{p_{(x)}}) ,用 q q 概率分布(非真实分布)来对其进行处理。

    按照真实分布 p p 来衡量识别一个样本所需要的编码长度的平均值(平均编码长度)为 H ( p ) = p ( x ) log 1 p ( x ) H(p)=\sum p_{(x)}\log \cfrac{1}{p{(x)}} ,但是按照概率分布 q q (错误分布)来衡量来自真实分布为p的数据集中的样本所需要的平均编码长度则是 H ( p , q ) = p ( x ) log 1 q ( x ) H(p,q)=\sum p_{(x)}\log\cfrac{1}{q_{(x)}} ,也就是所谓的交叉熵。根据Gibis inequality H ( p , q ) H ( p ) H(p,q)\geq H(p) 恒成立。 q = p q=p 时,两者相等。 q p q \neq p 时,两者差值就是相对熵
    D ( p q ) = H ( p , q ) H ( p ) = p ( x ) log p ( x ) q ( x ) D(p\mid\mid q)=H(p,q)-H(p)=\sum p_{(x)}\log \cfrac {p_{(x)}}{q_{(x)}}
    交叉熵在神经网络中可以作为损失函数, p p pp 为真实标记分布, q q qq 为训练后模型的预测标记分布,交叉熵损失函数可以用来衡量 p p q q 的差异及相似性。

  • 1.5 相对熵(relative entropy),又称为信息增益(Information Gain)

    交叉熵减去信息熵就是相对熵 D ( p q ) = H ( p , q ) H ( p ) = p ( x ) log p ( x ) q ( x ) D(p\mid\mid q)=H(p,q)-H(p)=\sum p_{(x)}\log \cfrac {p_{(x)}}{q_{(x)}} ,也就是用 q q 来衡量 p p 分布下识别样本所需的多余的编码长度。相对熵表示了两个概率分布的差异性,无差异那就是0。用来衡量策略与最优策略(信息熵)之间的差异。

    相对熵(relative entropy),又称为KL散度(Kullback-Leibler Divergence,KLD),信息散度(Information Divergence),信息增益(Information Gain)。

    信息增益(info gain):
    I n f o G a i n ( ) = I n f o B e f o r e S p l i t ( ) I n f o A f t e r S p l i t ( ) Info Gain() = InfoBeforeSplit() - InfoAfterSplit()

    g ( D X ) = H ( D ) H ( D X ) g(D|X)=H(D)-H(D|X)

    表示确定特征 X X 的信息后,数据集 D D 的不确定性(熵)减小的程度。

    信息增益最大作为标准(ID3算法),倾向于选择值多的特征,易导致过拟合。通过引入内在信息(Intrinsic Information)概念,采用信息增益率作为评价标准(C4.5算法)。

    信息增益率(info gain ratio):
    I n f o G a i n R a t i o ( ) = I n f o G a i n ( ) I n t r i n s i c I n f o ( ) InfoGainRatio() = InfoGain()*IntrinsicInfo()
    详解机器学习中的熵、条件熵、相对熵和交叉熵

  • 1.6 Gini指数

  • 1.7 分类问题

    分类(Classification)任务就是确定对象属于哪个预定义的目标类。常见算法有SVM、朴素贝叶斯、决策树等。

  • 1.8 Hunt算法

    参考一 参考二

    最早的决策树由Hunt等人1966年提出,因此Hunt算法是多种决策树算法的基础。

    Hunt算法:一种采用局部最优策略的决策树构建算法,通过将训练记录划分为较纯的子集,以递归方式建立决策树。 D t D_t 是与节点 t t 相关联的训练记录集, y i y_i 为类标号,Hunt算法的递归定义为:

    1. 如果 D t D_t 中所有记录都属于同一个类 y 1 y_1 ,则该节点 t t 为叶子节点。
    2. 如果 D t D_t 中记录分为 y 1 y 2 y 3 . . . y_1y_2y_3... 等多个类,则选择一个 f e a t u r e feature 作为测试条件,将记录划分为较小的子集。对于测试条件的每个输出( y 1 y 2 y 3 . . . y_1y_2y_3... 分类),分别创建一个子节点,并根据测试结果将 D t D_t 中的记录分布到子节点中,形成 D y 1 D y 2 D y 3 . . . D_{y1}D_{y2}D_{y3}... 等新的记录集。
    3. 对每个子节点递归调用此算法。(此算法成立的前提是作为测试条件 f e a t u r e feature 的每个分类 y 1 y 2 y 3 . . . y_1y_2y_3... D t D_t 中都有对应的记录,否则对应子节点就是空的。)

    对于成立条件限制之外的情况,

    1. 依据某特征的具体分类得到的子节点为空。则该节点成为叶子节点,类标号为其父节点关联记录集中类别个数最多的类标号。
    2. D t D_t 相关联的记录集中所有记录具有相同的 f e a t u r e feature (类标号除外),不能再进一步划分。则该节点成为叶子节点,类标号为其父节点关联记录集中类别个数最多的类标号(投票原则)。

    由Hunt算法原理得到决策树算法必须解决两个问题:

    • 如何分裂训练记录集(1-3)
      • 每次递归选择一个 f e a t u r e feature 作为测试条件—将记录集细分为更深一层子集,标称属性、序数属性、数值(连续)属性;二路划分、多路划分。
划分 基于标称属性的划分 序数属性 数值属性
多路
划分
1. 输出个数取决于该
属性不同取值的个数
1、输出个数取决于该
属性不同取值的个数
2.不违背序数属性值的有序性
1、离散化成序数属性
2.静态:开始建树时一次性离散化
3.动态:扩展当前节点时再离散化
两路
划分
将属性值划分成两个子集 将属性值划分成两个子集 A > a A>a o r or A < a A<a
寻找最佳分裂点 a a
  • f e a t u r e feature 指定测试条件的方法---------------- f e a t u r e feature 用法

  • 提供测试条件优劣的评价标准-------------------方法检测,引入不纯性度量(Gini index、Entropy、Misclassification error)

  • 如何停止分裂(4-5)

    • 所有子集中记录都属于同一个类标号
    • 4
    • 5
  • 二元切分法

    连续值转化为离散值(二元)的算法,选取一个分裂值,特征值大于分裂值则被转化为0,特征值小于分裂值则被转化为1。

  • 奥卡姆剃刀

    简约之法则:切勿浪费较多东西,去做‘用较少的东西,同样可以做好的事情。

  • 数据集类型

    • 标称型:标称型变量的结果只在有限目标集中选取,如True、False(主要用于分类问题)。
    • 数值型:数据型变量的结果可以从无限的数据集合中选取,如0.20、120…(主要用于回归分析)。

    两者为监督学习常用变量数据类型。

    • 可驻留内存数据。C4.5算法只能处理此类数据
  • 待定

2.直观认知

无耻混蛋 I n g l o u r i o u s B a s t e r d s Inglourious Basterds 》中 B r a d P i t t Brad Pitt ad 与女特工接头的酒馆里一帮纳粹正在玩一个游戏,每个人脑门上贴一个人物,玩家不知道自己脑门上是谁,只能通过问问题一步步缩小范围,最终猜出。决策树的逻辑框架与此游戏类似。

数据通过特征(分类效果最明显)决定根节点,依次递归叶子节点(分类完成)的过程。

决策树由节点(node)和有向边(directed edge)组成。节点分为两类:

  • 内部节点:表示feature的测试条件(用于分开具有不同feature的记录)
  • 叶子节点:表示一个分类

3.算法流程

将决策树算法结构为:特征选择–>决策树生成–>剪枝

  • 特征选择

    选出所有特征中分类效果最好的作为根节点,依据不同的选择标准(基于信息论得到ID3以及衍生出来的CARD&C4.5)得到不同的决策树算法。

    划分数据集的最大原则是:数据从无序变为有序。

    理论基础 特征依据 适用数据集 优缺点
    ID3 奥卡姆剃刀 信息增益大 标称型 1.偏向取值多的特征
    2.无剪枝
    C4.5 ID3+连续型 信息增益率 标称型
    连续
    &驻留内存
    1.效率低
    2.多次对数据集顺序扫描&排序
    3.连续特征离散化
    4.可处理不完整数据集;
    5.决策树构造过程中剪枝
    CART ID3+连续型 Gini指数小 标称型
    连续
    1.规模小
    2.效率高
    3.后剪枝

    C4.5&CART通过二元切分处理连续型变量,分裂值的选取原则是使划分后的子树中“混乱程度”(熵)最低。

  • 决策树生成

    Hunt算法为理论基础。

  • 减枝

4. ID3算法详解

  • 4.1 ID3算法简介

ID3由 R o s s Q u i n l a n Ross Quinlan 发明,以“奥卡姆剃刀”为基础:决策树越小越好(一定程度上,末抠字眼)。

  • 4.2 ID3算法推导

    • 分类系统信息熵
    • 条件熵
    • 信息增益
    • 对分类后子集递归上述过程
    • 特殊情况:所有 f e a t u r e feature 作为分裂特征都用光了,子集还不纯净,则采用投票原则确定节点类标号,并确定为叶子节点。

算法参考1

5. C4.5算法详解

6. CART算法详解

7. 分类算法常见问题

未完待续2018.11.10

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/83932807