决策树常用于分类问题,但是也能解决回归问题。

在回归问题中,决策树只能使用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  回归评价指标