机器学习笔记--十分钟教你学会【决策树】

1. 决策树

我们在生活中总会面临很多选择,比如这个股票看起来还可以,买or不买?我们可以知道这个股票的一些信息:比如大股东刚刚增持,比如市盈率很低(市场上普遍认为同等其他条件下,市盈率更低的股票性价比更高),比如前几天有过一次涨停,比如别的股票都跌的时候这个股票抗跌。。。。等等,我们需要根据这些条件最后做出选择:买(或者不买)。

又比如作为一个单身女青年,你妈有一天突然问你要不要去相亲,然后把男方的条件告诉你,身高180,体重180,长相帅气,年薪20万。。。。等等,你需要根据这些条件判断到底去不去相亲?

面对上面一些选择的时候,我们是需要一个判断标准的,比如相亲问题,我们心里可能会有一个判断路径,比如先看身高,是否算高,如果算高,看年薪是否算高薪,高薪去相亲,不高薪再看其他条件是否突出。如果身高不算高的话,看长相是否帅气,不帅就直接pass,帅的话,再看年薪,再看身材是否健硕等等,假设我们的决策路径如下:
在这里插入图片描述
我们会发现我们在判断的时候总有一些优先判断选项,比如上述的“身高”,还有一些劣后选项,比如“身材”等等。我们决策“去”意味着相亲对象质量高,反之则不高,我们会根据实际的相亲结果,不断的调整决策的路径,以匹配实际的相亲结果。最终我们期望这里的决策路径能够准确的预测新的相亲对象是否高质量,这就是决策树。

2.划分属性

假如我们已经相亲了20个人,我们要根据这20个样本来判断到底哪个条件才是应该排在第一位的,到底是身高还是年薪?我们的决策路径第一个需要解决的问题就是哪个条件排在第一位。这个划分属性的排序有多个方法,比如信息增益、增益率、基尼系数等,我们当然是希望排在第一位的节点更“重要”(能够更好区分“去”还是“不去”,最好根据一个属性就能全部把“去”和“不去”完全分开)。这三个属性划分的具体算法放在最后面,有兴趣的到最后看。

3.剪枝

决策树是充分考虑了所有的数据点而生成的复杂树,有可能出现过拟合的情况,决策树越复杂,过拟合的程度会越高。理论来说,不应该是拟合程度越高,预测结果越准确嘛?为什么还要避免这种情况? 考虑极端的情况,如果我们令所有的叶子节点都只含有一个数据点,那么我们能够保证所有的训练数据都能准确分类,但是很有可能得到高的预测误差,原因是将训练数据中所有的噪声数据都“准确划分”了,强化了噪声数据的作用。我们形成决策树的目的是为了能对新样本做出合理的预测,所以我们应当尽可能有效的排除噪声数据干扰,以免影响正确预测的判断。

剪枝的方法分为预剪枝和后剪枝,预剪枝就是在决策树生成的过程,也就是在每一个属性已经通过了信息增益的判断时候,不着急进行划分,而是先判断划分前后测试集(相当于相亲例子中的新的相亲对象)的准确性是否有提高,没有提高的划分就直接在此结束决策树的增长。后剪枝则是相反的过程,就是先把决策树生成完毕,再从下往上每一个节点都进行判断划分前后测试集的准确性是否有提高,将没有提高准确性的划分属性剪枝。

关于决策树的具体实现代码,下次再介绍怎么用matlab和Python实现决策树算法。

附:

1、信息增益。

先说信息熵:用来表示集合的纯度。如果只有一个样本集合D只有两个类取值,一个是“去”,一个是“不去”,概率分别是p1和p2,则信息熵为:
在这里插入图片描述
,比如上图中的,“身高”条件,我们把所有情况根据身高划分成两部分,左边那一串里面,“去”有7个,“不去”有1个,各自占比7/8和1/8。左边集合的信息熵则为:在这里插入图片描述
也就是这个集合的纯度。我们可以想见,如果“去”占比0.5,“不去”也占0.5,集合纯度就是最差( Ent(D)=1 ),如果一个为概率0,一个概率为1,则纯度最高(Ent(D)=0),信息熵可以理解为信息的复杂程度,纯度和信息熵相反。

对于信息增益来说,就是用属性划分之前的信息熵减去划分后每一子集的信息熵(需要按照子集的样本数目进行加权)。
在这里插入图片描述
信息增益准则对可取值较多的属性有所偏好,假如上述中的例子,假如年薪的取值不是两个,而是11万、12万、13万…27万,刚好16个样本一人一个取值,划分之后每一个信息熵都为0,那我们在计算上述信息增益的值,
在这里插入图片描述

,信息增益为最大值,但是显然这样的决策数目不具有泛化能力,不能对新样本进行有效预测。

因此有一种决策树算法(C4.5)采用信息增益率,即将属性的信息增益的值除以某个数以减弱它的属性数目的影响。这个值成为“固有值”。
在这里插入图片描述
3、基尼系数

我们可以这样想,如果我们从数据集中随机抽取两个样本,其类别不一样的概率越大,则数据集的纯度越低,不一样的概率我们称为基尼值:
在这里插入图片描述
则我们用属性a对集合D进行划分,划分后的基尼系数就是每个子集基尼值相加,当然,子集的基尼值需要按照其包含的样本数目进行加权。
在这里插入图片描述
因此,我们在分类的时候,选择划分后基尼系数最小的属性作为划分属性。

算法类文章我都会同期更新到个人公众号:宽客塔,欢迎关注~~

这个公众号以前是写金融类消息的,后来因为个人转行,就改为分享机器学习算法知识,也算是边学边写,跟大家共同学习~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值