分类(1):决策树与模型评估

一、如何建立决策树

1、Hunt算法

Hunt算法是许多决策树算法的基础,包括ID3、C4.5、CART。
Hunt算法步骤:

(1)如果Dt中所有数据都属于同一个类yt,则t是叶结点,用yt标记。
(2)如果Dt中包含属于多个类的数据,则选择一个属性,将数据划分为较小子集。创建子女结点,将数据按属性放入子女结点中,然后递归调用该算法。

但是该算法对于大多数情况太苛刻了,需要附加:

(1)没有可以选择的属性,则该结点为叶结点,类标号为父结点上较多数的类。
(2)如果与Dt相关的数据均为同一个属性,则不可以继续划分,类标号为多数类。

2、属性划分

(1)标称变量

标称变量,二元划分和多路划分。CART只产生二元划分,考虑k个属性的二元划分有2^(k-1)-1种方法。


4_01.png
(2)有序变量

有序变量,也可以是二元划分和多路划分,但是不能违背有序性。


4_02.png

3、属性划分标准

选择最佳划分的度量是根据划分后子女结点的不纯度度量。不纯度越低(纯度越高!),划分效果越好。

(1)不纯度度量:

![](http://www.forkosh.com/mathtex.cgi? Entropy(t)=-\sum_{i=0}^{c-1}p(i|t)log_{2}p(i|t),Entropy(t)\in[0,1])
![](http://www.forkosh.com/mathtex.cgi? Gini(t)=1-\sum_{i=0}{c-1}[p(i|t)]{2},Gini(t)\in[0,0.5])
![](http://www.forkosh.com/mathtex.cgi? ClassificationError(t)=1-max_{i}[p(i|t)],ClassificationError(t)\in[0,0.5])

4_03.png

三个度量方法都是希望取值越小越好(越纯)。

(2)结点度量:

为了确定测试结点效果,我们比较父节点(划分前)、子女结点(划分后)的不纯度变化。
<strong>信息增益:</strong>
![](http://www.forkosh.com/mathtex.cgi? \Delta = I(parent)-\sum_{j=1}^{k}\frac{N(v_{j})}{N}I(v_{j}))
其中 I 为不纯度的度量,关于 N 的计算是划分后的个数加权。
I 为熵(Entropy)的时候,Delta 为信息增益。
<strong>信息增益率(Gain Ratio):</strong>
![](http://www.forkosh.com/mathtex.cgi? GainRatio=\frac{\Delta_{info}}{SplitInfo}=\frac{\Delta_{info}}{-\sum_{i=0}^{c-1}p(i)log_{2}p(i)})
使用信息增益率,好处是把属性测试条件产生的输出数也考虑进去。说明如果某个属性产生了大量的划分,它的划分信息会很大,从而降低了增益率。
<strong><em>注:信息增益、信息增益率,我们希望越大越好,表示变化。</em></strong>

(3)连续变量的划分:

先对数据进行排序后,按照离散点的取值计算。


4_04.png

Gini和熵趋向于有大量不同值的属性。

4、决策树算法

(1)决策树归纳算法:
TreeGrowth(E,F):
  if stopping_cond(E,F)=true then
    leaf = createNode()
    leaf.label = Classify(E)
    return leaf
  else
    root = createNode()
    root.test_cond = find_best_split(E,F)
    令V={v|v是root.test_cond集合}
    for v in V do
      Ev = {e|v条件下的数据集合}
      child = TreeGrowth(Ev,F)
      将child添加到树中去,将边(root->child)标记为v
  return root
(2)决策树特点:

1、是一种非参数方法,不要求任何的先验假设。
2、找到最佳的决策树是NP完全问题。
3、相对容易解释。
4、对于噪声有相当好的鲁棒性。
5、冗余属性不会对决策树准确率造成影响。即为强相关性,一个用于划分,另一个则将被忽略。相反,不相关的属性,可能在构建树的过程中被偶然选中,导致决策树过于庞大。
6、数据碎片问题。当深度越深的时候,数据可能会太少,从而不能做出有统计意义的判断,当样本量小于某个阈值的时候,应该停止分裂。
7、子树可能在决策树中重复多次,显得复杂,难以解释。

(3)斜决策树(oblique decision tree):

这里涉及到的决策树都是每次选取一个变量分子集划分,对某些数据集(连续属性有着复杂建模)缺乏划分能力。
斜决策树可以克服这个问题。

4_05.png

测试条件为:
![](http://www.forkosh.com/mathtex.cgi? x+y<1)
另一种方法是,构造归纳法(constructive induction),该方法创建复合属性,代表已有的属性的算术、逻辑组合。
构造归纳的花费较低,而斜决策树要动态的确定属性组合,但构造归纳会产生冗余属性。

5、模型过拟合

分类模型误差分为:训练误差(training error)、泛化误差(generalization error)。
一个好的模型需要有较低的泛化误差和训练误差。

奥卡姆剃刀(Occam's razor):

给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。

悲观误差估计(pessimistic error estimate):

![](http://www.forkosh.com/mathtex.cgi? e_{g}(T)=\frac{\sum_{i=1}^{k}[e(t_{i})+\Omega (t_{i})]}{\sum_{i=1}^{k}n(t_{i})}=\frac{e(T)+\Omega(T)}{N_{t}})
k是决策树的<strong>叶节点</strong>数目,e(T)为总训练误差,Nt为总训练样本数,Omega为罚项。
对二叉树来说,0.5的罚项意味着只要至少能够改善一个训练记录分类,结点就应当扩展,当1位罚项,意味着除非能够减少一个以上训练记录的误分类,否则结点不应当扩展。

先剪枝:

当达到某个条件,提前终止。例如:当观察到某个不纯度度量低于某个确定阈值时就停止扩展叶结点,但是,难点在于很难确定正确终止的阈值。

后剪枝:

初始按照最大规模生长,按照自底向上修剪决策树。修剪方式:
(1)子树替换(subtree replacement)用叶结点替代子树,叶结点的类标号为子树的多数类;
(2)子树提升(subtree raising)子树中最常使用的分支替代子树。后剪枝能产生更好的结果。

6、评估分类器性能

自助法(bootstrap):

训练集是对于原数据集的有放回抽样,如果原始数据集N,可以证明,大小为N的自助样本大约包含原数据63.2%的记录。当N充分大的时候,1-(1-1/N)^(N) 概率逼近 1-e^(-1)=0.632。抽样 b 次,产生 b 个bootstrap样本,则,总准确率为(accs为包含所有样本计算的准确率):
![](http://www.forkosh.com/mathtex.cgi? acc_{boot}=\frac{1}{b}\sum_{i=1}^{b}(0.632\times\varepsilon {i}+0.368\times acc{s}))

准确度的区间估计:

将分类问题看做二项分布,则有:
令 X 为模型正确分类,p 为准确率,X 服从均值 Np、方差 Np(1-p)的二项分布。acc=X/N为均值 p,方差 p(1-p)/N 的二项分布。acc 的置信区间:
![](http://www.forkosh.com/mathtex.cgi? P\left(-Z_{\frac{\alpha }{2}}\leq \frac{acc-p}{\sqrt{p(1-p)/N}}\leqZ_{1-\frac{\alpha}{2}}\right)=1-\alpha)
![](http://www.forkosh.com/mathtex.cgi? P\in\frac{2\times N \times acc +Z_{\frac{\alpha}{2}}^{2}\pm Z_{\frac{\alpha}{2}}\sqrt{Z_{\frac{\alpha}{2}}^{2}+4\times N \times acc-4\times N \times acc{2}}}{2(N+Z_{\frac{\alpha}{2}}{2})})

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

推荐阅读更多精彩内容

  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,813评论 0 25
  • [TOC] 分类基本概念、决策树与模型评估 基本概念 分类:确定对象属于哪个预定义的目标类(目标类的总体是已知的)...
    hyfine阅读 3,053评论 0 0
  • 积跬步以致千里,积怠惰以致深渊 注:本篇文章在整理时主要参考了 周志华 的《机器学习》。 主要内容 决策树是机器学...
    指尖上的魔术师阅读 1,359评论 0 5
  • 机器学习 经验 数据 数据中产生模型model 的算法 学习算法 learning algorithm 数据集 d...
    时待吾阅读 3,937评论 0 3
  • (图片来源网络) 1. 章节主要内容 决策树是机器学习的一类常见算法,其核心思想是通过构建一个树状模型来对新样本进...
    闪电随笔阅读 5,214评论 3 14