重生归来,我要成功 Python 高手--day33 决策树

决策树:是一种树形结构,树中的每一个内部节点代表了一个特征上的判断,每一个分支代表一个判断结果的输出,每一个叶子节点代表了分类结果

1.每一个叶子节点代表了标签

2,中间的结果是特征

建立过程

1.特征的选择:选择有较强分类能力的特征

2.决策树的形成:根据选择的特征形成决策树

3.决策树容易过拟合:采用剪枝的方式缓解过拟合

ID3树:通过信息增益来决定那个特征当节点,信息增益那个大,那个当节点

信息增益=熵-条件熵

:信息论中代表随机变量不确定性的度量

越大:信息不确定性越高,信息越多

越小:信息不确定性越底,信息越少

可以看作不同的信息越多,信息熵越大

信息熵的计算公式

-(当前的概率*log以2 为底当前的概率)---》每个类别求和

例如:α=ABCDEFGH β=AAAABBCD

α的信息熵为 :-1/8*(log2 1/8)=3

β的信息熵为 :-1/2*log2 1/2 + -1/4*log2 1/4 + -1/8*log2 1/8 + -1/8*log2 1/8=1.75

信息增益:

例如:

有一个样本分布为AAABBB 其中α为 AAAB β为 BB

-- 通过标签来计算的

类别的和为:A的熵 -1/2log2(1/2) B的熵 -1/2log2(1/2) 和为1

条件熵:

先计算阿尔法和β对应的条件熵

阿尔法的条件熵为:-3/4*log2(3/4)+(-1/4)*log2(1/4)=0.81

贝塔的条件熵为:-1log2(1)=0

总的条件熵=阿尔法的占比*阿尔法的条件熵+贝塔的占比*贝塔的条件熵=0.54

信息增益为=1-0.54=0.46

某一个特征的条件熵=特征熵

ID3决策树的构建过程

1,计算每个特征的信息增益

2。用信息增益最大的特征将数据集拆分

3.使用这个特征作为一个节点

4.对于剩余的重复2,3布置

C4.5树:信息增益率=信息增益/特征熵 ---->=信息增益*1/特征熵 1/特征熵 类似于惩罚系数

特征多,特征熵大,特征熵大,对应的1/特征熵就越小

特征少,特征熵小,特征熵小,对应的1/特征熵就越大

特征熵=-特征列A分类的占比*log2(A分类的占比)+ -特征列B分类的占比*log2(B分类的占比)....

信息增益率越大,就选这个特征当分裂特征

Cart 决策树:既可以用于回归也可以用于分类,

回归:使用平方误差最小化策略

分类:通过基尼指数最小化策略

基尼值:从数据集D中随机抽取两个样本,其类别标记不一致的概率,所以基尼值越低数据集越纯

基尼指数:选择是划分后的基尼系数最小的属性作为最优属性 分类占比*基尼值

基尼值:每个类别的概率平方和为基尼值

例如:

有十个球都为红球,抽取两个不一样的概率为0

有十个球五个红球,五个蓝球,抽取两个不一样的概率

1-(红球数/总球数)平方-(蓝球数/总球数)平方=0.5

10个球,五个红,三个蓝,两个绿

基尼值为=1-(5/10)平方-(3/10)平方-(2/10)平方=0.62

总结:信息增益和信息增益率越大,说明优先选择这个特征。基尼指数越小,说明优选选择这个特征

决策树的剪枝:树容易过拟合,这是一种正则化方式,提高泛化能力

剪枝:把字数的节点全部删掉,使用叶子节点代替

预剪枝:在决策树生成的过程中,对每个节点在划分前进行评估,如果当前节点的划分不能带来决策树泛化性能提升,则停止划分并当前节点标记为叶子节点

后剪枝:先生成一个完整的决策树,然后自下而上的对非叶子节点进行评估,如果这个节点对应的子树替换成叶子节点能带来决策树的评估就将这个字数替换成叶子节点

相关推荐
Q26433650232 小时前
【有源码】基于 Hadoop 生态的化妆品销售数据存储分析与可视化 面向化妆品行业的用户画像构建与销售机会识别研究
大数据·hadoop·python·机器学习·spark·毕业设计·课程设计
2601_962078198 小时前
Python中calendar.weekday用法
python·编程技巧·calendar·日期处理·weekday
2601_962218618 小时前
万象生鲜系统业财一体化底层打通技术自动生成经营账单
大数据·数据库·人工智能·python·算法
2601_966949658 小时前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
niucloud-admin8 小时前
JAVA V6 多商户商城 开发文档——插件目录结构
java·开发语言
2601_962885728 小时前
如何用 Python 扫描 A 股跳空缺口并统计缺口回补概率?
java·前端·python
滕州市燕猫虎计算机科技工作室个体工商户8 小时前
Java锁
java·开发语言
李高钢9 小时前
Python FastAPI 框架入门:从零搭建你的第一个高性能 API 服务
数据库·python·fastapi
多加点辣也没关系9 小时前
JavaScript|第31章:表单与控件
开发语言·javascript·ecmascript
菜鸟~noob2339 小时前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理