当前位置: 首页 > news >正文

决策树概念与原理

决策树简介

决策树是一种树形结构

树中每个内部节点表示一个特征上的判断,每个分支代表一个判断结果的输出,每个叶子节点代表一种分类结果

(仅举例无其他意义或隐喻)就像一个女孩去相亲,那么首先询问是否大于30,大于则不见,不大于再看外貌条件,不丑则在看收入条件等。这些选择就是这棵树的特征

决策树的建立过程

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

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

3. 决策树也易过拟合,采用剪枝的方法缓解过拟合

然后我们引入一个特殊的概念:

信息熵

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

熵越大,数据的不确定性度越高,信息就越多

熵越小,数据的不确定性越低

信息熵的计算方法

例如

信息增益

公式有点难看明白,所以来看个例子8:

了解完熵之后,就可以看后面的了

ID3决策树

接下来还要了解一些信息增益率

信息增益率 = 信息增益 /特征熵

求特征ab的信息增益率

CART树

基尼值GiniD):从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,GiniD值越小,数据集D的纯度越高

基尼指数Gini_indexD):选择使划分后基尼系数最小的属性作为最优化分属性。

例子

CRAT分类树

已知:是否拖欠贷款数据。

需求:计算各特征的基尼指数,选择最优分裂点

CART回归树

平方损失

根据平方损失构建CART回归树

但是实际使用中回归问题还是用线性回归来做,决策树容易过拟合

"""
结论:回归类的问题。即能使用线性回归,也能使用决策树回归优先使用线性回归,因为决策树回归可能比较容易导致过拟合
"""import  numpy as np
import  pandas as pd
from sklearn.tree import  DecisionTreeRegressor  #回归决策树
from sklearn.linear_model import  LinearRegression #线性回归
import matplotlib.pyplot as plt#1、获取数据
x = np.array(list(range(1, 11))).reshape(-1, 1)
y = np.array([5.56, 5.70, 5.91, 6.40, 6.80, 7.05, 8.90, 8.70, 9.00, 9.05])#2、创建线性回归 和 决策树回归
es1=LinearRegression()
es2=DecisionTreeRegressor(max_depth=1)
es3=DecisionTreeRegressor(max_depth=10)#3、模型训练
es1.fit(x,y)
es2.fit(x,y)
es3.fit(x,y)#4、准备测试数据 ,用于测试
# 起始, 结束, 步长.
x_test = np.arange(0.0, 10.0, 0.1).reshape(-1, 1)
print(x_test)#5、模型预测
y_predict1=es1.predict(x_test)
y_predict2=es2.predict(x_test)
y_predict3=es3.predict(x_test)#6、绘图
plt.figure(figsize=(10,5))#散点图
plt.scatter(x,y,color='gray',label='data')plt.plot(x_test,y_predict1,color='g',label='liner regression')
plt.plot(x_test,y_predict2,color='b',label='max_depth=1')
plt.plot(x_test,y_predict3,color='r',label='max_depth=10')plt.legend()
plt.xlabel("data")
plt.ylabel("target")plt.show()

决策树剪枝

决策树剪枝是一种防止决策树过拟合一种正则化方法;提高其泛化能力。

把子树的节点全部删掉,使用用叶子节点来替换

1.预剪枝:指在决策树生成过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能提升,则停止划分并将当前节点标记为叶节点;

优点:

预剪枝使决策树的很多分支没有展开,不单降低了过拟合风险,还显著减少了决策树的训练、测试时间开销

缺点:

有些分支的当前划分虽不能提升泛化性能,但后续划分却有可能导致性能的显著提高;

预剪枝决策树也带来了欠拟合的风险

2.后剪枝:是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。

优点:比预剪枝保留了更多的分支。一般情况下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝

缺点:后剪枝先生成,后剪枝。自底向上地对树中所有非叶子节点进行逐一考察,训练时间开销比未剪枝的决策树和预剪枝的决策树都要大得多。


文章转载自:

http://M06I1kbA.sLysg.cn
http://2qsKhOjt.sLysg.cn
http://z0bK73oI.sLysg.cn
http://e82Wz1F7.sLysg.cn
http://s6ikTag8.sLysg.cn
http://weOj7UU7.sLysg.cn
http://ZbsyA9ID.sLysg.cn
http://PitIf2ZX.sLysg.cn
http://FRQ8aIfx.sLysg.cn
http://6ufQZWjg.sLysg.cn
http://uaJOKjrG.sLysg.cn
http://If3wP3dt.sLysg.cn
http://oaTj6MJW.sLysg.cn
http://8pRmZtb0.sLysg.cn
http://StqVCwl5.sLysg.cn
http://8PHRyBn5.sLysg.cn
http://PQKziYnL.sLysg.cn
http://PEbXd2IQ.sLysg.cn
http://xRkYzV4j.sLysg.cn
http://RqQlRV7X.sLysg.cn
http://FoFsAwG4.sLysg.cn
http://z8SdyoVc.sLysg.cn
http://5OXGoMYf.sLysg.cn
http://YV8EuhLa.sLysg.cn
http://ULmaRZsm.sLysg.cn
http://evhRIdzY.sLysg.cn
http://FYEYySM8.sLysg.cn
http://ufSunA40.sLysg.cn
http://weWy1eFM.sLysg.cn
http://tcQSSPwE.sLysg.cn
http://www.dtcms.com/a/371235.html

相关文章:

  • More Effective C++ 条款31:让函数根据多个对象来决定怎么虚拟
  • Python列表:从入门到灵活运用的全攻略
  • 校园洒水车cad+三维图+设计说书
  • 机械硬盘的工作原理
  • 生命周期方法:didUpdateWidget
  • Pie Menu Editor V1.18.7.exe 怎么安装?详细安装教程(附安装包)​
  • ragflow MCP 调用核心提示词解析:逻辑闭环与优化方向
  • Knative Serving:ABP 应用的 scale-to-zero 与并发模型
  • Xsens帮助独立工作室创造引人注目的冒险游戏真实角色动画
  • 《动手学深度学习v2》学习笔记 | 2.4 微积分 2.5 自动微分
  • 【开题答辩全过程】以 哈尔滨裕丰草莓园管理系统为例,包含答辩的问题和答案
  • 国内外支持个人开发者的应用市场
  • 【LLIE专题】SIED:看穿0.0001lux的极致黑暗
  • ANSYS HFSS边界条件的认识
  • python系列之综合项目:智能个人任务管理系统
  • IOC为什么交由spring容器管理?
  • spring事务传播机制
  • LeetCode_数学
  • (nice!!!)(LeetCode 面试经典 150 题 ) 130. 被围绕的区域(深度优先搜索dfs || 广度优先搜索bfs)
  • 虚拟化技术
  • 【74页PPT】MES简介(附下载方式)
  • 基于Pygame的六边形战术推演系统深度剖析——从数据结构到3D渲染的完整实现(附完整代码)
  • 强化学习入门:从零开始实现DDQN
  • 开启Python之路,第一节学习大纲-从入门到进阶
  • 单词分析与助记之数据建表(以production为例)
  • 【温室气体数据集】亚洲地区长期空气污染物和温室气体排放数据 REAS
  • 高精度地图
  • 美陆军启用数字仿真与分析中心;首次测试AI空战指挥官“星智“系统;五角大楼计划削减关键技术清单
  • 《秦时明月》系列经典语录分享
  • 《用 Python 构建并发 API 爬虫:从基础到高性能实战》