对于决策树的一些整理

人们都说决策树是一种很简单的分类器,笔者也看过不少关于决策树的文章以及教程之类的,可是如果你让把独立地把这个决策过程完整地复述一遍,还是会有很多细节不太明了。在这里以问答形式作一个总结,错误的地方请指正。

一 你能说说决策树的基本流程吗?
顾名思义,决策树就是以一种树形的结构来对问题做判断。比如‘我们要决定明天要不要去桂林旅游’这个问题,首先我们会看看‘有合适的车票吗’,如果有,那再看看’有合适的住宿吗‘,如果有,那再看看’明天天气好吗‘,如果好,那再看看’那边有什么好吃的么‘, 如果有,那我们就决定去桂林吧。当然,这只是我个人的决策过程。可能有些人把’有没有好吃的‘放在第一位,有的人把‘风景是不是好看’放在第一位,有的人即使没有合适的天气也会想去逛逛。
简而言之,决策树按照分而治之的方法,每一次根据某个属性的值对样本进行分类,再传递给下一个属性进行判断分类。越早用于分类的属性所分类的样本数量越多,对分类结果的影响越大。

二 那什么时候终止分类呢?
直至所有训练数据子集被基本正确的分类,或者没有合适的属性为止

三 在每个当前结点,应该怎么选取属性?
有三种方法来选取属性:
ID3:信息增益 = 样本集的信息熵-考虑某一属性之后的信息熵。信息增益越大,我们就可以认为这个属性对分类的结果影响越大,这里便取使得信息增益最大的属性。但是,这种方法会对属性取值多的属性有偏好。试想,我们把每个样本的ID也作为属性参与到分类任务中,它对应的信息增益很大,而通过ID属性的划分,每个属性取值下便只有一个样本,那这个‘样本集’显然是不能再作分类了。为了减少这种不利影响,便有了C4.5方法。
下面我们用代码演示一下信息熵的运算(这里演示的是一个二分类问题,概率不同时不同的信息熵,可以看到,当两个类别的出现概率一样时,信息熵最大,也就是说不确定性越大):

import numpy as np
import matplotlib.pyplot as plt
def entropy(p):
    return = -p*np.log(p)-(1-p)*np.log(1-p)
x = np.linspace(0.01,0.99,200)
plt.plot(x,entropy(x))
plt.show()

这里写图片描述

C4.5:信息增益率 = 信息增益/属性的固有熵。属性的值越多,属性的固有熵就越大,相当于对ID3的方法作了一个惩罚的作用。另外,需要注意的是,单纯考虑信息增益率偏向于选择属性值少的特征,所以实际上,我们会先找出信息增益高于平均水平的属性,再从中选择增益率最高的。

CART:基尼指数:从根据某一属性分类后的样本集中任意取两个样本,其类别标记不一致的概率,基尼指数越小,说明样本集的纯度越高。
公式如下:
这里写图片描述
具体计算流程可以参考这篇文章:https://www.cnblogs.com/muzixi/p/6566803.html

四 如果某个属性是连续值,那应该怎么办呢?
比如,有20个样本,包含温度这个属性,有很多取值,总不能每一种取值下作一个分类吧?!在这里我们要取其中一个值作为划分的阀门,比如大于30度就是热,小于30度就是不热。那怎么找这个值呢?可以逐个选取在样本集中的温度取值作为划分阈值,计算哪个值的分类效果最好便取哪个值作为阈值。

五 在有些样本中有些属性值缺失的情况下如何选择划分属性?
以计算某个属性的信息增益为例,选取此属性不缺失的样本计算信息增益,再乘以属性不缺失的样本相对于总样本量的概率

六 选好了划分属性,某个样本若缺失此属性值,应该划分到哪个结点去呢?
划分到各个结点,但是要乘以相应的权重,权重值为某结点的样本数相对于总样本量的概率

七 决策树都有什么优缺点?
过程简单明了,特别直观可解释性强;
对缺失值不敏感;
容易过拟合;
如果有新的样本加入,必须重新建立一棵决策树

八 怎么对决策树容易过拟合这个问题进行处理?
决策树生成算法递归的产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知测试数据的分类缺没有那么精确,即会出现过拟合现象。过拟合产生的原因在于在学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决方法是考虑决策树的复杂度,对已经生成的树进行简化,称作剪枝。
剪枝:从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型。
决策树的代价函数:L= 各个结点的经验熵*结点的样本树+惩罚系数*结点个数
惩罚系数越大,结点个数就越少,那么决策树便越简单。

九 随机森林是怎么回事?
随机森林,顾名思义,就是有许多决策树的分类器集合,包含两个随机过程:
随机选取样本,训练决策树;
随机选取属性,训练决策树
训练得到一事实上数量的决策树之后,对于新的输入数据,用投票表决法得到最终的分类结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值