torch 决策回归树
目录
- 回归决策树的逻辑
- 终止分类
- 分类思路
回归决策树的逻辑
回归决策树简称回归树, 是解决回归问题的模型. 回归树 依据数据特征对数据二分类, 直到分到一定程度, 得到叶结点. 对每个叶结点数据都计算均值, 作为叶结点的值. 给一个数据样本预测其值, 即先看这个数据会跑到哪个叶结点里, 然后 赋以叶结点值.
因为是二分类, 分类过程都一样, 所以可以使用递归算法.
递归算法要解决的问题有两个:
一是不断重复部分(分类思路),
二是终止重复的部分(不再分下去).
这里给个玩具, 方便理解. 阶乘.
def f(x):if x==1:return xreturn x*f(x-1)
终止分类
我们什么时候不再分类了?
一是 数据样本量不足, 假定只有 只有一个样本, 那么就没必要分下去了. 还有一种是一个叶结点只有一个样本会过拟合, 所以会设置较大的样本量阈值.
二是 深度.
这里我们想一下过程, 开始样本比较丰富, 但子类如果样本量不足, 就意味着这个子类不应当出现所以此时就不应当分类了.
分类思路
数据一般是矩阵, 每一行是一个样本, 每一列是一个特征. 我们需要选最好的特征, 最好的分类点进行分类. 很明显这需要遍历所有特征, 所有特征的数值, 也即整个矩阵的所有元素.
那,什么叫最好?
我们是预测是取平均值的, 如果想均值能够有代表性, 我们需要结点内数值不是那么的分散, 也即两类子数据的值的方差和最小.
#分裂结点
import torch
def binode(x,y,feature, split):x0 = x[x[:,feature] > split, :].squeeze(1)y0 = y[x[:,feature] > split]x1 = x[x[:,feature] <= split, :].squeeze(1)y1 = y[x[:,feature] <= split]
return x0, y0, x1, y1
这里挤掉空客张量.
#最佳分裂点def best_split(x, y, bs):#"返回最佳特征编号, 最佳分裂点" n, m =x.size()# n 为数据 x 的样本量, m 为数据的特征个数if n < bs:return None, torch.mean(y)#此时不需分裂, 不返回特征, 最佳分裂点定为 这个结点的数据标签的均值.best_var = torch.inffeature = 0split = 0for j in range(m):for i in x[:, j].unique():# 去掉重复值 x0, y0, x1, y1 = binode(x, y, j, i)if (x0.size()[0] < bs) or (x1.size()[0] < bs):continue# 如果子类样本量过少就不再分下去, 考虑最佳分裂点也要丢掉这种情况.sc = torch.var(y0)*y0.size()[0] + torch.var(y1)* y1.size()[0]if sc < best_var:best_var = scfeature = jsplit = ix0, y0, x1, y1 = binode(x, y, feature, split)if (x0.size()[0] < bs) or (x1.size()[0] < bs): return None, torch.mean(y)#最佳分裂点拿到后, 是否返回, 要看分裂是否必要.return feature, split
# 构建回归树.
def creatree(x,y, bs):feature, split = best_split(x, y, bs)if feature == None:return split# 注意如果执行 if 语句, 这一轮的 createe() 结束.retree = {}retree["node_feature"] = feature retree["node_split"] = splitx0, y0, x1, y1 = binode(x, y, feature)retree["left"] = creatree(x0, y0, bs)retree["right"] = creatree(x1, y1, bs) return retree #调用
x = torch.randn((100,20))
y = torch.randn((100,1))
creatree(x,y,3)
torch 决策回归树相关推荐
- 决策回归树回归算法30
1.决策回归树原理概述 与分类树一样 裂分指标,使用的是MSE.MAE MSE(y,y^)=1nsamples∑i=0nsamples−1(yi−y^i)2\text{MSE}(y, \hat{y}) ...
- R语言实现决策回归树的包rpart
文章目录 介绍 rpart()的使用方法 参数介绍 实例 对rapart对象的美观显示包rattle fancyRpartPlot()的用法 参数介绍 实例 介绍 rpart包中的rpart()函数可 ...
- sklearn 决策树(分类树、回归树)的 重要参数、属性、方法理解
文章目录 决策分类树 引入 重要参数 1,criterion 2,splitter 3,max_depth 4,min_samples_leaf 5,min_samples_split 6,max_f ...
- 集成方法:渐进梯度回归树GBRT(迭代决策树)
http://blog.csdn.net/pipisorry/article/details/60776803 单决策树C4.5由于功能太简单,并且非常容易出现过拟合的现象,于是引申出了许多变种决策树 ...
- 15- 决策回归树, 随机森林, 极限森林 (决策树优化) (算法)
1. 决策回归树: from sklearn.tree import DecisionTreeRegressor model = DecisionTreeRegressor(criterion='m ...
- 机器学习-有监督学习-分类算法:决策树算法【CART树:分类树(基于信息熵;分类依据:信息增益、信息增益率、基尼系数)、回归树(基于均方误差)】【损失函数:叶节点信息熵和】【对特征具有很好的分析能力】
一.决策树概述 注:生产实践中,不使用决策树,太简单,而是使用决策树的升级版:集成学习算法. 集成学习算法有: Random Forest(随机森林) Extremely Randomized For ...
- CART决策树(分类回归树)分析及应用建模
一.CART决策树模型概述(Classification And Regression Trees) 决策树是使用类似于一棵树的结构来表示类的划分,树的构建可以看成是变量(属性)选择的过程,内部节 ...
- 推荐系统笔记:决策树回归树
决策树和回归树经常用于数据分类. 决策树是为那些因变量(target,label)是分类的情况而设计的,而回归树是为那些因变量(target,label)是数值的情况而设计的. 在讨 ...
- Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解
Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...
最新文章
- 新人上路-搭建项目-springweb-controller测试
- docker omv 防火墙_我的软路由折腾之旅 篇三:在openmediavault上通过Docker实现OPENWRT旁路由功能...
- 团队作业第一次-团队团队展示
- BLE-NRF51822教程8-动态广播
- c语言i++和++i程序_使用C ++程序修改链接列表的内容
- 零基础入门│带你理解Kubernetes
- 实验5 —— 编写、调试具有多个段的程序
- HDU 1158【简单dp】
- 由先序+后序遍历确定序列是否唯一并输出一个中序序列
- 上海往事之参加安永公司项目面试
- 使用T4模板动态生成邮件内容并储存到任意位置
- centos 安装qrcode 二维码
- struts2 表单 get 乱码问题/apache+tomcat+jk 乱码问题
- 通信技术专业技术人员考试 动力与环境_2020年中级通信工程师动力与环境考试大纲...
- javaScript判断数组内容去重方法
- ApacheCN 数据科学译文集 20211109 更新
- 一文搞懂 UndeclaredThrowableException
- HTML|颜色的设置方法
- vue项目实现更换默认头像功能
- 开源项目推荐:Qt有关的GitHub/Gitee开源项目(★精品收藏★)
热门文章
- celery 停止任务_停止/清除Django-Celery中的定期任务
- Identifying drug–target interactions based on graph convolutional network and deep neural network 论文
- 线上问题定位—cpu飚高
- Win8开机系统引导如何删掉onekey项
- java weakhashmap_解析WeakHashMap与HashMap的区别详解
- 在现网中,大佬们为啥总是用这种Console线调试设备?
- 编程小游戏:模仿掷骰子,猜大小!
- 06-Java基础-面向对象概述
- 云端批量管理服务器平台-旗鱼云梯
- Handle机制总结