(一)决策树模型与学习

(二)特征选择

熵(entropy): H ( x ) = H ( p ) = − ∑ n j = 1 p i l o g p i H(x)=H(p)=- \underset {j=1}{\overset n {\sum}}p_ilogp_i H(x)=H(p)=−j=1∑n​​pi​logpi​对数底为2单位是比特(bit),自然对数单位为纳特(nat)。

条件熵(conditional entropy): H ( Y ∣ X ) = ∑ n j = 1 p i H ( Y ∣ X = x i ) H(Y|X)=\underset {j=1}{\overset n {\sum}}p_iH(Y|X=x_i) H(Y∣X)=j=1∑n​​pi​H(Y∣X=xi​)其中 p i = P ( X = x i ) , i = 1 , 2 , . . . , n p_i=P(X=x_i),i=1,2,...,n pi​=P(X=xi​),i=1,2,...,n。

信息增益(information gain):得知特征 X X X的信息而使得类 Y Y Y的信息的不确定性减少的程度。 g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)经验熵 H ( D ) H(D) H(D)表示对数据集 D D D分类的不准确性,经验条件熵 H ( D ∣ A ) H(D|A) H(D∣A)表示在特征 A A A给定的条件下对数据集 D D D分类的不准确性。因此,信息增益大意味着更好的分类能力。

 一般的,熵 H ( Y ) H(Y) H(Y)与条件熵 H ( Y ∣ X ) H(Y|X) H(Y∣X)的差称为互信息(mutual information)。在决策树中,信息增益与互信息二者等价。

算法(信息增益)
 输入:训练数据集 D D D和特征 A A A;
 输出:特征 A A A对训练数据集 D D D的信息增益 g ( D , A ) g(D,A) g(D,A)
 (1)计算数据集 D D D的经验熵: H ( D ) = − ∑ K k = 1 ∣ C k ∣ ∣ D ∣ l o g 2 ∣ C k ∣ ∣ D ∣ H(D)=-\underset {k=1}{\overset K {\sum}}\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|} H(D)=−k=1∑K​​∣D∣∣Ck​∣​log2​∣D∣∣Ck​∣​
 (2)特征 A A A对训练数据集 D D D的经验条件熵: H ( D ∣ A ) = ∑ n i = 1 ∣ D i ∣ ∣ D ∣ H ( D i ) = − ∑ n n = 1 ∣ D i ∣ ∣ D ∣ ∑ K k = 1 ∣ D i k ∣ ∣ D i ∣ l o g 2 ∣ D i k ∣ ∣ D i ∣ H(D|A)=\underset {i=1}{\overset n {\sum}}\frac{|D_i|}{|D|}H(D_i)=-\underset {n=1}{\overset n {\sum}}\frac{|D_i|}{|D|}\underset {k=1}{\overset K {\sum}}\frac{|D_{ik}|}{|D_i|}log_2\frac{|D_{ik}|}{|D_i|} H(D∣A)=i=1∑n​​∣D∣∣Di​∣​H(Di​)=−n=1∑n​​∣D∣∣Di​∣​k=1∑K​​∣Di​∣∣Dik​∣​log2​∣Di​∣∣Dik​∣​
 (3)计算信息增益: g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)
:贷款申请样本数据集如下,根据信息增益准则选择最优特征。

ID 年龄 有工作 有自己的房子 信贷情况 类别
1 青年 一般
2 青年
3 青年
4 青年 一般
5 青年 一般
6 中年 一般
7 中年
8 中年
9 中年 非常好
10 中年 非常好
11 老年 非常好
12 老年
13 老年
14 老年 非常好
15 老年 一般


 Step1:计算经验熵,类别分为两类,有 H ( D ) = − 9 15 l o g 2 9 15 − 6 15 l o g 2 6 15 = 0.971 H(D)=-\frac{9}{15}log_2\frac{9}{15}-\frac{6}{15}log_2\frac{6}{15}=0.971 H(D)=−159​log2​159​−156​log2​156​=0.971
 Step2:计算每个特征对数据集的增益
  (1)年龄 青年: H ( D 1 ) = − 2 5 l o g 2 2 5 − 3 5 l o g 2 3 5 青年:H(D_1)=-\frac{2}{5}log_2\frac{2}{5}-\frac{3}{5}log_2\frac{3}{5} 青年:H(D1​)=−52​log2​52​−53​log2​53​ 中年: H ( D 2 ) = − 3 5 l o g 2 3 5 − 2 5 l o g 2 2 5 中年:H(D_2)=-\frac{3}{5}log_2\frac{3}{5}-\frac{2}{5}log_2\frac{2}{5} 中年:H(D2​)=−53​log2​53​−52​log2​52​ 老年: H ( D 3 ) = − 4 5 l o g 2 4 5 − 1 5 l o g 2 1 5 老年:H(D_3)=-\frac{4}{5}log_2\frac{4}{5}-\frac{1}{5}log_2\frac{1}{5} 老年:H(D3​)=−54​log2​54​−51​log2​51​ g ( D , A 1 ) = H ( D ) − 5 15 H ( D 1 ) − 5 15 H ( D 2 ) − 5 15 H ( D 3 ) = 0.971 − 0.888 = 0.083 g(D,A_1)=H(D)-\frac{5}{15}H(D_1)-\frac{5}{15}H(D_2)-\frac{5}{15}H(D_3)=0 .971-0.888=0.083 g(D,A1​)=H(D)−155​H(D1​)−155​H(D2​)−155​H(D3​)=0.971−0.888=0.083
  (2)工作 有工作: H ( D 1 ) = − 5 5 l o g 2 5 5 − 0 5 l o g 2 0 5 有工作:H(D_1)=-\frac{5}{5}log_2\frac{5}{5}-\frac{0}{5}log_2\frac{0}{5} 有工作:H(D1​)=−55​log2​55​−50​log2​50​ 没工作: H ( D 2 ) = − 4 10 l o g 2 4 10 − 6 10 l o g 2 6 10 没工作:H(D_2)=-\frac{4}{10}log_2\frac{4}{10}-\frac{6}{10}log_2\frac{6}{10} 没工作:H(D2​)=−104​log2​104​−106​log2​106​ g ( D , A 2 ) = H ( D ) − 5 15 H ( D 1 ) − 10 15 H ( D 2 ) = 0.324 g(D,A_2)=H(D)-\frac{5}{15}H(D_1)-\frac{10}{15}H(D_2)=0.324 g(D,A2​)=H(D)−155​H(D1​)−1510​H(D2​)=0.324
  (3)房子 g ( D , A 3 ) = 0.420 g(D,A_3)=0.420 g(D,A3​)=0.420
  (4)信贷 g ( D , A 4 ) = 0.363 g(D,A_4)=0.363 g(D,A4​)=0.363
 对比四个特征,发现房子的信息增益最大。
信息增益比(information gain ratio):信息增益存在偏向于选择取值较多的特征的问题,故有信息增益比 g R ( D , A ) = g ( D , A ) H A ( D ) g_R(D,A)=\frac{g(D,A)}{H_A(D)} gR​(D,A)=HA​(D)g(D,A)​

(三)决策树的生成

1. ID3算法

 在各个节点上应用信息增益准则选择特征,迭代至结束。

2. C4.5算法

 在各个节点上应用信息增益比选择特征,迭代至结束。

(四)决策树的剪枝

 为提升泛化能力裁剪掉一些子树和节点。示意图如下:

 设树 T T T的叶结点个数为 ∣ T ∣ |T| ∣T∣, t t t是树 T T T的叶结点,该叶结点有 N t N_t Nt​个样本点,其中 k k k类的样本点有 N t k N_{tk} Ntk​个, k = 1 , 2 , . . . , K , H t ( T ) k=1,2,...,K,H_t(T) k=1,2,...,K,Ht​(T)为叶结点 t t t上的经验熵, α ≥ 0 \alpha\geq0 α≥0为参数,则决策树学习的损失函数可定义为 C α ( T ) = ∑ t = 1 ∣ T ∣ N t H t ( T ) + α ∣ T ∣ C_{\alpha}(T)=\overset {|T|} {\underset{t=1} \sum}N_tH_t(T)+\alpha |T| Cα​(T)=t=1∑​∣T∣​Nt​Ht​(T)+α∣T∣ = C ( T ) + α ∣ T ∣ =C(T)+\alpha|T| =C(T)+α∣T∣其中经验熵为 H t ( T ) = − ∑ k N t k N t l o g N t k N t H_t(T)=-\underset {k} {\sum} \frac{N_{tk}}{N_t}log\frac{N_{tk}}{N_t} Ht​(T)=−k∑​Nt​Ntk​​logNt​Ntk​​那么, C ( T ) , ∣ T ∣ C(T),|T| C(T),∣T∣就分别表示训练误差与模型复杂度。

(五)CART算法

 CART算法=决策树生成+决策树剪枝

1. CART生成

1.1. 回归树的生成

算法(最小二乘回归树生成算法)
 输入:训练集数据 D D D
 输出:回归树 f ( X ) f(X) f(X)
 在输入空间中递归地将每个区域二分:
 (1)选择最优切分变量 j j j与切分点 s s s,求解 m i n j , s [ m i n c 1 ∑ x i ∈ R 1 ( j , s ) ( y i − c 1 ) 2 + m i n c 2 ∑ x i ∈ R 2 ( j , s ) ( y i − c 2 ) 2 ] \underset{j,s} {min}[\underset{c_1}{min}\underset{x_i\in R_1(j,s)}{\sum}(y_i-c_1)^2+\underset{c_2}{min}\underset{x_i\in R_2(j,s)}{\sum}(y_i-c_2)^2] j,smin​[c1​min​xi​∈R1​(j,s)∑​(yi​−c1​)2+c2​min​xi​∈R2​(j,s)∑​(yi​−c2​)2]
 (2)用选定的对 ( j , s ) (j,s) (j,s)划分区域并决定相应的输出值 R 1 ( j , s ) = { x ∣ x ( j ) ≤ s } , R 2 ( j , s ) = { x ∣ x ( j ) > s } R_1(j,s)=\{x|x^{(j)}\leq s\},R_2(j,s)=\{x|x^{(j)}> s\} R1​(j,s)={x∣x(j)≤s},R2​(j,s)={x∣x(j)>s} c ^ m = 1 N m ∑ x i ∈ R m ( j , s ) y i , x ∈ R m , m = 1 , 2 \hat c_m=\frac 1 {N_m}\underset{x_i\in R_m(j,s)}{\sum}y_i,x\in R_m,m=1,2 c^m​=Nm​1​xi​∈Rm​(j,s)∑​yi​,x∈Rm​,m=1,2
 (3)反复调用(1)(2)至满足条件
 (4)将空间划分为 M M M个区域 R 1 , R 2 , . . . , R M R_1,R_2,...,R_M R1​,R2​,...,RM​,生成决策树 f ( x ) = ∑ m = 1 M c ^ m I ( x ∈ R m ) f(x)=\overset {M}{\underset{m=1}{\sum}}\hat c_mI(x\in R_m) f(x)=m=1∑​M​c^m​I(x∈Rm​)

1.2. 分类树的生成

 分类树采用基尼指数选择最优特征,同时决定该特征的最优二值切分点。
定义(基尼指数)
 分类问题中,假设有 K K K类,样本属于第 k k k类的概率为 p k p_k pk​,则概率分布的基尼指数定义为 G i n i ( p ) = ∑ k = 1 K p k ( 1 − p k ) = 1 − ∑ k = 1 K p k 2 Gini(p)=\overset {K}{\underset{k=1}{\sum}}p_k(1-p_k)=1-\overset {K}{\underset{k=1}{\sum}}p_k^2 Gini(p)=k=1∑​K​pk​(1−pk​)=1−k=1∑​K​pk2​ 对于二分类问题,有 G i n i ( p ) = 2 p ( 1 − p ) Gini(p)=2p(1-p) Gini(p)=2p(1−p) 对于给定样品集 D D D其基尼指数为 G i n i ( D ) = 1 − ∑ k = 1 K ( ∣ C k ∣ ∣ D ∣ ) 2 Gini(D)=1-\overset {K}{\underset{k=1}{\sum}}(\frac{|C_k|}{|D|})^2 Gini(D)=1−k=1∑​K​(∣D∣∣Ck​∣​)2这里 C k C_k Ck​是 D D D中属于第 k k k类的样本子集, K K K是类的个数。
 若 D D D根据特征 A A A取某一可能值 a a a被分割成 D 1 , D 2 D_1,D_2 D1​,D2​两部分,则在特征 A A A的条件下,集合 D D D的基尼指数定义为 G i n i ( D , A ) = D 1 D G i n i ( D 1 ) + D 2 D G i n i ( D 2 ) Gini(D,A)=\frac{D_1}{D}Gini(D_1)+\frac{D_2}{D}Gini(D_2) Gini(D,A)=DD1​​Gini(D1​)+DD2​​Gini(D2​) 基尼指数 G i n i ( D ) Gini(D) Gini(D)表示集合 D D D的不确定性; G i n i ( D , A ) Gini(D,A) Gini(D,A)表示经 A = a A=a A=a分割后集合 D D D的不确定性。
:如上样本表,应用CART算法生成决策树。
:(1)年龄 G i n i ( D ∣ A 1 = 青年 ) = 5 15 ( 2 × 2 5 × 3 5 ) + 10 15 ( 2 × 7 10 × 3 10 ) = 0.44 Gini(D|A_1=青年)=\frac{5}{15}(2\times \frac{2}{5}\times \frac{3}{5})+\frac{10}{15}(2\times \frac{7}{10}\times \frac{3}{10})=0.44 Gini(D∣A1​=青年)=155​(2×52​×53​)+1510​(2×107​×103​)=0.44 G i n i ( D ∣ A 1 = 中年 ) = 0.48 Gini(D|A_1=中年)=0.48 Gini(D∣A1​=中年)=0.48 G i n i ( D ∣ A 1 = 老年 ) = 0.44 Gini(D|A_1=老年)=0.44 Gini(D∣A1​=老年)=0.44
   (2)工作 G i n i ( D ∣ A 2 = 1 ) = 0.32 Gini(D|A_2=1)=0.32 Gini(D∣A2​=1)=0.32
   (3)房子 G i n i ( D ∣ A 3 = 1 ) = 0.27 Gini(D|A_3=1)=0.27 Gini(D∣A3​=1)=0.27
   (4)信贷 G i n i ( D ∣ A 4 = 1 ) = 0.36 Gini(D|A_4=1)=0.36 Gini(D∣A4​=1)=0.36 G i n i ( D ∣ A 4 = 2 ) = 0.47 Gini(D|A_4=2)=0.47 Gini(D∣A4​=2)=0.47 G i n i ( D ∣ A 4 = 3 ) = 0.32 Gini(D|A_4=3)=0.32 Gini(D∣A4​=3)=0.32可知, A 3 A_3 A3​为最优特征,依此类推。

2. CART剪枝

 1. 剪枝,形成子树序列
 2. 在子树序列中通过交叉验证选取最优子树

第五章 决策树——学习笔记相关推荐

  1. 【西瓜书】第4章决策树---学习笔记

    1.基本流程 createBranch()函数的伪代码: 检测数据集中的每个子项是否属于同一分类: If so return 类标签: Else 寻找划分数据集的最好特征 划分数据集 创建分支节点 f ...

  2. 计算机网络(BYSEE)第五章 运输层 学习笔记(0606)

    第 5 章 运输层 5.1 运输层协议概述 5.1.1 进程之间的通信 向应用层提供通信服务 运输层属于面向通信部分的最高层,同时也是用户功能中的最低层 只有网络边缘部分的主机的协议栈才有运输层,网络 ...

  3. 计算机网络第五章-运输层学习笔记

    5.1 运输层协议概述 5.1.1 进程之间的通信 为何需要运输层? 运输层协议和网络层协议的主要区别 5.1.2 运输层中的两个协议 UDP TCP 5.1.3 端口 使用端口对应用进程进行唯一标识 ...

  4. 机器学习理论《统计学习方法》学习笔记:第五章 决策树

    机器学习理论<统计学习方法>学习笔记:第五章 决策树 决策树 5.1 决策树模型与学习 5.1.1 决策树模型 5.1.2 决策树与if-then规则 5.1.3 决策树与条件概率分布 5 ...

  5. 第五章——决策树笔记(《统计学习方法》-李航)

    第五章--决策树笔记(<统计学习方法>-李航) 本文主要记录自己学习李航的小蓝书的过程,之前的4张有时间再补上.本文只做知识点整理,不做详细的见解,因为我认为,依照本人的知识水平,不可能比 ...

  6. cart算法_决策树学习笔记(三):CART算法,决策树总结

    点击上方"Python数据科学",选择"星标公众号" 关键时刻,第一时间送达! 作者:xiaoyu 介绍:一个半路转行的数据挖掘工程师 推荐导读:本篇为树模型系 ...

  7. 小五思科技术学习笔记之SSH

    下面介绍一下相关概念: SSH的概念: SSH的英文全称为Secure Shell,SSH使用TCP的22号端口,其目的是要在非安全的网络上提供安全的远程登陆和其他安全的网络服务, 为什么要使用SSH ...

  8. 控制系统仿真与CAD-薛定宇-第四章matlab学习笔记

    控制系统仿真与CAD-薛定宇-第四章matlab学习笔记 04-02传递函数模型 tfdata() 传递函数属性法 04-07典型系统连接计算 pretty 用法 04-08方框图简化 04-09代数 ...

  9. 电气EPlan软件第一章到第五章的学习

    电气–EPlan软件第一章到第五章的学习 1.Eplan软件的简单介绍? ①介绍:CAD不能满足工程需要,所以用到Eplan,Eplan结合了windows和CAD的操作风格,使用户有了更好的体验.E ...

最新文章

  1. 笑出腹肌的注释,都是被代码耽误的诗人!
  2. 使用 GetStartupInfo 检查自己是否被调试
  3. UIImageJPEGRepresentation和UIImagePNGRepresentation
  4. Win11代言人官宣
  5. Memcached总结
  6. matchers依赖_Hamcrest Matchers教程
  7. 在Spring中记录JAX-WS SOAP消息
  8. 第一二三范式的简单理解
  9. 全网首发:解决办法,/bin/ant: 1: cd: can‘t cd to /bin/../share/ant/bin/..
  10. 5000字彻底道尽「区块链分叉」真相!
  11. 为何说张三丰是个优秀的程序员?
  12. 不用工具直接从微软官网下载Win10正式版ISO镜像
  13. 严正声明:不要抄袭本人的创作内容
  14. alv edit and save all
  15. 用docx4j生成word之后转成pdf
  16. android8临时root,OnePlus3 Android8.0的Root教程
  17. 如何找到 java 程序 CPU 使用率100%的原因
  18. 计算机硬件设备维护培训方案,计算机硬件维护技术及故障解决
  19. Android中NFC的使用
  20. [转载]姜奇平谈“世界三”

热门文章

  1. 实现微信公众号H5消息推送的超级详细步骤
  2. 四和能聚分析抖音做好这两点,运营更轻松
  3. 京东拼购特色化运营手Q渠道年轻化用户,“三高”优势凸显
  4. linux安装iostat,iostat 离线安装
  5. 虚拟机浏览器不能上网,通讯软件可以正常使用解决办法
  6. Elmo运动控制器 —— Maestro Software结构和接口
  7. 建议新手用3Dmax,那到底学好3Dmax要多久呢?
  8. Objective-C 中的 Runtime 讲解
  9. 这款即将开源的编辑器可能是最适合程序员的文档工具!
  10. 我与酷派手机N900+的艰难之旅