实际生活中,很多问题都是非线性的,不可能使用全局线性模型来拟合任何数据。一种方法是将数据集切分成很多份易建模的数据,然后利用线性回归技术建模。如果首次切分后仍然难以拟合线性模型就继续切分。在这种切分方式下,树结构和回归法就相当有用。
树回归
优点:可以对复杂和非线性的数据建模
缺点:结果不易理解
适用类型:数值型、标称型
决策树构建时使用的ID3算法不能直接处理连续型特征;故使用二元切分法以处理连续型特征。具体方法:
如果特征值大于给定值就走左子树,否则就走右子树。
CART(分类回归树)是十分著名的树构建算法,它使用二元切分法来处理连续型变量,对其稍作修改就可以处理回归问题,选用其他方法代替香农熵即可。
1、树的构建
将使用一部字典来存储树的数据结构,该字典包含:待切分的特征,待切分的特征值,右子树,左子树。
本文将构建两种树:回归树,其每个叶节点包含单个值;模型树,其每个叶节点包含一个线性方程。
2、回归树
叶节点为常数值
连续型数值的混乱度计算:
计算所有数据的均值,然后计算每条数据的值到均值的绝对值(平方值),即平方误差的总值(总方差),可以通过均方差乘以样本数得到。
3、树剪枝
一棵树如果节点过多,表明该模型可能对数据进行了“过拟合”。可以使用交叉验证来发现。
通过降低树的复杂度来避免过拟合的过程称为剪枝。
(1)预剪枝
缺点:对输入参数tolS/tolN非常敏感,用户需要不断修改停止条件来取得合理结果。
(2)后剪枝
需要将数据集分成测试集和训练集。
首先指定参数,使得构建的树足够大、足够复杂,便于剪枝。
接下来从上而下找到叶节点,用测试集来判断将这些叶节点合并是否能降低测试误差。
如果是,则合并叶节点。
后剪枝可能不如预剪枝有效,一般为了寻求最佳模型可以同时使用两种剪枝技术。
4、模型树
叶节点为分段线性函数,分段线性指模型由多个线性片度组成。
模型树的可解释性优于回归树,也具有更高的预测准确度。
误差计算:对于给定的数据集,先用线性模型对它进行拟合,然后计算真实目标值与模型预测值间的差值,最后将这些差值的平方求和即可。
5、用树回归进行预测
树回归方法在预测复杂数据时会比简单的线性模型更有效。
6、多元自适应回归样条(MARS)
该方法以样条函数的张量积作为基函数,分为前向过程、后向剪枝过程与模型选取三个步骤。
优势在于能够处理数据量大、维度高的数据,而且计算快捷、模型精确。
在前向过程中,通过自适应的选取节点对数据进行分割,每选取一个节点就生成两个新的基函数,前向过程结束后生成一个过拟合的模型。后向剪枝过程中在保证模型准确度的前提下,删除过拟合模型中对模型贡献度小的基函数,最后选取一个最优的模型作为回归模型。
MARS是回归的自适应过程,非常适合高维问题(比如,存在大量的输入)。可以从两个角度来理解它,首先,它可以看成是逐步线性回归的推广,其次,也可以看成是为了提高CART在回归中的效果而进行的改进。