文章目录

  • 0. 前言
  • 1. 划分选择
    • 1.1. ID3决策树
    • 1.2. C4.5决策树
    • 1.3. CART决策树
  • 2. 剪枝
  • 3. 连续值处理
  • 4. 缺失值处理

如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

0. 前言

一颗决策树包含一个根节点、若干个内部节点、若干个叶子节点,叶子节点对应于决策结果,其他每个节点对应于一个属性测试

构建决策树算法如下图所示(图源:机器学习):

有以下三种情况递归返回:

  • 当前节点的所有样本都属于同一个类别
  • 当前可划分的属性集为空,或者属性集的取值都相同
  • 当前节点的样本集为空

1. 划分选择

1.1. ID3决策树

信息熵(information entropy)越小,则节点纯度越高,其中pkp_kpk​表示第kkk类样本所占比例:
Ent(D)=−∑k=1∣K∣pklog⁡2pkEnt(D)=-\sum_{k=1}^{|K|}p_k\log_2p_k Ent(D)=−k=1∑∣K∣​pk​log2​pk​

信息增益(information gain)越大,则意味使用属性aaa划分获得的纯度提升越大,其中DvD^vDv表示为DDD中在属性aaa上取值为ava^vav的样本:
Gain(D,a)=Ent(D)−∑v=1V∣Dv∣∣D∣Ent(Dv)Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)−v=1∑V​∣D∣∣Dv∣​Ent(Dv)

信息增益更偏向于选择取值较多的特征。

ID3决策树每次划分节点时,使用信息增益最大的属性。

1.2. C4.5决策树

增益率(gain ratio)在信息增益的基础上,除以属性aaa的固有值IV(a)IV(a)IV(a),属性aaa取值数目越多,固有值IV(a)IV(a)IV(a)越大:
Gainratio(D,a)=Gain(D,a)IV(a)=Gain(D,a)−∑v=1V∣Dv∣∣D∣log⁡2∣Dv∣∣D∣Gain\ ratio(D,a)=\frac{Gain(D,a)}{IV(a)}=\frac{Gain(D,a)}{-\sum_{v=1}^V\frac{|D^v|}{|D|}\log_2\frac{|D^v|}{|D|}} Gain ratio(D,a)=IV(a)Gain(D,a)​=−∑v=1V​∣D∣∣Dv∣​log2​∣D∣∣Dv∣​Gain(D,a)​

增益率更偏向于选择取值较少的特征。

C4.5决策树每次划分节点时,使用增益率最大的属性。

综合以上,可以采用一种启发式算法:先选择信息增益高于平均水平的属性,再选择增益率最高的属性。

1.3. CART决策树

基尼值(gini)反映了从数据集中随机抽取两个样本,类别不一致的概率,因此,基尼值越小,数据集纯度越高:
Gini(D)=∑k=1∣K∣∑k′≠kpkpk′=1−∑k=1∣K∣pk2Gini(D)=\sum_{k=1}^{|K|}\sum_{k'\neq k}p_kp_{k'}=1-\sum_{k=1}^{|K|}p_k^2 Gini(D)=k=1∑∣K∣​k′̸​=k∑​pk​pk′​=1−k=1∑∣K∣​pk2​

基尼指数(gini index)定义为:
Giniindex(D,a)=∑v=1V∣Dv∣∣D∣Gini(Dv)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)

方差表示为:
σ2(D,a)=∑v=1Vσv2\sigma^2(D,a)=\sum_{v=1}^V\sigma_v^2 σ2(D,a)=v=1∑V​σv2​

CART(Classification and Regression Tree)分类回归树是二叉树

当作为分类树时,每次划分选择基尼指数最小的属性,叶子节点表示为样本中最多的类别。

当作为回归树时,每次划分选择方差最小属性,叶子节点表示为样本中的均值。

当CART作为回归树时,可以修改为模型树,此时叶子节点是线性拟合的参数,当数据由分段函数组成的时候,模型树可以更好的发挥它的作用。

2. 剪枝

剪枝是决策树解决过拟合的方法,主要有以下两种:

  • 预剪枝(prepruning):在决策树的生成过程中,对每个节点划分前先进性估计,如果当前节点划分不能带来决策树泛化性能提升,则不进行划分
  • 后剪枝(postpruning):在决策树生成之后,自底向上对非叶子节点考察,如果将该节点对应子树替换为叶子节点能带来泛化性能提升,则替换

预剪枝基于贪心的本质,带来了欠拟合的风险。

后剪枝欠拟合风险小,性能通常优于预剪枝,但是训练时间开销大。

3. 连续值处理

将属性的取值从小到大排序,记为{a1,...,an}\{a^1,...,a^n\}{a1,...,an},基于划分点ttt可以将DDD划分为Dt−D_t^-Dt−​和Dt+D_t^+Dt+​。

候选划分集合为:Ta={ai+ai+12∣1⩽i⩽n−1}T_a=\{\frac{a^i+a^{i+1}}{2}|1\leqslant i\leqslant n-1\}Ta​={2ai+ai+1​∣1⩽i⩽n−1}

信息增益修改为:Ent(D)−∑λ∈{−,+}∣Dtλ∣∣D∣Ent(Dtλ)Ent(D)-\sum_{\lambda \in \{-,+\}}\frac{|D_t^\lambda|}{|D|}Ent(D_t^\lambda)Ent(D)−∑λ∈{−,+}​∣D∣∣Dtλ​∣​Ent(Dtλ​)

4. 缺失值处理

给定训练集DDD和属性aaa,令D~\tilde{D}D~表示在属性aaa上没有缺失值的样本子集,令D~v\tilde{D}^vD~v表示属性aaa取值为ava^vav的样本子集,D~k\tilde{D}_kD~k​表示第kkk类的样本子集,为每个样本赋予权重wxw_xwx​,定义:
ρ=∑x∈D~wx∑x∈Dwxp~k=∑x∈D~kwx∑x∈Dwxr~v=∑x∈D~vwx∑x∈Dwx\rho=\frac{\sum_{x\in \tilde{D}}w_x}{\sum_{x\in D}w_x}\\ \tilde{p}_k=\frac{\sum_{x\in \tilde{D}_k}w_x}{\sum_{x\in D}w_x}\\ \tilde{r}_v=\frac{\sum_{x\in \tilde{D}^v}w_x}{\sum_{x\in D}w_x}\\ ρ=∑x∈D​wx​∑x∈D~​wx​​p~​k​=∑x∈D​wx​∑x∈D~k​​wx​​r~v​=∑x∈D​wx​∑x∈D~v​wx​​
ρ\rhoρ表示无缺失样本所占比例,p~k\tilde{p}_kp~​k​表示无缺失样本中第kkk类所占比例,r~v\tilde{r}_vr~v​表示无缺失样本在属性aaa上取值为ava^vav的样本所占比例。

信息增益修改为:ρ×(Ent(D~)−∑v=1Vr~vEnt(D~v))\rho\times(Ent(\tilde{D})-\sum_{v=1}^V\tilde{r}_vEnt(\tilde{D}^v))ρ×(Ent(D~)−∑v=1V​r~v​Ent(D~v))

若样本xxx在划分属性aaa上取值未知,则将xxx同时划入所有子节点,且样本权值在与属性值ava^vav对应的子节点中调整为r~v⋅wx\tilde{r}_v\cdot w_xr~v​⋅wx​,直观看,就是让同一个样本以不同概率划入到不同子节点中。


如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~

西瓜书+实战+吴恩达机器学习(七)监督学习之决策树 Decision Tree相关推荐

  1. 西瓜书+实战+吴恩达机器学习(二)机器学习基础(偏差、方差、调试模型技巧)

    文章目录 0. 前言 1. 偏差方差的解决方法 2. 高偏差高方差的学习曲线 3. 调试模型技巧 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 泛化误差可分解为 ...

  2. 西瓜书+实战+吴恩达机器学习(十五)无监督学习之关联分析(Apriori, FP-growth)

    文章目录 0. 前言 1. Apriori算法 1.1. 寻找频繁项集 1.2. 挖掘关联规则 2. FP-growth算法 2.1. 构建FP树 2.2. 寻找频繁项集 如果这篇文章对你有一点小小的 ...

  3. 西瓜书+实战+吴恩达机器学习(十四)无监督学习之聚类(k-means, LVQ, 高斯混合聚类, DBSCAN, AGNES)

    文章目录 0. 前言 1. 性能度量 1.1. 外部指标 1.2. 内部指标 2. 距离计算 3. k-means算法 4. 学习向量量化 5. 高斯混合聚类 6. 密度聚类 DBSCAN 7. 层次 ...

  4. 西瓜书+实战+吴恩达机器学习(二二)概率图模型之马尔可夫随机场

    文章目录 0. 前言 1. 马尔可夫随机场结构 2. 近似推断 2.1. Metropolis-Hastings 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 ...

  5. 西瓜书+实战+吴恩达机器学习(二一)概率图模型之贝叶斯网络

    文章目录 0. 前言 1. 贝叶斯网络结构 2. 近似推断 2.1. 吉布斯采样 3. 隐马尔可夫模型HMM 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 概率 ...

  6. 西瓜书+实战+吴恩达机器学习(十九)特征选择(过滤式选择、包裹式选择)

    文章目录 0. 前言 1. 过滤式选择 2. 包裹式选择 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 特征选择是一个很重要的数据预处理过程: 选择出重要的特征 ...

  7. 西瓜书+实战+吴恩达机器学习(十八)降维(主成分分析 PCA)

    文章目录 0. 前言 1. 主成分分析PCA 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 维数灾难:在高维情形下出现的数据样本稀疏.距离计算困难等问题. 缓解 ...

  8. 西瓜书+实战+吴恩达机器学习(十七)规则学习(序贯覆盖)

    文章目录 0. 前言 1. 序贯覆盖 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 规则学习是从训练数据中学习出一组能用于对未见示例进行判别的规则. ⊕←f1∧ ...

  9. 西瓜书+实战+吴恩达机器学习(十六)半监督学习(半监督SVM、半监督k-means、协同训练算法)

    文章目录 0. 前言 1. 半监督SVM 2. 半监督k-means 2.1. 约束k-means 2.2. 约束种子k-means 3. 协同训练算法 如果这篇文章对你有一点小小的帮助,请给个关注, ...

最新文章

  1. Apache Spark学习:利用Scala语言开发Spark应用程序
  2. (转)python中的*args和**kw到底是个啥。看下面的例子就会懂了
  3. php聊天功能逻辑原理,@xxx提及用户,这种功能的实现原理是怎样的?
  4. ubuntu下如何查看用户登录及系统授权相关信息【转】
  5. TOMCAT下应用部署新法(/META-INF/context.xml)
  6. 公布几个设备的sysObjectId取值
  7. MATLAB简单解决输出某个数(组)内自然数的阶乘和问题
  8. Ticket Lock的Relaxed Atomics优化
  9. STM32F103_study62_The punctual atoms(Clock system initialization function analysis)
  10. 电驱系列:直流无刷马达(不用芯片,独立元器件搭建)
  11. 详解VMware Workstation 12 安装虚拟机
  12. 招商银行一网通H5接口调试和测试报告撰写注意事项
  13. PCA (主成分分析)详解 (写给初学者)
  14. Rosalind Java| Computing GC Content
  15. Lua程序设计随笔(3)
  16. CIC详细设计说明文档
  17. tim-js-sdk 登录、接收信息、发送消息
  18. 51单片机之 LCD1602液晶显示屏
  19. 如何使用ANT在命令行进行编译和测试
  20. 20189200余超 2018-2019-2 移动平台应用开发实践第三周作业

热门文章

  1. 一周随笔--15.10.06
  2. Web开发中,使用表格来展示每个角色对应的权限
  3. PHP中Foreach在引用时的陷阱
  4. [恢]hdu 2040
  5. Symbian编程总结-基础篇-描述符(2)-TDesC8与TDesC16之间的互转
  6. JZOJ 1385. 直角三角形
  7. tomcat源码分析(一)- tomcat源码导入IDEA并正常启动
  8. 获取当前周和前一周周一和周天,下一周周一和周天
  9. POJ - 2485(最小生成树.prime)
  10. 2017 Multi-University Training Contest - Team 6—HDU6098HDU6106HDU6103