d2m-3-决策树

本文详细介绍了决策树的三种经典算法:ID3、C4.5和CART。ID3算法适用于离散特征,易过拟合;C4.5对ID3进行了改进,支持连续特征处理和处理缺失值,且采用信息增益率;CART则是二叉树,用基尼指数做划分准则,同样处理连续特征和缺失值,且可用于回归任务。这些算法各有优缺点,如易受数据变动影响、可能过拟合等。
摘要由CSDN通过智能技术生成

d2m-3-决策树

  1. ID3
  2. C4.5
  3. CART
  4. MARS

基本流程

输入:训练集 D = { ( x 1 , y 1 ) , . . . , ( x n , y n ) } D=\{(x_1, y_1), ..., (x_n, y_n)\} D={(x1,y1),...,(xn,yn)}, 特征集 A = { a 1 , . . , a m } A=\{a_1, .., a_m\} A={ a1,..,am}

过程:函数TreeGenerate(D, A)

  1. 生成节点node
  2. if D中样本完全属于同一类别C,then 将node标记为C类叶节点;return end if
  3. if A空 or D中样本在A上取值相同 then 将node标记为D中样本数最多的类的叶节点;return end if
  4. 从A中选择最优划分属性 a ∗ a_* a,怎么选呢,如下
    1. 遍历A,计算划分准则来选择
  5. for a ∗ a_* a的每一个值 a ∗ v a_*^v av do
    1. 为node生成一个分支,令 D v D_v Dv表示D中在 a ∗ a_* a上取值为 a ∗ v a_*^v av的样本子集
    2. if D v D_v Dv为空,then 将node标记为D中样本数最多的类的叶节点;return
    3. else 以TreeGenerate( D v D_v Dv, A-{a_*})为分支节点 end if
      end for

输出:以node为根节点的一颗决策树

理论部分

ID3

算法步骤

1. 初始化信息增益阈值$\epsilon$
2. 判断样本是否为同一类输出$D_i$
    1. 如果是,则输出单节点树$T$,输出类别为$D_i$
    2. 如果不是,则判断特征集$A$是否为空
        1. 如果是空,则输出单节点树$T$, 输出类别为类别众数对应那个类别
        2. 如果不是,则从特征集$A$中遍历每个特征$A_i$,计算$H(D)-H(D|A)$,选取信息增益最大的那个特征$A_g$作为分裂点
            1. 如果信息增益小与$\epsilon$,则输出当前树$T_i$,输出类别为类别众数对应那个类别
            2. 如果不是,则将其分裂,并遍历所有子节点,令$D=D_i, A=A-\{A_g\}$,重复上述步骤,直到得到树

信息增益的计算方式

  • 熵, 假定当前样本集合D中第k类样本所占的比例为 p k ( k = 1 , 2 , . . . , ∣ y ∣ ) p_k(k = 1, 2, ..., |y|) pk(k=1,2,...,y)

E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k l o g 2 p k Ent(D) = -\sum_{k=1}^{|y|}{p_klog_2p_k} Ent(D)=k=1ypklog2pk

其中 x x x是特征 X X X的各个属性值

  • 信息增益

G a i n ( D , a ) = E n t ( D ) − ∑ v ∈ v a l u e ( a ) n u m ( D v ) n u m ( D ) E n t ( D v ) Gain(D,a) = Ent(D) - \sum_{v \in value(a)}{\frac{num(D_v)}{num(D)}Ent(D_v)} Gain(D,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值