初探决策树(Decision Tree)基于离散属性生成的决策树

今天写决策树的第一篇文章。

首先对决策树有个感性的认识,类似于Galgame每个选择会导致不同分支,进而导致不同结局一样,决策树的本质就是构造一棵类似Galgame的选择树,使得在每一个节点,可以通过所输入特征的不同表现将不同的类甄别出来。这是一个分类算法。可以将决策树转化为一个if-then规则的集合

决策树的要素:

非叶子结点:判断模块(decision block)用长方形表示

叶子节点:终止模块(terminating block)用椭圆形表示

分支:分支(branch)用箭头表示,在线上搭载了进入该子节点的信息

Definition:分类决策树是一种描述对实例进行分类的树形结构。

决策树学习:

决策树学习本质上是从训练数据集中归纳出一种规则。我们需要的是一个和训练数据矛盾较小的决策树,同时其应该具有很好的泛化能力。

假设给定一系列训练数据集

D=\{(\vec{x} _{1},y_{1}),(\vec{x} _{2},y_{2})……(\vec{x} _{N},y_{N})\}

其中\vec{x} _{i}=(x_{i1},x_{i2},……,x_{in})表示输入实例,y_{i}为类标记,i=1,2,...,N,N为样本容量。

学习的目标是构建一个决策树模型对实例进行归类

决策树的算法优劣性分析:

优点:计算时空复杂度不高,输出结果易理解,对特征缺失不敏感,可以不进行特征处理

缺点:出现过拟合(Overfitting)问题

留坑:时间复杂性分析

基于离散属性的决策树的算法过程:(IO3 Algorithm)//不完全采用二分法

伪代码:

node CreateNode(dataSet,node):

if all data in dataSet belongs to the same Label//已经分类完成

        return node

else

        chooseBestFeatureToSplit//如果要剪枝,在这里剪信息增益占原信息的比

        newnode[]=splitDataSet

        for subDataSet in dataSet//递归建树

                 CreateNode(subDataSet,newnode)

return node;

六步法运用算法:

(1)收集数据

(2)准备数据:需要对离散数据进行离散化

(3)分析数据:正常

(4)训练算法:基于验证集构造一棵经验树

(5)测试算法:使用经验树,计算错误率

(6)使用算法

怎么划分数据集:

我们需要让无序的数据变得更加有序。衡量数据集混乱程度的定量特征有三个:

n表示分成的类数,p_{i}表示每一类出现的概率。

熵(entropy)H=-\sum_{i=1}^np(x_{i})log_{2}  p(x_{i})

条件熵(conditional entropy)H(Y|X)=\sum_{i=1}^n p_{i}H(Y|X=x_{i})

当熵和条件熵是由数据估计得到的时候,所对应的熵称作经验熵(empirical entropy)和经验条件熵(empirical  conditional entropy)

信息增益(informatioan gain)表示已知一个特征的信息而使得类的信息的不确定的减少程度

考虑一个特征A和训练集DAD的信息增益定义为集合D的经验熵H(D)和特征A给定的经验条件熵H(D|A)之差

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

决策树中的信息增益等价于训练数据集中类和特征的互信息。

基尼不纯度(Gini impurity)G=1-\sum_{i=1}^n p_{i}^2 (常用于基于连续属性的决策树衡量)

分类误差率E=1-max(p1,p2)(常用于基于连续属性的决策树衡量)

注意:可以进行多分类,也可以合并一些类,进行二分类。如果这些类彼此不相关,则没有问题。如果类之间有序数关系(高收入、中等收入、低收入)应该注意同一个选择分支中的类应该要相连。

信息增益算法和信息增益比算法

训练集D,K 个类C_k,k=1,2,3……K,特征A有n个不同的取值,并记D_{ik}=D_{i}\cap C_{k}

输入数据集D,特征A,输出信息增益g(D,A)

empirical entropy: H(D)=-\sum_{k=1}^K  \frac{|C_k|}{D}  log_{2}  \frac{|C_k|}{D}

empirical conditional entropy: H(D|A)=\sum_{i=1}^{n}  \frac{|D_i|}{|D|} H(D_i) = \sum_{i=1}^{n}  \frac{|D_i|}{|D|}  \sum_{k=1}^{K} \frac{|D_{ik}|}{|D_i|}log_{2}  \frac{|D_{ik}|}{|D_i|}

information gain: g(D,A)=H(D)-H(D|A)

information gain ratio: g_{R}(D,A)=\frac {g(D,A)}{H_{A}(D)}while H_{A}(D)=-\sum_{i=1}^{n}  \frac {|D_i|}{|D|} log_2  \frac {|D_i|}{|D|}

C4.5和ID3使用不同的衡量标准选择特征,ID3用信息增益衡量特征,会偏向于数据多的特征。C4.5用信息比增益衡量选择特征,可以进行一定矫正。

决策树的代价函数和剪枝问题

决策树如果不进行剪枝,在数据量很大而具有噪音的时候,不可避免地会出现overfit的问题。

决策树剪枝的算法有很多,以下介绍基于验证集精度和划分的。

第一种方法(预剪枝或后剪枝)是基于验证结合精度的算法。

预剪枝算法:

在分类的过程中,先假设不对节点分类,先用举手表决计算验证集精度。

分类之后,我们继续举手表决计算分成子集之后的验证集合精度,若没有提升,则不再分类。若有提升,递归下去进行分类。

预剪枝会避免决策树很多分支的展开,降低过拟合的风险,显著地减少了决策树的训练时间开销和测试时间开销。

但是我们注意到,有的分支当下的展开虽然没有很大的影响,但是在之后的分支中可能会产生很大的影响。这是一个贪心策略,不一定对应全局最优,有一定的风险导致欠拟合。

后剪枝算法:

先生成决策树再考虑叶子节点如果缩回去,精度是否有提升进而决定是否剪枝。直到无法剪枝递归过程结束


第二种方法是基于叶子结点个数和信息熵(其实要考虑层数也是可以),进而构造一个决策树算法的loss function,设计一个剪枝算法,也属于后剪枝。

考虑一棵树T的叶节点个数\vert T \vert,tT的叶节点,该叶节点有N_t个样本点,其中第k类的样本点有N_{ik}个,H_t (T)是叶节点t的经验熵,\alpha是个参数,定义决策树学习的损失函数:

C_{\alpha} (T)=C(T)+\alpha|T|

我们用C(T)表示模型对训练数据的预测误差

C(T)=\sum_{t=1}^{|T|}{N_t}{H_t}(T)=-\sum_{t=1}^{|T|}\sum_{k=1}^{K} N_{tk}log \frac{N_{tk}}{N_t}

注意到这里叶子结点越多,损失函数越大。

其中的经验熵可以表示为:

H_t (T)=-\sum_{k} \frac{N_{tk}}{N_t} log \frac{N_{tk}}{N_t}

也就是每个结点的熵的和。

剪枝算法:

输入:生成算法产生的树T,参数\alpha,输出修剪后的子树T_\alpha

(1)计算每个结点的经验熵;

(2)尝试递归从叶子缩回,如果回缩使得损失函数减小,则进行剪枝,将父节点变为新结点;

(3)递归直到不能继续为止。

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

推荐阅读更多精彩内容

  •   决策树(Decision Tree)是一种基本的分类与回归方法,其模型呈树状结构,在分类问题中,表示基于特征对...
    殉道者之花火阅读 4,489评论 2 2
  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,817评论 0 25
  • 一、决策树应用体验 分类   从上面可以看出,决策树对分类具有线性回归无可比拟的优势, 如果对未参与训练的数据集是...
    杨强AT南京阅读 1,240评论 1 3
  • 1、模型原理 (一)原理 1、原理:引入信息熵(不确定程度)的概念,通过计算各属性下的信息增益程度(信息增益越大,...
    Python_Franklin阅读 12,284评论 0 17
  • 1.前言 决策树是一种基本的分类和回归方法。决策树呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。采用...
    胜利主义章北海阅读 2,632评论 0 0