news 2026/6/23 11:34:23

机器学习——决策树之回归树

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习——决策树之回归树

概念

解决回归问题的决策树模型你就是回归树

回归树是一种基于决策树的监督学习算法,用于解决回归问题。通过递归地将特征空间划分为多个子区域,并在每个子区域内拟合一个简单的预测值(如均值),实现对连续目标变量的预测。

特点

必须是二叉树

回归树的构建过程

  1. 特征选择与分割
    遍历所有特征和可能的切分点,选择使均方误差(MSE)或平均绝对误差(MAE)最小的特征和切分点。
    分割准则公式:
    [ \min_{j, s} \left[ \min_{c_1} \sum_{x_i \in R_1(j,s)} (y_i - c_1)^2 + \min_{c_2} \sum_{x_i \in R_2(j,s)} (y_i - c_2)^2 \right] ]
    其中 ( R_1, R_2 ) 为分割后的子区域,( c_1, c_2 ) 为子区域内的预测值(通常取均值)。

  2. 递归分割
    对每个子区域重复上述分割过程,直到满足停止条件(如最大深度、最小样本数或误差减少小于阈值)。

  3. 叶子节点预测
    最终叶子节点的预测值为该区域内样本目标变量的均值。

举例:

两个核心问题:1.节点切分的依据是什么?

2.如何能进行预测?

根据这两个问题,我们讲解回归树的计算示例:

1、

1、计算最优切分点

因为只有一个变量,所以切分变量必然是x,可以考虑如下9个切分点:

[1.5,2.5,3.5,4.5,5.5,6.5,7.5,8.5,9.5]。

【原因:实际上考虑两个变量间任意一个位置为切分点均可】

<1>切分点1.5的计算

当s=1.5时,将数据分为两个部分:

第一部分:(1,5.56)

第二部分:(2,5.7)、(3,5.91)、(4,6.4)…(10,9.05)

2、计算损失

C1=5.56

C2=1/9(5.7+5.91+6.4+6.8+7.05+8.9+8.7+9+9.05)=7.5

Loss = (5.56-5.56)^2 + (5.7-7.5)^2+(5.91-7.5)^2+…+(9.05-7.5)^2 =0+15.72 =15.72

3、同理计算其他分割点的损失

容易看出,当s=6.5时,loss=1.93最小,所以第一个划分点s=6.5。

4、对于小于6.5部分

<1>切分点1.5的计算

当s=1.5时,将数据分为两个部分:

第一部分:(1,5.56)

第二部分:(2,5.7)、(3,5.91)、(4,6.4)、(5,6.8)、(6,7.05)

Loss = 0 +(5.7-6.37)^2+(5.91-6.37)^2 +…+(7.05-6.37)^2

=0+1.3087=1.3087

C1=5.56

C2=1/5(5.7+5.91+6.4+6.8+7.05)=6.37

5、可得出

容易看出:<1>当s=3.5时,loss=0.2771最小,所以第一个划分点s=3.5。

<2>当s=8.5时,loss=0.021最小,所以第二个划分点s=8.5。

6、假设只分裂我们计算的这几次

那么分段函数为:

<1>当x<=3.5时,1/3(5.56+5.7+5.91)=5.72

<2>当3.5<x<=6.5时,1/3(6.4+6.8+7.05)=6.75

<3>当6.5<x<=8.5时,1/2(8.9+8.7)=8.8

<4>当8.5<x时,1/2(9+9.05)=9.025

最终得到分段函树!

7、对于预测来说

特征x必然位于其中某个区间内,所以,即可得到回归的结果,比如说:

如果x=11,那么对应的回归值为9.025.

<1>当x<=3.5时,1/3(5.56+5.7+5.91)=5.72

<2>当3.5<x<=6.5时,1/3(6.4+6.8+7.05)=6.75

<3>当6.5<x<=8.5时,1/2(8.9+8.7)=8.8

<4>当8.5<x时,1/2(9+9.05)=9.025

8、决策树的构造:

回归树的实现示例(Python)

使用sklearn构建回归树:

from sklearn.tree import DecisionTreeRegressor from sklearn.model_selection import train_test_split # 假设 X 为特征矩阵,y 为目标变量 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 初始化回归树模型 reg_tree = DecisionTreeRegressor(max_depth=3, min_samples_leaf=5) reg_tree.fit(X_train, y_train) # 预测与评估 predictions = reg_tree.predict(X_test)

回归树的参数解释

一些方法:

1.apply :返回预测每个样本的叶子的索引

2.decision_path:返回树中的决策路径

3.get_depth:获取树的深度

4.get_n_leaves:获取树的叶子节点数

5.get_params:获取此估计器的参数,即前面配置的全部参数信息

6.score:得到决策树的评判标准R2

回归树的优化方法

  • 剪枝:通过代价复杂度剪枝(CCP)减少过拟合。
  • 集成学习:结合随机森林或梯度提升树(如 XGBoost、LightGBM)提升性能。
  • 超参数调优:使用网格搜索或贝叶斯优化调整max_depthmin_samples_split等参数。

应用场景

  • 房价预测、销量预测等连续值预测任务。
  • 特征重要性分析,辅助业务决策。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 1:36:59

Linly-Talker如何处理专业术语发音准确性问题?

Linly-Talker如何处理专业术语发音准确性问题&#xff1f; 在医疗讲座直播中&#xff0c;数字人脱口而出“β受体阻滞剂”时读成了“贝塔受、体阻、滞剂”&#xff0c;语调割裂、重音错位&#xff1b;在金融分析视频里&#xff0c;“资产负债表”被念作“资不抵债表”&#xff…

作者头像 李华
网站建设 2026/6/23 13:28:01

Linly-Talker如何平衡生成速度与画质清晰度?

Linly-Talker如何平衡生成速度与画质清晰度&#xff1f; 在虚拟主播直播间里&#xff0c;用户刚提出问题&#xff0c;数字人几乎立刻转头微笑、张嘴回应&#xff0c;语音流畅自然&#xff0c;唇动与发音严丝合缝&#xff0c;连眼角的细微表情都仿佛带着情绪——这不是科幻电影&…

作者头像 李华
网站建设 2026/6/23 13:21:45

基于springboot+vue3的企业人事管理系统设计与实现

前言 &#x1f31e;博主介绍&#xff1a;✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发、文档编写、答疑辅导等。✌…

作者头像 李华
网站建设 2026/6/23 8:59:26

Linly-Talker支持实时摄像头推流吗?直播推流配置指南

Linly-Talker 支持实时摄像头推流吗&#xff1f;直播推流配置指南 在虚拟主播、智能客服和在线教育快速发展的今天&#xff0c;一个核心问题摆在开发者面前&#xff1a;我们能否让 AI 数字人真正“活”起来&#xff0c;像真人主播一样面对镜头实时回应观众提问&#xff1f;传统…

作者头像 李华
网站建设 2026/6/23 21:25:40

Java之网络编程,新书小白入门教学,收藏这篇就够了

什么是网络编程 网络编程就是计算机跟计算机之间通过网络进行数据传输 常见软件架构 C/S: Client/Server客户端/服务器 在用户本地需要下载并安装客户端程序&#xff0c;在远程有一个服务器端程序 适合定制专业化的办公类软件如&#xff1a;IDEA、王者荣耀 优缺点&#xff1a; …

作者头像 李华
网站建设 2026/6/23 15:06:50

Linly-Talker能否识别方言输入?ASR模块能力测试

Linly-Talker 能否识别方言输入&#xff1f;ASR 模块能力深度解析 在智能语音助手逐渐走入家庭、政务、教育等场景的今天&#xff0c;一个现实问题日益凸显&#xff1a;当用户操着一口浓重口音说出“今儿个咋这么热哦”&#xff0c;系统还能不能听懂&#xff1f;尤其是在中国这…

作者头像 李华