树回归
优点:可以对复杂和非线性的数据建模缺点:结果不易理解适用数据类型:数值型和标称型数据
第3章使用决策树来进行分类。决策树不断将数据切分成小数据集,直到所有目标变量完全相同,或者数据不能再切分为止。决策树是一种贪心算法,它要在给定时间内做出最佳选择,但并不关心能否达到全局最优。
第3章使用的树构建算法是ID3。ID3的做法是每次选取当前最佳的特征来分割数据,并按照该特征的所有可能取值来切分。也就是说,如果一个特征有4种取值,那么数据将被切成4份。一旦按某特征切分后,该特征在之后的算法执行过程中将不会再起作用,所以有观点认为这种切分方式过于迅速。另外一种方法是二元切分法,即每次把数据集切成两份。如果数据的某特征值等于切分所要求的值,那么这些数据就进入树的左子树,反之则进入树的右子树。
除了切分过于迅速外,ID3算法还存在另一个问题,它不能直接处理连续型特征。只有事先将连续型特征转换成离散型,才能在ID3算法中使用。但这种转换过程会破坏连续型变量的内在性质。而使用二元切分法则易于对树构建过程进行调整以处理连续型特征。具体的处理方法是:如果特征值大于给定值就走左子树,否则就走右子树。另外,二元切分法也节省了树的构建时间,但这点意义也不是特别大,因为这些树构建一般是离线完成,时间并非需要重点关注的因素。
CART是十分著名且广泛记载的树构建算法,它使用二元切分来处理连续型变量。对CART稍作修改就可以处理回归问题。第3章中使用香农熵来度量集合的无组织程度。如果选用其他方法来代替香农熵,就可以使用树构建算法来完成回归。
下面将实现CART算法和回归树。回归树与分类树的思路类似,但叶节点的数据类型不是离散型,而是连续型。
树回归的一般方法
- 收集数据:采用任意方法收集数据。
- 准备数据:需要数值型的数据,标称型数据应该映射成二值型数据。
- 分析数据:绘出数据的二维可视化显示结果,以字典方式生成树。
- 训练算法:大部分时间都花费在叶节点树模型的构建上。
- 测试算法:使用测试数据上的R2值来分析模型的效果。
- 使用算法:使用训练出的树做预测,预测结果还可以用来做很多事情
有了思路之后就可以开始写代码了。下一节将介绍在Python中利用CART算法构建树的最佳方法。