首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
系统相关
> 详细
CART回归树(chap9)Machine Learning In Action学习笔记
时间:
2016-05-24 09:14:57
阅读:
264
评论:
0
收藏:
0
[点我收藏+]
标签:
后续再次学习,现在理解有些模糊。
优点:
可以对复杂和非线性的数据建模
缺点:
结果不易理解
适用数据类型:
数值型(转换成二值型)和标称型数据
树回归的一般方法
收集数据:采用任意方法收集数据。
准备数据:需要
数值型
的数据,标称型数据应该映射成二值型数据。
分析数据:绘出数据的二维可视化显示结果,以字典方式生成树。
训练算法:大部分时间都花费在叶节点树模型的构建上。
测试算法:使用测试数据上的R2值来分析模型的效果。
使用算法:使用训练出的树做预测,预测结果还可以用来做很多事情
回归树与分类树的思路类似,但叶节点的数据类型不是离散型,而是
连续型
。
使用一部
字典
来存储
树的数据结构
,该字典将包含:
待切分的特征。
待切分的特征值。
右子树。当不再需要切分的时候,也可以是单个值。
左子树。与右子树类似。
计算连续型数值的混乱度:
首先计算所有数据的均值,然后计算每条数据的值到均值的差值。为了对正负差值同等看待,一般使用
绝对值
或
平方值
来代替上述差值。类似于方差,方差是平方误差的均值(均方差),而这里需要的是平方误差的总值(
总方差
)。总方差可以通过均方差乘以数据集中样本点的个数来得到。
函数createTree()的伪代码:
找到最佳的待切分特征:
如果该节点不能再分,将该节点存为叶节点
执行二元切分
在右子树调用createTree()方法
在左子树调用createTree()方法
函数chooseBestSplit()的伪代码:
对每个特征:
对每个特征值:
将数据集切分成两份
计算切分的误差
如果当前误差小于当前最小误差,那么将当前切分设定为最佳切分并更新最小误差
返回最佳切分的特征和阈值
通过降低决策树的复杂度来避免过拟合的过程称为
剪枝
。
预剪枝:提前设定终止条件
后剪枝:使用测试集和训练集
后剪枝:
将数据集分成测试集和训练集。首先指定参数,使得构建出的树足够大、足够复杂,便于剪枝。接下来从上而下找到叶节点,用测试集来判断将这些叶节点合并是否能降低测试误差。如果是的话就合并。
函数prune()的伪代码如下:
基于已有的树切分测试数据:
如果存在任一子集是一棵树,则在该子集递归剪枝过程
计算将当前两个叶节点合并后的误差
计算不合并的误差
如果合并会降低误差的话,就将叶节点合并
用树来对数据建模,除了把叶节点简单地设定为常数值之外,还有一种方法是把叶节点设定为分段线性函数,这里所谓的
分段线性
(piecewise linear)是指模型由多个线性片段组成。
来自为知笔记(Wiz)
CART回归树(chap9)Machine Learning In Action学习笔记
标签:
原文地址:http://www.cnblogs.com/woaielf/p/5522183.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
gitlab 在linux安装环境下存储地址
2021-07-29
当 Mac 未检测到外部显示器时如何修复它
2021-07-29
Ubuntu18.04安装qemu遇到问题-qemu : Depends: qemu-system (>= 1:2.11+dfsg-1ubuntu7)
2021-07-28
[Linux]Shell编程【待续】
2021-07-28
Linux系统资源查看
2021-07-27
Archlinux爬坑指南
2021-07-27
[Linux]Linux发展历程
2021-07-27
非桌面系统 (ubuntu)安装google-chrome
2021-07-27
在Ubuntu18.04系统中源码安装 gcc7.3.0
2021-07-23
Linux快捷键杂记
2021-07-22
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!