来源于知乎,本文就回归树的基本原理进行讲解,并手把手、肩并肩地带您实现这一算法。我们用人话而不是大段的数学公式来讲讲回归树是怎么一回事。如果预测某个连续变量的大小,最简单的模型之一就是用平均值。比如同事的平均年龄是28岁,那么新来了一批同事,在不知道这些同事的任何信息的情况下,直觉上用平均值28来预测是比较准确的,至少比0岁或者100岁要靠谱一些。我们不妨证明一下我们的直觉:1.定义损失函数L,其中y_hat是对y预测值,使用MSE来评估损失:2.对y_hat求导:3.令导数等于0,最小化MSE,则:4.所以,5.结论,如果要用一个常量来预测y,用y的均值是一个最佳的选择。仍然 回归树是一种决策树模型,主要用于连续变量的预测。它的核心思想是通过树状结构将数据集分割成多个区域,每个区域内部的响应变量(如年龄)具有相似的均值,从而实现预测。回归树的构建过程是逐步进行的,每次分割都是为了最大化减少预测误差,通常使用均方误差(Mean Squared Error, MSE)作为损失函数。 1.1 最简单的模型 回归树的起点是用整个数据集的均值作为预测值。当试图预测一个连续变量,例如同事的年龄,直接使用所有数据的平均年龄作为预测值是最简单的模型。通过证明,可以发现最小化MSE时,预测值应为所有真实值的平均数。 1.2 加入特征 如果有了额外的特征,如职级,回归树会基于这些特征进行分割。比如,根据职级将同事分为低职级和高职级两组,分别计算这两组的平均年龄来进行预测。 1.3 寻找最佳分割点 为了找到最佳的分割点,我们遍历所有可能的分割点,计算每种分割方式下两部分数据的MSE之和。选取使得MSE最小的那个分割点作为最佳分割点。 1.4 多变量情况 当有多个变量时,回归树会依次根据每个变量寻找最佳分割点,形成二叉树结构。在每个内部节点(非叶节点)根据某个特征分割数据,叶节点(终端节点)则存储该区域的平均响应值,用于预测。 1.5 回归树的结构 这种二叉树结构就是回归树的形态,每个分支代表一个特征的特定取值或范围,叶节点对应于一个预测值,通常是该节点包含样本的平均响应值。 2. Python实现 在Python中,回归树可以通过自定义代码实现,无需依赖外部库。关键步骤包括: 2.1 定义Node类,存储预测值、左右子节点、特征和分割点。 2.2 创建回归树类,包含根节点和最大深度等属性。 2.3 计算分割点和MSE,根据特征和分割点调整数据,计算MSE。 2.4 寻找最佳分割点,遍历特征列的唯一值,选取MSE最小的分割点。 2.5 选择最佳特征,遍历所有特征,找到最优分割点及其对应的MSE。 2.6 转换规则为文本,便于理解和解释。 2.7 获取所有规则,使用广度优先搜索遍历树以获取规则。 2.8 训练模型,控制树的深度、最少样本量等条件,构建回归树。 2.9 打印规则和预测,展示模型的决策规则并进行预测。 2.10 预测单个或多个样本,根据构建好的树结构进行预测。 3. 效果评估 在实际应用中,通常会用已有的数据集(如波士顿房价数据集)来评估模型的性能。通过计算R²分数(拟合优度)和运行时间来分析模型的效果。在示例中,生成了15条规则,R²分数为0.801,运行时间为1.74秒,显示了较好的预测能力。 总结来说,回归树是一种利用决策树结构对连续变量进行预测的模型。它通过不断分割数据,寻找最佳特征和分割点,最小化预测误差,最终形成易于理解的规则。Python实现回归树可以帮助我们更好地理解和运用这一算法。
- 粉丝: 11
- 资源: 925
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 技术资料分享多核处理器构架的高速JPEG解码算法很好的技术资料.zip
- 技术资料分享第24章 性能和资源占用很好的技术资料.zip
- 技术资料分享第23章 LCD驱动API函数很好的技术资料.zip
- 技术资料分享第22章 LCD驱动程序很好的技术资料.zip
- 技术资料分享第21章 高层次配置很好的技术资料.zip
- 技术资料分享第20章 底层配置很好的技术资料.zip
- 技术资料分享第19章 与时间相关的函数很好的技术资料.zip
- 技术资料分享第18章 输入设备很好的技术资料.zip
- 技术资料分享第17章 Shift-JIS支持很好的技术资料.zip
- 技术资料分享第16章 Unicode很好的技术资料.zip
评论0