重生归来,我要成功 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

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

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

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

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

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

相关推荐
行者967 分钟前
Flutter跨平台开发在OpenHarmony上的评分组件实现与优化
开发语言·flutter·harmonyos·鸿蒙
阿部多瑞 ABU11 分钟前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
acanab15 分钟前
VScode python插件
ide·vscode·python
阿蒙Amon17 分钟前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
SmartRadio34 分钟前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
且去填词1 小时前
Go 语言的“反叛”——为什么少即是多?
开发语言·后端·面试·go
知乎的哥廷根数学学派1 小时前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
WangYaolove13141 小时前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派2 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
yeziyfx2 小时前
kotlin中 ?:的用法
android·开发语言·kotlin