前言
几乎所有参数,属性及接口都和分类树一模一样。需要注意的是,在回归树种,没有标签分布是否均衡的问题,回归树处理的是连续型变量,因此没有class_weight这样的参数。使用波士顿房价数据集来进行回归树的学习
一、重要参数
criterion
回归树衡量分支质量的指标,支持标准有三种:
-
输入"mse"使用均方误差mean squared error(MSE),父节点和叶子节点之间的均方误差的差额将被用来作为特征选择的标准,这种方法通过使用叶子节点的均值来最小化L2损失
-
输入“friedman_mse”使用费尔德曼均方误差,这种指标使用弗里德曼针对潜在分枝中的问题改进后的均方误差
-
输入"mae"使用绝对平均误差MAE(mean absolute error),这种指标使用叶节点的中值来最小化L1损失
MSE公式
M S E = 1 N ∑ i = 1 N ( f i − y i ) 2 MSE=\frac{1}{N} \sum_{i=1}^{N} (f_i-y_i)^2 MSE=N1i=1∑N(fi−yi)2
- N:样本数量
- i:每一个数据样本
- f i f_i fi:模型回归出的数值
- y i y_i yi:样本点i实际的数值标签
MSE的本质: 样本真实数据与回归结果的差异
在回归树中,MSE不只是我们的分枝质量衡量指标,也是我们最常用的衡量回归树回归质量的指标。
当我们在使用交叉验证,或者其他方式获取回归树的结果时,我们往往选择均方误差作为我们的评估(在分类树中这个指标是score代表的预测准确率)。
在回归中,我们追求的是,MSE越小越好。然而,回归树的接口score返回的默认是R平方(R方越接近1越好),并不是MSE,在使用时可以规定使用MES还是R平方,但是我们通常不使用R平方。R平方被定义如下:
R
2
=
1
−
u
v
R^2=1-\frac{u}{v}
R2=1−vu
u
=
∑
i
=
1
N
(
f
i
−
y
i
)
2
u=\sum_{i=1}^{N} (f_i-y_i)^2
u=i=1∑N(fi−yi)2
v
=
∑
i
=
1
N
(
y
i
−
y
ˉ
)
2
v=\sum_{i=1}^{N}(y_i-\bar{y})^2
v=i=1∑N(yi−yˉ)2
-
u:残差平方和(MSE * N)
-
v:总平方和
-
N:样本数量
-
i:每一个数据样本
-
f i f_i fi:模型回归出的数值
-
y i y_i yi:样本点i实际的数值标签
-
y ˉ \bar{y} yˉ:真实数值标签的平均数
R平方可以为正为负(如果模型的残差平方和远远大于模型的总平方和,模型非常糟糕,R平方就会为负),而均方误差永远为正。
虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算负均方误差(neg_mean_squared_error),这是因为sklearn在计算模型评估指标的时候,会考虑指标本身的性质,均方误差本身是一种误差,所以被sklearn划分为模型的一种损失(loss),因此在sklearn当中,都以负数表示。真正的均方误差MSE的数值,其实就是neg_mean_squared_error去掉负号的数字。
交叉验证
交叉验证是用来观察模型的稳定性的一种方法,我们将数据划分为n份,依次使用其中一份作为测试集,其他n-1份作为训练集,多次计算模型的精确性来评估模型的平均准确程度。训练集和测试集的划分会干扰模型的结果,因此用交叉验证n次的结果求出的平均值,是对模型效果的一个更好的度量。
交叉验证cross_val_score的用法
from sklearn.datasets import load_boston
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
boston = load_boston()
regressor = DecisionTreeRegressor(random_state=0)
cross_val_score(regressor, boston.data, boston.target, cv=10, scoring = "neg_mean_squared_error")
#regressor: 可以是实例化后的决策树,支持向量机等等
#boston.data, boston.target: 不需要进行划分测试集和训练集,要完整的
#cv:交叉验证做的次数,默认是5,代表将数据集划分成5个,每次取一个做测试集四个做训练集,循环五次
#scoring:对于回归来说,默认使用的是R平方,但是不常用,一般使用"neg_mean_squared_error"负均方误差,越接近0越好
注意:R方越接近1越好,负均方误差越接近0越好
二、 重要的属性和接口(详细在分类树笔记)
属性
属性中最重要的依然是feature_importances_
接口
接口依然是apply, fit, predict, score最核心。