《机器学习算法 5---决策树》

一 原理

决策树是一种基本的分类与回归方法。根据特征对数据不断划分,直到满足停止条件。决策树学习的本质是从训练数据中归纳出一组分类规则。

1. 过程:
学习时:利用训练数据,根据损失函数最小的原则建立决策树模型;
预测时:对给定的样本,利用建立好的树模型进行分类。

2. 特征选择:
每次选择一个特征对数据集进行划分,特征选择方法有如下几种

  • 信息增益(ID3)

    用熵来度量数据的无序程度,熵定义为信息的期望值。

    x i x_i xi的信息定义为: l ( x i ) = − l o g 2 ⁡ p ( x i ) l(x_i )=-log_2⁡p(x_i) l(xi)=log2p(xi)

    其中 p ( x i ) p(x_i) p(xi)是选择该分类的概率。熵 H = − ∑ i = 1 n P ( x i ) l o g 2 ⁡ p ( x i ) H=-∑_{i=1}^nP(x_i) log_2⁡p(x_i) H=i=1nP(xi)log2p(xi)

    信息增益方法:每次选择划分后数据集熵减少最多的特征。

  • 信息增益比(C4.5)

    信息增益方法存在偏向于选择取值较多的特征的问题,使用信息增益比对其进行校正:
    g R ( D , A ) = g ( D , A ) / H A ( D ) g_R (D,A)=g(D,A)/H_A (D) gR(D,A)=g(D,A)/HA(D)

    H A ( D ) = − ∑ i = 1 n ∣ D i ∣ / ∣ D ∣ l o g 2 ⁡ ∣ D i ∣ / ∣ D ∣ H_A (D)=-∑_{i=1}^n|D_i |/|D| log_2⁡|D_i |/|D| HA(D)=i=1nDi/Dlog2Di/D

    其中n是特征A取值的个数

  • CART方法
    假设决策树是二叉树,内部节点特征的取值为是、否,左边是,右边否。
    回归:特征选择方法为选择划分后平方误差最小的特征和切分点
    分类:特征选择方法为基尼指数
    基尼指数:
    G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p)=∑_{k=1}^Kp_k (1-p_k )=1-∑_{k=1}^Kp_k^2 Gini(p)=k=1Kpk(1pk)=1k=1Kpk2

    适合样本特征取值为0,1的情况

3. 停止划分的条件

  • 程序遍历完所有划分数据集的属性(不包括cart方法);
  • 每个分支下所有实例都具有相同的分类;
  • 信息增益小于阈值;
  • 节点的样本数低于阈值;
  • 达到最大深度;

二 实现

  1. sklearn

    DecisionTreeClassifier()
    
  2. 参数
    splitter:字符型;默认“best”,确定每个节点的分支策略,输入“random”为使用随机一部分特征的随机分支,best为选出来的一些随机特征中的最优的,可以减少过拟合。
    criterion:不纯度的指标;默认为gini,[‘gini’,‘entropy’]
    max_depth:树的最大深度,超过最大深度就被剪枝;默认为None;适合样本少维度高的数据集;可以从3开始
    max_samples_leaf:在回归中,可以让模型变的更加平滑,可以搭配max_depth一起用
    class_weight:样本不均衡,可以给少量标签更多的权重,向捕获少数类的方向建模。
    min_samples_leaf:一个节点在分支后的每个子节点都必须包含至少的个样本,否则就不会进行分支
    min_samples_split:一个节点必须要包含至少的训练样本个数,这个节点才允许被分支。
    max_features:限制分支时考虑的特征个数,超过限制个数的特征都会被舍弃,默认值为总特征个数得开方取整,既能降低模型复杂度也能提高模型复杂度
    min_impurity_decrease:限制信息增益的大小,信息增益小于设定数值得分支不会发生
    random_state:若等于某一个数,说明让生成的树或者森林是固定的;不然每次选择的特征是随机的

三 优缺点

优点:

  • 不需要前提知识或参数假设;
  • 适合高维数据;
  • 简单易于理解;
  • 短时间内处理大量数据,得到可行且效果较好的结果。
  • 能够同时处理数据型和常规性属性。

缺点:

  • 对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。
  • 易于过拟合。
  • 忽略属性之间的相关性。
  • 不支持在线学习。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值