目录

  • 回归决策树的逻辑
  • 终止分类
  • 分类思路

回归决策树的逻辑

回归决策树简称回归树, 是解决回归问题的模型. 回归树 依据数据特征对数据二分类, 直到分到一定程度, 得到叶结点. 对每个叶结点数据都计算均值, 作为叶结点的值. 给一个数据样本预测其值, 即先看这个数据会跑到哪个叶结点里, 然后 赋以叶结点值.

因为是二分类, 分类过程都一样, 所以可以使用递归算法.
递归算法要解决的问题有两个:

一是不断重复部分(分类思路),
二是终止重复的部分(不再分下去).
这里给个玩具, 方便理解. 阶乘.

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 决策回归树相关推荐

  1. 决策回归树回归算法30

    1.决策回归树原理概述 与分类树一样 裂分指标,使用的是MSE.MAE MSE(y,y^)=1nsamples∑i=0nsamples−1(yi−y^i)2\text{MSE}(y, \hat{y}) ...

  2. R语言实现决策回归树的包rpart

    文章目录 介绍 rpart()的使用方法 参数介绍 实例 对rapart对象的美观显示包rattle fancyRpartPlot()的用法 参数介绍 实例 介绍 rpart包中的rpart()函数可 ...

  3. sklearn 决策树(分类树、回归树)的 重要参数、属性、方法理解

    文章目录 决策分类树 引入 重要参数 1,criterion 2,splitter 3,max_depth 4,min_samples_leaf 5,min_samples_split 6,max_f ...

  4. 集成方法:渐进梯度回归树GBRT(迭代决策树)

    http://blog.csdn.net/pipisorry/article/details/60776803 单决策树C4.5由于功能太简单,并且非常容易出现过拟合的现象,于是引申出了许多变种决策树 ...

  5. 15- 决策回归树, 随机森林, 极限森林 (决策树优化) (算法)

    1.  决策回归树: from sklearn.tree import DecisionTreeRegressor model = DecisionTreeRegressor(criterion='m ...

  6. 机器学习-有监督学习-分类算法:决策树算法【CART树:分类树(基于信息熵;分类依据:信息增益、信息增益率、基尼系数)、回归树(基于均方误差)】【损失函数:叶节点信息熵和】【对特征具有很好的分析能力】

    一.决策树概述 注:生产实践中,不使用决策树,太简单,而是使用决策树的升级版:集成学习算法. 集成学习算法有: Random Forest(随机森林) Extremely Randomized For ...

  7. CART决策树(分类回归树)分析及应用建模

    一.CART决策树模型概述(Classification And Regression Trees)   决策树是使用类似于一棵树的结构来表示类的划分,树的构建可以看成是变量(属性)选择的过程,内部节 ...

  8. 推荐系统笔记:决策树回归树

    决策树和回归树经常用于数据分类. 决策树是为那些因变量(target,label)是分类的情况而设计的,而回归树是为那些因变量(target,label)是数值的情况而设计的.          在讨 ...

  9. Lesson 8.3Lesson 8.4 ID3、C4.5决策树的建模流程CART回归树的建模流程与sklearn参数详解

    Lesson 8.3 ID3.C4.5决策树的建模流程 ID3和C4.5作为的经典决策树算法,尽管无法通过sklearn来进行建模,但其基本原理仍然值得讨论与学习.接下来我们详细介绍关于ID3和C4. ...

最新文章

  1. 新人上路-搭建项目-springweb-controller测试
  2. docker omv 防火墙_我的软路由折腾之旅 篇三:在openmediavault上通过Docker实现OPENWRT旁路由功能...
  3. 团队作业第一次-团队团队展示
  4. BLE-NRF51822教程8-动态广播
  5. c语言i++和++i程序_使用C ++程序修改链接列表的内容
  6. 零基础入门│带你理解Kubernetes
  7. 实验5 —— 编写、调试具有多个段的程序
  8. HDU 1158【简单dp】
  9. 由先序+后序遍历确定序列是否唯一并输出一个中序序列
  10. 上海往事之参加安永公司项目面试
  11. 使用T4模板动态生成邮件内容并储存到任意位置
  12. centos 安装qrcode  二维码
  13. struts2 表单 get 乱码问题/apache+tomcat+jk 乱码问题
  14. 通信技术专业技术人员考试 动力与环境_2020年中级通信工程师动力与环境考试大纲...
  15. javaScript判断数组内容去重方法
  16. ApacheCN 数据科学译文集 20211109 更新
  17. 一文搞懂 UndeclaredThrowableException
  18. HTML|颜色的设置方法
  19. vue项目实现更换默认头像功能
  20. 开源项目推荐:Qt有关的GitHub/Gitee开源项目(★精品收藏★)

热门文章

  1. celery 停止任务_停止/清除Django-Celery中的定期任务
  2. Identifying drug–target interactions based on graph convolutional network and deep neural network 论文
  3. 线上问题定位—cpu飚高
  4. Win8开机系统引导如何删掉onekey项
  5. java weakhashmap_解析WeakHashMap与HashMap的区别详解
  6. 在现网中,大佬们为啥总是用这种Console线调试设备?
  7. 编程小游戏:模仿掷骰子,猜大小!
  8. 06-Java基础-面向对象概述
  9. 云端批量管理服务器平台-旗鱼云梯
  10. Handle机制总结