【决策树学习笔记】

算法描述

1.决策树的构造就是根据数据集最显著的特征划分子数据集以达到分类的目的。
2.问题假设:银行需审查贷款申请候选人的资料进而决定是否放贷。
3.数据输入:若干候选人的资料,包括4个特征[年龄,是否有工作,是否有房,信贷记录]和房贷标签[是/否]。
4.算法过程:
①对数据集标签的频率计算香农熵(经验熵)。
②在每一维特征内,计算特征标签的条件熵。
③香农熵减去条件熵即为这一维特征的信息增益。
④根据最大一维特征的信息增益划分子数据集。

知识储备

1.香农熵;信息的期望。熵值越大,不确定性越高,同时也意味着信息量越大。[2]据上文,中文单字的香农熵比英文单字母的要大,同等长度的中文字符能表示更多含义,弹幕也在儒家文化圈更盛行。香农熵公式如下:
在这里插入图片描述
公示中的pi代表符号i的频率。
2.条件熵:可理解为剔除某一维度特征后的熵。以上两点若有不明确的地方推荐阅读[2]和[3]。
3.信息增益=香农熵-条件熵;反映这一维特征的重要程度。

举个栗子

1.银行审查资料如下图,例子来源于[1]中的章节3.1.2
(转载仅为方便查阅,若侵权立删,水印是网站自动添加的笔者暂无法剔除)
在这里插入图片描述
在编写代码之前,我们先对数据集进行属性标注并转换如下
年龄:0代表青年,1代表中年,2代表老年;
有工作:0代表否,1代表是;
有自己的房子:0代表否,1代表是;
信贷情况:0代表一般,1代表好,2代表非常好;
类别(是否给贷款):no代表否,yes代表是。[1]
在这里插入图片描述
2.统计数据集类别频率并计算香农熵,no标签的ID包括1、2、5、6、7、15,数量6(频率0.4),而yes的标签数量9(频率0.6)。(以下计算都取4位小数)
在这里插入图片描述
3.分别对年龄、有工作、有房子和信贷情况四个特征求条件熵。样本频率是在同一维特征中各种情况的占比,而类别频率是在同一情况里类别的占比。
(1)年龄有三种情况青年(0)、中年(1)及老年(2);青年ID是1-5,中年ID是5-10,老年ID是11-15,总共有15条。而在青年(0)内,no(3票):yes(2票)=0.6:0.4。
在这里插入图片描述
年龄条件熵:
在这里插入图片描述
(2)是否有工作有两种情况否(0)和是(1)。
在这里插入图片描述
工作条件熵:
工作条件熵:
注:log函数的数字应大于0,此处为加强理解才写下来。
(3)是否有房有两种情况否(0)和是(1)。
在这里插入图片描述
房子条件熵:
在这里插入图片描述
(4)信贷情况有三种情况一般(0)、好(1)及非常好(2)。
在这里插入图片描述
信贷条件熵:
在这里插入图片描述
4.计算信息增益。
年龄信息增益:
在这里插入图片描述
工作信息增益:
在这里插入图片描述
房子信息增益:
在这里插入图片描述
信贷信息增益:
在这里插入图片描述
5.房子信息增益最大,所以第一次决策以是否有房这一特征进行划分,然后将这一维特征剔除的子集并对子集重复上述过程。

实现代码

1.debug推荐[1]中的章节3.1.4。
2.sklearn实现版本。[4]
3.可视化决策树的构造结果。[5]

算法分析

1.推理过程可读性强;每一个节点的判断逻辑十分明确并寻找当前数据集的最显著特征。
2.更多请参考[4]中的章节5。

资料引用

[1]CSDN:https://blog.csdn.net/jiaoyangwm/article/details/79525237
[2]知乎:https://zhuanlan.zhihu.com/p/89958871
[3]知乎:https://zhuanlan.zhihu.com/p/35379531
[4]CSDN:https://blog.csdn.net/qq_41551450/article/details/106106147
[5]GitHub:https://github.com/wzy6642/Machine-Learning-in-Action-Python3/tree/master/DecisionTree_Project1
此算法笔记会在CSDN、知乎、b站及公众号同步更新,账号名为一枚嘉应子。转载注明出处,侵权必究。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值