《机器学习实战》和Udacity的ML学习笔记之决策树

《机器学习实战》和 UdacityML学习笔记

主要摘录自:决策树学习笔记整理

1.基本概念和介绍

算法原理:

决策树(Decision Tree)是一种简单但是广泛使用的分类器。通过训练数据构建决策树,可以高效的对未知的数据进行分类。

优点:

1)模型可以读性好 (具有描述性,有助于人工分析)
2)效率高 (决策树只需要一次构建,反复使用)
3)计算复杂度不高(每一次预测的最大计算次数不超过决策树的深度)

缺点:可能会产生过渡拟合问题

适用数据类型: 数值型和标称型(离散型数据) 就是说所有的数据都可以用

目标:直接做出决策(YES or NO)


 

2.决策树构建基本步骤

1. 开始,所有记录看作一个节点

2. 遍历每个变量的每一种分割方式,找到最好的分割点

3. 分割成两个节点N1和N2

4. 对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止

编码可参考:机器学习实战第三章——决策树(源码解析)

 

如何评估分割点的好坏?

如果一个分割点可以将当前的所有节点分为两类,使得每一类都很“纯”,也就是同一类的记录较多,那么就是一个好分割点。

 

量化纯度

前面讲到,决策树是根据“纯度”来构建的,如何量化纯度呢?这里介绍三种纯度计算方法。如果记录被分为n类,每一类的比例P(i)=第i类的数目/总数目。还是拿上面的例子,10个数据中可以偿还债务的记录比例为P(1) = 7/10 = 0.7,无法偿还的为P(2) = 3/10 = 0.3,N = 2。

1)Gini不纯度

image

2)熵(Entropy)

image

3)错误率

image

上面的三个公式均是值越大,表示越 “不纯”,越小表示越“纯”。三种公式只需要取一种即可,实践证明三种公司的选择对最终分类准确率的影响并不大,一般使用熵公式。

纯度差,也称为信息增益(Information Gain),公式如下:

image

其中,I代表不纯度(也就是上面三个公式的任意一种),K代表分割的节点数,一般K = 2。vj表示子节点中的记录数目。上面公式实际上就是当前节点的不纯度减去子节点不纯度的加权平均数,权重由子节点记录数与当前节点记录数的比例决定。

 

停止条件

决策树的构建过程是一个递归的过程,所以需要确定停止条件,否则过程将不会结束。一种最直观的方式是当每个子节点只有一种类型的记录时停止但是这样往往会使得树的节点过多,导致过拟合问题Overfitting)。另一种可行的方法是当前节点中的记录数低于一个最小的阀值,那么就停止分割,将max(P(i))对应的分类作为当前叶节点的分类。

 


3.过渡拟合及解决方法

采用上面算法生成的决策树在事件中往往会导致过度拟合。也就是该决策树对训练数据可以得到很低的错误率,但是运用到测试数据上却得到非常高的错误率。过渡拟合的原因有以下几点:

  • 噪音数据:训练数据中存在噪音数据,决策树的某些节点有噪音数据作为分割标准,导致决策树无法代表真实数据。
  •  

  • 缺少代表性数据:训练数据没有包含所有具有代表性的数据,导致某一类数据无法很好的匹配,这一点可以通过观察混淆矩阵(Confusion Matrix)分析得出。
  •  

  • 多重比较(Mulitple Comparition):举个列子,股票分析师预测股票涨或跌。假设分析师都是靠随机猜测,也就是他们正确的概率是0.5。每一个人预测10次,那么预测正确的次数在8次或8次以上的概率为 image,只有5%左右,比较低。但是如果50个分析师,每个人预测10次,选择至少一个人得到8次或以上的人作为代表,那么概率为 image,概率十分大,随着分析师人数的增加,概率无限接近1。但是,选出来的分析师其实是打酱油的,他对未来的预测不能做任何保证。上面这个例子就是多重比较。这一情况和决策树选取分割点类似,需要在每个变量的每一个值中选取一个作为分割的代表,所以选出一个噪音分割标准的概率是很大的。

 

优化方案:修剪枝叶

决策树过渡拟合往往是因为太过“茂盛”,也就是节点过多,所以需要裁剪(Prune Tree)枝叶。裁剪枝叶的策略对决策树正确率的影响很大。主要有两种裁剪策略。

前置裁剪 :在构建决策树的过程时,提前停止。那么,会将切分节点的条件设置的很苛刻,导致决策树很短小。结果就是决策树无法达到最优。实践证明这种策略无法得到较好的结果。

后置裁剪 :决策树构建好后,然后才开始裁剪。采用两种方法:1)用单一叶节点代替整个子树,叶节点的分类采用子树中最主要的分类;2)将一个字数完全替代另外一颗子树。后置裁剪有个问题就是计算效率,有些节点计算后就被裁剪了,导致有点浪费。

 

 

优化方案2:K-Fold Cross Validation 交叉验证

首先计算出整体的决策树T,叶节点个数记作N,设i属于[1,N]。对每个i,使用K-Fold Validataion方法计算决策树,并裁剪到i个节点,计算错误率,最后求出平均错误率。这样可以用具有最小错误率对应的i作为最终决策树的大小,对原始决策树进行裁剪,得到最优决策树。

 

优化方案3:Random Forest

Random Forest是用训练数据随机的计算出许多决策树,形成了一个森林。然后用这个森林对未知数据进行预测,选取投票最多的分类。实践证明,此算法的错误率得到了经一步的降低。这种方法背后的原理可以用“三个臭皮匠顶一个诸葛亮”这句谚语来概括。一颗树预测正确的概率可能不高,但是集体预测正确的概率却很高。

 

 

准确率估计

决策树T构建好后,需要估计预测准确率。直观说明,比如N条测试数据,X预测正确的记录数,那么可以估计acc = X/N为T的准确率。但是,这样不是很科学。因为我们是通过样本估计的准确率,很有可能存在偏差。所以,比较科学的方法是估计一个准确率的区间,这里就要用到统计学中的置信区间(Confidence Interval)。

设T的准确率p是一个客观存在的值,X的概率分布为X ~ B(N,p),即X遵循概率为p,次数为N的二项分布(Binomial Distribution),期望E(X) = N*p,方差Var(X) = N*p*(1-p)。由于当N很大时,二项分布可以近似有正太分布(Normal Distribution)计算,一般N会很大,所以X ~ N(np,n*p*(1-p))。可以算出,acc = X/N的期望E(acc) = E(X/N) = E(X)/N = p,方差Var(acc) = Var(X/N) = Var(X) / N2 = p*(1-p) / N,所以acc ~ N(p,p*(1-p)/N)。这样,就可以通过正太分布的置信区间的计算方式计算执行区间了。

正态分布的置信区间求解如下:

1) 将acc标准化,即image

2) 选择置信水平α= 95%,或其他值,这取决于你需要对这个区间有多自信。一般来说,α越大,区间越大。

3) 求出 α/2和1-α/2对应的标准正太分布的统计量 imageimage (均为常量)。然后解下面关于p的不等式。acc可以有样本估计得出。即可以得到关于p的执行区间

image


 

4.ID3算法

对于决策树来说,主要有两种算法:ID3算法和C4.5算法。C4.5算法是对ID3算法的改进。

ID3算法是决策树的一种,它是基于奥卡姆剃刀原理的,即用尽量用较少的东西做更多的事。ID3算法,即Iterative Dichotomiser 3,迭代二叉树3代,是Ross Quinlan发明的一种决策树算法,这个算法的基础就是上面提到的奥卡姆剃刀原理,越是小型的决策树越优于大的决策树,尽管如此,也不总是生成最小的树型结构,而是一个启发式算法。

在信息论中,期望信息越小,那么信息增益就越大,从而纯度就越高。ID3算法的核心思想就是以信息增益来度量属性的选择,选择分裂后信息增益最大的属性进行分裂。该算法采用自顶向下的贪婪搜索遍历可能的决策空间。


5.归纳偏置

归纳偏置其实一个附加条件的集合(注意它是条件,断言!),这些附加条件是一种“未雨绸缪”的断言,它使得学习器的正确定得以被证明——《machine learning》笔记之归纳偏置

当考虑搜索空间算法的时候,我们主要担心两种偏置。限定偏置(restriction bias)和优选偏置(preference bias)。限定偏置就是一个假设集合,即决策树以及它可以表示的内容。而不会去考虑一元二次函数以及无穷数等等,只考虑决策树中所给出的离散变量所表示的可能情况 。优选偏置,它会告诉我们首选的假设集合的来源。
——Charles Isbell

ID3算法的和 候选消除算法显示出的归纳偏置之间有一个有趣的差别:

1.ID3算法的假设空间是一个完整的假设空间,从ID3的归纳偏置可知,它不彻底搜索这个空间,而是从简单的假设到复杂的假设,直到遇到终止条件。因此ID3的归纳偏置完全是搜索策略排序假设的结果。

2.变型空间的候选消除算法的搜索范围是不完整的假设空间(只搜索由属性的合取表示的假设),但它彻底搜索这个空间,查找所有与训练样例一致的假设。它的归纳偏置完全是假设表示的表达能力的结果。

总结一下,ID3算法的归纳偏置来自它的搜索策略,该策略假定某种假设胜过其他假设(较短的假设比较长的更优),因此称这种归纳偏置为优选偏置(preference bias)或搜索偏置(search bias)。相反,候选消除算法的偏置是对待考虑假设的一种限定。这种形式的偏置通常称为限定偏置(restriction bias)或语言偏置(language)。

通常,优先偏置比限定偏置更符合需要,因为它保证了位置的目标函数被包含在学习器工作的假设空间中(要不然很可能白忙活一场)。但在实际中,综合使用两者的学习系统是很常见的(例如使用最小均方差(优选偏置)的以线性函数(限定偏置)来表示评估函数的问题)。
————— 决策树学习笔记 RaySaint 的BLOG

6.参考内容:

可参考:
1.《machine learning》笔记之归纳偏置
2*. 决策树学习笔记(比较完整的归纳)
3. 概念学习和归纳偏置(比较深奥的公式推理)

其它参考:
1. 机器学习实战第三章——决策树(源码解析)
2. 决策树之ID3算法]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值