决策树

决策树


一、 基本介绍

1.1 树模型

  • 决策树:从根节点开始一步步走到叶子节点(决策)
  • 所有的数据最终都会落到叶子节点,既可以做分类也可以做回归
    在这里插入图片描述

1.2 树的组成

  • 根节点:第一个选择点
  • 非叶子节点与分支:中间过程
  • 叶子节点:最终的决策结果
    在这里插入图片描述

1.3 决策树的训练与测试

  • 训练阶段:从给定的训练集构造出来一棵树(从根节点开始选择特征,如何进行特征切分)
  • 测试阶段:根据构造出来的树模型从上到下去走一遍就好了
  • 一旦构造好了决策树,那么分类或者预测任务就很简单了,只需要走一遍就可以了,那么难点就在于如何构造出来一颗树,这就没那么容易了,需要考虑的问题还有很多的!

二、如何切分特征(选择节点)

  • 问题:根节点的选择该用哪个特征呢?接下来呢?如何切分呢?
  • 想象一下:我们的目标应该是根节点就像一个老大似的能更好的切分数据(分类的效果更好),根节点下面的节点自然就是二当家了
  • 目标:通过一种衡量标准,来计算通过不同特征进行分支选择后的分类情况,找出来最好的那个当成根节点,以此类推

2.1 衡量标准-熵

在这里插入图片描述
在这里插入图片描述

实例:
数据14天打球情况
特征4种环境变化
目标构造决策树

在这里插入图片描述

  • 划分方式:4种
  • 问题:谁当根节点呢?
  • 依据:信息增益
    在这里插入图片描述
    在历史数据中(14天)有9天打球,5天不打球,所以此时的熵应为:
    在这里插入图片描述
    4个特征逐一分析,先从outlook特征开始:
    Outlook = sunny时,熵值为0.971
    Outlook = overcast时,熵值为0
    Outlook = rainy时,熵值为0.971
    在这里插入图片描述
  • 根据数据统计,outlook取值分别为sunny,overcast,rainy的概率分别为:5/14, 4/14, 5/14
  • 熵值计算:5/14 * 0.971 + 4/14 * 0 + 5/14 * 0.971 = 0.693
    (gain(temperature)=0.029 gain(humidity)=0.152 gain(windy)=0.048)
  • 信息增益:系统的熵值从原始的0.940下降到了0.693,增益为0.247
  • 同样的方式可以计算出其他特征的信息增益,那么我们选择最大的那个就可以啦,相当于是遍历了一遍特征,找出来了大当家,然后再其余的中继续通过信息增益找二当家!

三、决策树算法

ID3:信息增益(有什么问题呢?)

C4.5:信息增益率(解决ID3问题,考虑自身熵)

CART:使用GINI系数来当做衡量标准

GINI系数:(和熵的衡量标准类似,计算方式不相同)

在这里插入图片描述

四、分类回归树

就懒懒这一下,截图说明好了~~~在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1 在CART算法中主要分为两个步骤

  1. 将样本递归划分进行建树
    损失最小
  2. 用验证数据进行剪枝
    正则:减小模型复杂度 (节点数目)
4.2 决策树剪枝策略
  • 为什么要剪枝:决策树过拟合风险很大,理论上可以完全分得开数据(想象一下,如果树足够庞大,每个叶子节点不就一个数据了嘛)

  • 剪枝策略:预剪枝,后剪枝

  • 预剪枝:边建立决策树边进行剪枝的操作,限制深度,叶子节点个数叶子节点样本数,信息增益量等

  • 后剪枝:当建立完决策树后来进行剪枝操作,通过一定的衡量标准
    在这里插入图片描述
    (叶子节点越多,损失越大)
    在这里插入图片描述

五、树模型的特征

5.1 优点
  • 容易解释
  • 不要求对特征做预处理
    1. 能处理离散值和连续值混合的输入
    2. 对特征的单调变换不敏感 (只与数据的排序有关)
    3. 能自动进行特征选择
    4. 可处理缺失数据
  • 可扩展到大数据规模

5.2 缺点

  • 正确率不高:建树过程过于贪心,但是可作为Boosting的弱学习器(深度不太深)
  • 模型不稳定(方差大):输入数据小的变化会带来树结构的变化
    1. Bagging:随机森林
  • 当特征数目相对样本数目太多时,容易过拟合
    在这里插入图片描述

分类回归树总结

  • 模型:树(非参数模型)
  • 参数:分裂的特征及阈值
  • 目标函数
    1. 损失函数:L2损失/GINI指数
    2. 正则项:树的节点数目(L0/L1)、叶子结点分数平方和(L2)
  • 优化
    1. 建树
    2. 剪枝

Scikit-learn中的Tree

CART算法的优化实现

  1. 建树:穷举搜索所有特征所有可能取值
  2. 没有实现剪枝(采用交叉验证选择最佳的树的参数)
  3. 分类树: DecisionTreeClassifier
  4. 回归树: DecisionTreeRegressor
DecisionTreeClassifier
  • sklearn.tree.DecisionTreeClassifier(criterion=‘gini’, splitter=‘best’,max_depth=None, min_samples_split=2, min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None, random_state=None,max_leaf_nodes=None, min_impurity_split=1e-07, class_weight=None,presort=False)
  • 决策树算法特有的参数:criterion 、 splitter 、 max_depth 、
    min_samples_split 、 min_samples_leaf 、 min_weight_fraction_leaf 、
    max_features 、 max_leaf_nodes 、 min_impurity_split
    在这里插入图片描述
DecisionTreeRegressor
  • sklearn.tree.DecisionTreeRegressor(criterion=‘mse’,splitter=‘best’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=None,random_state=None,max_leaf_nodes=None, min_impurity_split=1e-07,presort=False)
  • 与分类树的参数基本相同,criterion的缺省值为‘mse’ , mean squared error, 即残差平方和的均值(L2损失)
feature_importances_
  • 特征重要性亦被称为Gini重要性,即增加该特征对Gini指标的(归一化的)减少量。
  • 可以做特征选择…
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值