[基本功]决策树

决策树

什么时候结束划分?

  • 当前结点包含的样本全属于同一类别,无需划分
  • 当前属性值为空,或是所有样本在所有属性上取值相同,无法划分
  • 当前结点包含的样本集合为空,不能划分

如何选择最优划分属性?

  • 信息增益(ID3)

    • 信息熵,可以度量样本集合纯度

    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=1∑∣y∣pklog2pk

    • 熵越小,则D的纯度越高
    • 用A属性对D样本集合进行划分,得到的信息增益为:

    • 信息增益准则对可取值数目较多的属性有所偏好(比如ID,一人一个)

    • 【必须离散属性,多叉树或二叉树】

  • 增益率(C4.5)

    • 增益率准则对可取值数目较少的属性有所偏好,因此C4.5并不是直接选择增益率最大的候选划分属性,而是使用了一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性。再从中选择增益率最高的。
    • 【可连续可离散,多叉树或二叉树】
  • 基尼指数(CART)

    • 分类和回归都可用

      • 数据集D的基尼值:

      G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 ( 越大越不纯 ) Gini(p)=\sum_{k=1}^Kp_k(1-p_k)=1-\sum_{k=1}^Kp_k^2(越大越不纯) Gini(p)=k=1∑Kpk(1−pk)=1−k=1∑Kpk2(越大越不纯)

      • 属性A的基尼指数:
        G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\index(D,a)=\sum{v=1}^V\frac{|D^v|}{|D|}Gini(D^v) Gini_index(D,a)=v=1∑V∣D∣∣Dv∣Gini(Dv)

      • 选最小的

    • 【可连续可离散,必须二叉树】

如何剪枝?

  • 剪枝可以防止决策树过拟合,提高泛化性能

    • 预剪枝,若当前节点的划分不能带来泛化性能提升,则停止划分并将当前结点标记为叶结点

      • 优点:降低了过拟合风险,显著减少训练时间开销和测试时间开销

      • 缺点:有些分支当前划分虽不能提升泛化性能,但在其基础上的后续划分却有可能导致性能显著提高,预剪枝基于贪心本质,带来了欠拟合风险

    • 后剪枝,生成决策树后,自底向上对非叶节点考察,用单一叶结点代替整个子树

      • 优点:欠拟合风险很小,泛化性能往往优于预剪枝决策树
      • 缺点:训练时间开销比未剪枝决策树和预剪枝决策树大很多

其他

  • 连续值处理

    • C4.5:二分法

    • 对连续属性a,可考察包含n-1个元素的候选划分点集合
      T a = { a i + a i + 1 2 ∣ 1 < = i < = n − 1 } T_a=\{\frac{a_i+a_{i+1}}2|1<=i<=n-1\} Ta={2ai+ai+1∣1<=i<=n−1}

    • 与离散属性不同,若当前结点划分属性为连续属性,该属性还可作为其后代结点的划分属性

  • 缺失值处理

    • C4.5有自己的一套处理缺失值的方法
  • 噪音数据可能影响决策树,在数据带有噪声的情况下,通过剪枝可将决策树的泛化性能提高25%

  • 多变量决策树

    • 非叶节点不再是仅对某个属性,而是对属性的线性组合进行测试
相关推荐
Tisfy3 分钟前
LeetCode 3345.最小可整除数位乘积 I:暴力枚举(从n开始尝试)
数学·算法·leetcode·题解·枚举
DolphinDB智臾科技9 分钟前
告别 TB 级数据搬运:DolphinDB 滤波算法库,重塑物联网数据价值链
物联网·算法
可编程芯片开发1 小时前
基于双PI控制器结构的六步逆变器供电无刷直流电机调速simulink仿真
算法
Sagittarius_A*1 小时前
后量子密码|通识认知 02|量子威胁核心原理:Shor 算法如何击穿传统公钥密码
算法·信息安全·密码学·量子计算
青山木2 小时前
Hot 100 --- 在排序数组中查找元素的第一个和最后一个位置
java·数据结构·算法·leetcode
其美杰布-富贵-李2 小时前
聚类算法详解:K-means、层次聚类与 DBSCAN
算法·机器学习·kmeans·聚类
碧海银沙音频科技研究院2 小时前
4 BES2710编译环境搭建方法
嵌入式硬件·算法
mifengxing3 小时前
LeetCode 238 除自身以外数组的乘积|无除法O(n)时间+O(1)空间双解法
java·算法·leetcode
依然鸣3 小时前
PTA团体程序设计天梯赛L2真题讲解L2-045-048
数据结构·c++·经验分享·学习·算法·pat考试·pat
丢掉幻想准备斗争3 小时前
5.5树与二叉树的应用
算法