ID3 C4.5 CART
特征选择 信息增益 信息增益比 基尼不纯度
连续值处理 只能处理离散值 二分 二分
树形式 多叉 多叉 二叉树
剪枝
适用问题 分类 分类 分类/回归
  • 关于特征选择方式与熵?

    熵反映了信息量大小(混乱程度),熵越大信息量越大。我们的目标是熵减少方向

树模型原理

ID3

(1)计算数据集D 的经验熵 H(D)

\[H(D)=-\sum_{k=1}^{K} \frac{\left|C_{k}\right|}{|D|} \log _{2} \frac{\left|C_{k}\right|}{|D|}
\]

​ \(K\) 表示数据类别,\(C_k\) 表示第 \(k\) 类样本的个数

(2)计算特征 A 对数据集 D 的经验条件熵 \(H(D | A)\)

\[H(D | A)=\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{|D|} H\left(D_{i}\right)=-\sum_{i=1}^{n} \frac{\left|D_{i}\right|}{D |} \sum_{k=1}^{K} \frac{\left|D_{k}\right|}{\left|D_{i}\right|} \log _{2} \frac{\left|D_{k}\right|}{\left|D_{i}\right|}
\]

​ \(D_i\) 表示根据特征 \(A\) 划分后的数据子集

(3)计算信息增益

\[g(D, A)=H(D)-H(D | A)
\]

C4.5

信息增益比

\[\begin{array}{c}
H_A(D)=-\sum_{j=1}^{n} \frac{N\left(D_{j}\right)}{N(D)} \log \left(\frac{N\left(D_{j}\right)}{N(D)}\right) \\
g_r(D,A)=\frac{g(D,A)}{H_A(D)}
\end{array}
\]

其中 n表示特征 A取值的个数

CART

分类树

基尼不纯度(gini impurity)

\[gini(p) = \sum_{i=1}^Kp_k(1-p_k)=1-\sum_{i=1}^Kp_k^2
\]

\(p_k\) 表示两个第 k类样本的数量比。

基尼不纯度的\((1-p_k)\) 相当于信息熵中log项的泰勒展开

根据特征 A的取值a划分两个子集(二叉)

\[gini(D) = 1-\sum^K_{i=1}(\frac{|C_k|}{|D|})^2 \\
gini(D,A) = \frac{|D_1|}{|D|}gini(D_1)+\frac{|D_2|}{|D|}gini(D_2)\\
D_1 = \{(x,y)\in D | A(x)=a\},D_2 = D-D-1
\]

回归树
  • 回归树如何选择节点分裂方式?

    使用平方误差 \(\sum(y_i - f(x_i))^2\)

  • 树模型怎么得到平方误差呢?

    根据叶子节点值作为作为输出。将输入空间划分为多个单元,每个单元有一个固定输出值(对应输入空间输出值的平均)

  • 具体怎么划分?

    类似分类树,根据划分前后的误差选取。选取切分变量和切分点(特征及特征取值)

回归树构建流程:

  1. 选择切分变量j和切分点s,划分子区域:

    \[R_1(j,s) = \{x|x^{(j)} \leq s\},\quad R_2(j,s) = \{x|x^{(j)} > s\}
    \]

  2. 计算对应特征与特征值下的误差:

    \[\sum_{x_i\in R_1(j,s)}(y_i-c_1)^2 + \sum_{x_i\in R_2(j,s)}(y_i-c_2)^2
    \]

    其中 \(c_1 = ave(y_i|x_i\in R_1(j,s))\)

    1. 遍历,寻找最优切分变量j和最优切分点s(使平方误差最小)

    2. 根据选定的(j,s)划分区域:

    \[R_1,R_2,c_m = \frac{1}{N_m}\sum_{x_i\in R_m(j,s)}y_i ,m\in \{1,2\}
    \]

树创建

ID3、C4.5 多叉树

CART分类树(二叉)

CART回归树

不同树的基本创建过程只有两点不同:

  • 划分节点的评价方式
  • 子集的划分

references:

[1] 统计学习方法

[2] 机器学习实战

ID3\C4.5\CART的更多相关文章

  1. 决策树(ID3,C4.5,CART)原理以及实现

    决策树 决策树是一种基本的分类和回归方法.决策树顾名思义,模型可以表示为树型结构,可以认为是if-then的集合,也可以认为是定义在特征空间与类空间上的条件概率分布. [图片上传失败...(image ...

  2. 决策树模型 ID3/C4.5/CART算法比较

    决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...

  3. 机器学习算法总结(二)——决策树(ID3, C4.5, CART)

    决策树是既可以作为分类算法,又可以作为回归算法,而且在经常被用作为集成算法中的基学习器.决策树是一种很古老的算法,也是很好理解的一种算法,构建决策树的过程本质上是一个递归的过程,采用if-then的规 ...

  4. 决策树 ID3 C4.5 CART(未完)

    1.决策树 :监督学习 决策树是一种依托决策而建立起来的一种树. 在机器学习中,决策树是一种预测模型,代表的是一种对象属性与对象值之间的一种映射关系,每一个节点代表某个对象,树中的每一个分叉路径代表某 ...

  5. 机器学习相关知识整理系列之一:决策树算法原理及剪枝(ID3,C4.5,CART)

    决策树是一种基本的分类与回归方法.分类决策树是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成.结点由两种类型,内部结点表示一个特征或属性,叶结点表示一个类. 1. 基础知识 熵 在信息学和 ...

  6. 21.决策树(ID3/C4.5/CART)

    总览 算法   功能  树结构  特征选择  连续值处理 缺失值处理  剪枝  ID3  分类  多叉树  信息增益   不支持 不支持  不支持 C4.5  分类  多叉树  信息增益比   支持 ...

  7. ID3/C4.5/Gini Index

    ID3/C4.5/Gini Index */--> ID3/C4.5/Gini Index 1 ID3 Select the attribute with the highest informa ...

  8. ID3,C4.5和CART三种决策树的区别

    ID3决策树优先选择信息增益大的属性来对样本进行划分,但是这样的分裂节点方法有一个很大的缺点,当一个属性可取值数目较多时,可能在这个属性对应值下的样本只有一个或者很少个,此时它的信息增益将很高,ID3 ...

  9. 用于分类的决策树(Decision Tree)-ID3 C4.5

    决策树(Decision Tree)是一种基本的分类与回归方法(ID3.C4.5和基于 Gini 的 CART 可用于分类,CART还可用于回归).决策树在分类过程中,表示的是基于特征对实例进行划分, ...

随机推荐

  1. 7-Pandas之索引调整方法

    一.调整索引.修改列标签 1.调整索引的两种情况: 重新索引 设置新的索引 (1)重新索引 在Pandas对象中,其实索引也是一个对象,所以可对其进行修改. 例如:df.index=['a','b', ...

  2. Python File truncate() 方法

    概述 truncate() 方法用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符.高佣联盟 www.cgewang.com 如果没有指定 size,则从当前位置起截断:截 ...

  3. PHP mt_srand() 函数

    实例 播种随机数生成器: <?phpmt_srand(mktime());echo(mt_rand());?>高佣联盟 www.cgewang.com 定义和用法 mt_srand() 函 ...

  4. three.js 自制骨骼动画(一)

    上一篇郭先生解析了一下官方的骨骼动画案例,这篇郭先生就要做一个稍微复杂一点的骨骼动画了,就拿一个小人下手吧.在线案例请点击博客原文.话不多说先上大图 骨骼动画在GUI上面都有体现.制作骨骼动画的步骤在 ...

  5. linux的文件处理(匹配 正则表达式 egrep awk sed)和系统、核心数据备份

    文件处理 1.处理方式 匹配 正则表达式 egrep awk sed 2.文件中的处理字符 \n  新行符 换行 \t  制表符 tab键 缺省8个空格 \b  退格符 backspace键 退格键 ...

  6. 【FZYZOJ】细菌 题解(最短路)

    题目描述 为了研究一种新型细菌(称它为S型细菌)的性质,Q博士将S型细菌放在了一个犹如迷宫一般的通道面前,迷宫中N个站点,每个站点之间以一种单向通道的形式连接,当然,也有可能某两个站点之间是互不联通的 ...

  7. UIPickView的简单使用

    好记性不如烂笔头,勤做笔记. 摘要: 1.UIPickVIew 几个重要的属性 (1)datePickerMode UIDatePickerModeTime, // Displays hour, mi ...

  8. 极简 Node.js 入门 - Node.js 是什么、性能有优势?

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  9. Chrome自动格式化Json输出

    对JSON格式的内容进行浏览和编辑,以树形图样式展现JSON文档,并可实时编辑 安装 Chrome商店 https://chrome.google.com/webstore/detail/json-h ...

  10. 031_go语言中的通道遍历

    代码演示 package main import "fmt" func main() { queue := make(chan string, 2) queue <- &qu ...