决策树和随机森林(Part1)

决策树(decision tree)是一个树结构(可以是二叉树或非二叉树)。其每个非叶节点表示一个特征属性上的测试,每个分支代表这个特征属性在某个值域上的输出,而每个叶节点存放一个类别。使用决策树进行决策的过程就是从根节点开始,测试待分类项中相应的特征属性,并按照其值选择输出分支,直到到达叶子节点,将叶子节点存放的类别作为决策结果[1]
下面先来看一个小例子,看看决策树到底是什么概念:


data1.png

决策树的训练数据往往就是这样的表格形式,表中的前三列(ID不算)是数据样本的属性,最后一列是决策树需要做的分类结果。通过该数据,构建的决策树如下:


tree_demo1.png

显然,在每一个非叶节点选择哪一个特征作为分支的标准,是构建决策树的核心问题。

信息熵

信息熵就是解决我们上面标准选择问题的一个重要指标。

一方面,熵是一个用来形容系统混乱程度的物理量。假设有135个点(p_1, p_2,\ …,p_{135})分布在二维平面上,并且这些点分别属于两类。分布如下:

sample1.png

假设两种类别的点(Rreen和Ged)分别有70和65个,概率分布如下:

X G R
P \frac{70}{135} =\frac{14}{27} \frac{65}{130} = \frac{13}{27}

从中随机选择一个点,得到两种类别的点的概率很相近,整个系统是一个完全混乱的整体。

假设我们按照图中的方式将所有的点一分为。左侧有65个点,其中60个为Green,5个为Red,则概率分布如下:

X G R
P \frac{5}{65}=\frac{1}{13} \frac{60}{65}=\frac{12}{13}

我们再在左侧的点中随机选择,显然属于Green的概率要大很多,在预测的时候,预测Green的正确率就高很多。

从两种情况的混乱程度来看,第一种情况比第二种情况要混乱很多,这种混乱程度和不同类别的概率有关。

另一方面,一个事件发生所包含的信息量和这个事件发生的概率有关的,即一个事件发生的概率越小,这个事件包含的概率就越大。比如学校每天正常八点响铃,但是如果某一天八点没有响铃,没有响铃这个小概率事件包含的信息,明显比正常响铃这个大概率事件多。

因此,概率分布就把一个事件发生所传递的信息和熵联系起来了,这种熵就称为信息熵。

信息熵的定义

假设变量X的取值包含x_1, x_1, x_3,\ …, x_n,概率分布如下:

X x_1 x_2 x_n
P p_1 p_2 ... p_n

那么X包含的信息熵H(X)定义为:

H(X)=-\sum_{i}p_ilog\ p_i

条件熵

H(X,Y) - H(X)(X,Y)发生所包含的熵,减去X发生所包含的熵:即在X发生的前提下,Y的发生所带来的新的熵,就是X发生的条件下,Y发生的条件熵H(Y|X)

接下来推导H(X,Y) - H(X)的计算公式:

H(X,Y) - H(X)\\ = -\sum_{x,y}p(x,y)log\ p(x,y) + \sum_{x}p(x)log\ p(x) \\ =-\sum_{x,y}p(x,y)log\ p(x,y) + \sum_x\left(\sum_yp(x,y)\right)log\ p(x)\\ =-\sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)}\\ =-\sum_{x,y}p(x,y)log\ p(y | x)\\ = -\sum_x\sum_yp(x,y)log\ p(y|x)\\ =-\sum_x\sum_yp(x)p(y|x)log\ p(y|x)\\ =\sum_xp(x)\left( -\sum_yp(y|x)log\ p(y|x) \right)\\ =\sum_xp(x)H(Y|X=x)

相对熵

相对熵又称为互熵,交叉熵,鉴定信息,Kullback熵等。

p(x)q(x)是X中取值的两种概率分布,则p对q的相对熵是:

D(p||q) = \sum_xp(x)log\ \frac{p(x)}{q(x)} = E_{p(x)}log\ \frac{p(x)}{q(x)}

互信息

两个随机变量的互信息,定义为X,Y的联合分布和独立分布乘积的相对熵。

I(X,Y)=D\left( P(X,Y)||P(X)P(Y) \right) = \sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)p(y)}

从公式可以看出,互信息其实度量的是P(X,Y)P(X)P(Y)这两个概率分布的距离。如果X和Y的分布是完全独立的,就会有P(X,Y)=P(X)P(Y)。代入公式就可以得到两个变量的互信息为0。

如果我们用H(Y)减去I(X,Y)

H(Y) - I(X,Y)=\\ =-\sum_{y}p(y)log\ p(y) - \sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)p(y)}\\ =-\sum_y\left( \sum_xp(x,y) \right)log\ p(y) - \sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)p(y)}\\ =-\sum_{x,y}p(x,y)log\ p(y) - \sum_{x,y}p(x,y)log\ \frac{p(x,y)}{p(x)p(y)}\\ =-\sum_{x,y}p(x,y)log\frac{p(x,y)}{p(x)}\\ =-\sum_{x,y}p(x,y)log\ p(y|x)\\ =H(Y|X)

互信息的物理意义

从上面的推到,我们可以得到等式:

H(Y|X) = H(X,Y) - H(X)

H(Y|X) = H(Y) - I(X,Y)

I(X,Y) = H(X) + H(Y) - H(X,Y)

也可以得到不等式:

H(X|Y)\leq H(X)H(Y|X)\leq H(Y)

也就是说,只要X和Y不是完全独立,而是存在某些联系,那么只要在给定其中一个做为条件的情况下,另一个事件所包含的信息量都会减少。

这些物理量的关系可以整理成一个Venn图:


Venn.png

决策树的构建

再来看上面的例子:


tree_demo1.png

在根结点中,是否偿还债务的概率分布为:

是否偿还债务
P 7 3

信息熵:H_0 = -\frac{3}{10}log\frac{3}{10} -\frac{7}{10}log\frac{7}{10}

在根据是否拥有房产进行划分之后:

拥有房产的部分:

是否偿还债务
P 3 0

信息熵:H_1=0

没有房产的部分:

是否偿还债务
P 4 3

信息熵:H_2 = -\frac{4}{7}log\frac{4}{7} - \frac{3}{7}log\frac{3}{7}

我们考虑分支前后的熵的变化,对分支之后的熵求加权平均,计算可得:

\frac{3}{10}H_1 + \frac{7}{10}H_2 < H_0

显然这应该是一次有效的分支,因为熵变小意味着整体变得更加有序。从分类的直观效果来看,对于有房产的样本,可以直接判断为可以偿还债务。而且很容易理解,熵下降得越快,分支就越有效。

决策树学习

决策树学习采用的是自顶向下的递归方法,其基本思想是以信息熵为度量构造一棵熵值下降最快的树,到叶节点处的熵值为零,此时每一个叶节点中的实力都属于同一类。

实际过程中我们通常会采用一些剪枝的策略,来避免熵值为零的情况,因为熵值为零通常意味着对训练数据的过拟合。

建立决策树的关键,即为在当前状态下选择哪一个属性作为分类依据。根据不同的目标函数,建立决策树主要有以下三种算法:

  • ID3
    • Iterative Dichotomiser
  • C4.5
  • CART
    • Classification and Regression Tree

信息增益

当熵和条件中的概率由数据估计(特别是极大似然估计)得到时,所对应的熵和条件熵分别分别称为经验熵和经验条件熵。

信息增益表示得知特征A的信息而使得类X的信息的不确定性减少的程度。

定义:特征A对训练数据集D的信息增益g(D,A),定义为集合D的经验熵H(D)和特征A给定条件下D的经验条件熵H(D|A)之差。

g(D,A) = H(D) - H(D|A) = I(D,A)

其他目标

  • 信息增益率:g_r(D,A)=g(D,A)/H(A)​

  • Gini系数

    Gini(p) = \sum_{k=1}^{K}p_i(1-p_i) = \sum_{k=1}^{K}1-p_i^2

三种决策树的学习策略

  • ID3:使用信息增益、互信息g(D,A)进行特征选择
    • 取之多的属性,更容易使得数据更纯,起信息增益更大
    • 训练得到的是一棵庞大且深度浅的树,不合理
  • C4.5:信息增益率 g_r(D,A)=g(D,A)/H(A)
  • CART:基尼系数

参考资料

[1]https://blog.csdn.net/xbinworld/article/details/44660339

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,819评论 0 25
  •   决策树(Decision Tree)是一种基本的分类与回归方法,其模型呈树状结构,在分类问题中,表示基于特征对...
    殉道者之花火阅读 4,494评论 2 2
  • 1 前言 在了解树模型之前,自然想到树模型和线性模型,他们有什么区别呢? 树形模型是一个一个特征进行处理,之前线性...
    高永峰_GYF阅读 1,370评论 0 1
  • 运行平台:Windows Python版本:Python3.x IDE:pycharm 一、决策树 决策树是什么?...
    ghostdogss阅读 1,852评论 0 1
  • 决策树(decision tree)是一种基本的分类与回归方法,本文主要讨论用于分类的决策树。决策树模型呈树形结构...
    井底蛙蛙呱呱呱阅读 12,740评论 0 11