树回归

树回归

线性回归只能用于线性数据,对于非线性数据,拟合效果会很不理想,这时就可以用树回归了。
树回归基本思想就是把数据按照决策树类似的方法将数据切分为易于建模的数据。但决策树的构建存在一些问题,一个是会造成切分过于迅速(假定当前叶子节点选择特征A来分割数据,那么数据A将不再后续的叶子节点中起作用,这样就会造成切分过于迅速),另一个问题就是无法处理连续型特征,这时就需要用二分切分法处理连续型数据。
在决策树中我们用熵来描述数据的混乱度,在连续型数据中用方差描述即可。

找到最佳特征切分值

要实现树回归,首先就要找到最佳特征切分位置,实现的伪代码如下
对每个特征:
对每个特征值:
将数据集切分成两份
计算切分的误差
如果当前误差小于当前最小误差,那么将当前切分设定为最佳切分并更新最小误差
返回最佳切分的特征和阈值

构建树

找到最佳切分值后,构建树就简单了,伪代码如下:

找到最佳的待切分特征:
如果该节点不能再分,将该节点存为叶节点
执行二元切分
在右子树调用createTree()方法
在左子树调用createTree()方法

树剪枝

树的结点过多的话,可能出现过拟合现象,这时就需要进行剪枝。

预剪枝

预剪枝一般都是采用终止条件的方法控制,但这需要不断的修改条件来得到合理的结果。

后剪枝

使用后剪枝方法需要将数据集分成测试集和训练集。
首先指定参数使得生成的树足够大能进行剪枝,然后来从上而下找到叶节点,用测试集来判断将这些叶节点合并是否能降低测试误差,如果是的话就合并。 伪代码如下:
基于已有的树切分测试数据:
如果存在任一子集是一棵树,则在该子集递归剪枝过程
计算将当前两个叶节点合并后的误差
计算不合并的误差
如果合并会降低误差的话,就将叶节点合并

模型树

模型树就是将叶节点用线性模型表示,这和我们用无限小线段表示曲线的思想很相似,这样便可以实现预测功能。
模型树的实现将树回归稍作修改即可。
代码之后再补= =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值