决策树常用于分类问题,但是也能解决回归问题。
在回归问题中,决策树只能使用cart决策树,而cart决策树,既可以分类,也可以回归。
所以我们说的回归树就是指cart树。
为什么只能是cart树
1. 回想下id3,分裂后需要计算每个类别占总样本的比例,回归哪来的类别,c4.5也一样
2. 回归问题肯定是连续属性,所以只能二划分,而cart树是强制的二叉树
回归树的分裂
分裂方法与决策树处理连续属性无异,分裂评价有所不同。
分类cart树用的gini系数,回归cart树可以用多种评价指标
MSE
cm为叶子节点的均值
最小化L2误差
MAE
y1-,y2-(平均)分别表示以当前属性作为划分选择时各自对应的集合s1和s2目标值的均值,也有取中位数的,可以自己定
最小化L1误差
也可以尝试其他回归评价指标
防止过拟合
通过剪枝提高模型的泛化能力,如
SSE=SSE+γT
T表示树的规模,如叶节点的个数,γ为惩罚系数,可以自定义,值越大树的规模越小
示例代码
from sklearn import tree X = [[0, 0], [1, 1], [2, 2], [6, 6], [8, 8], [10, 10]] y = [0.5, 0.8, 1, 7.5, 8.5, 9] clf = tree.DecisionTreeRegressor(max_depth=2) clf = clf.fit(X, y) print clf.predict([[1, 1.5]]) # 0.9 print clf.predict([[3, 5]]) # 0.9 print clf.predict([[10, 12]]) # 8.75
参考资料:
https://blog.csdn.net/wong2016/article/details/80727524
https://blog.csdn.net/skullFang/article/details/79107127 回归评价指标