0
点赞
收藏
分享

微信扫一扫

详解决策树-交叉验证【菜菜的sklearn课堂笔记】

视频作者:菜菜TsaiTsai 链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili

均方误差mean squared error(MSE) $$ MSE=\frac{1}{N}\sum\limits_{i=1}^{N}(f_{i}-y_{i})^{2} $$ 其中$N$是样本数量,$i$是每个数据样本,$f_{i}$是模型回归出来的数值,$y_{i}$是样本点$i$实际的数值标签 所以MES的本质,其实是样本正是数据与回归结果的差异。因此在回归中,我们追求的是MSE越小越好

其实前面【十分钟机器学习系列笔记】决策树-CART算法中有提到 最小化平方误差就可以表示为 $$\begin{aligned}\mathop{\text{min }}\limits_{j,s}\left[\mathop{\text{min }}\limits_{c_{1}}\sum\limits_{x_{i}\in R_{1}(j,s)}^{}(y_{i}-c_{1})^{2}+\mathop{\text{min }}\limits_{c_{2}}\sum\limits_{x_{i}\in R_{2}(j,s)}^{}(y_{i}-c_{2})^{2}\right]\end{aligned}$$

然而,回归树的接口score返回的是R平方,并不是MSE,R平方被定义如下 $$ R^{2}=1- \frac{u}{v}=1- \frac{\sum\limits_{i=1}^{N}(f_{i}-y_{i})^{2}}{\sum\limits_{i=1}^{N}(y_{i}-\hat{y})^{2}} $$ 其中$N$是样本数量,$i$是每个数据样本,$f_{i}$是模型回归出来的数值,$y_{i}$是样本点$i$实际的数值标签,$\hat{y}$是正是数值标签的平均数。显然$u$就是残差平方和,$v$就是总平方和

R平方可以为正为负,如果模型的残差平方和远远大于模型的总平方和,模型非常糟糕,R平方就会为负),而均方误差永远为正

值得一提的是,虽然均方误差永远为正,但是sklearn当中使用均方误差作为评判标准时,却是计算”负均方误差“(neg_mean_squared_error)

![[附件/Pasted image 20221009165753.png|500]]

交叉验证就是,我们将数据划为n份,依次使用其中一份作为数据集,其他n-1份作为训练集,多次计算模型的精确性来评估模型的平均准确程度 训练集和测试集的划分会干扰模型的结果,因此,用交叉验证n次结果求出的平均值,是对模型效果的一个更好的度量

对于交叉验证,在sklearn中指的是cross_val_score

cross_val_score(
    ['estimator', 'X', 'y=None', 'groups=None', 'scoring=None', "cv='warn'", 'n_jobs=None', 'verbose=0', 'fit_params=None', "pre_dispatch='2*n_jobs'", "error_score='raise-deprecating'"],
)
# estimator:估计器,也就是模型
# X:整个特征数据集
# y:整个结果数据集
# cv:测试次数,这也决定着训练集与测试集的划分
# scoring:评判标准,默认是R平方,这是使用负MSE

代码实现

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"
               )
---
array([-16.41568627, -10.61843137, -18.30176471, -55.36803922, -16.01470588, -44.70117647, -12.2148    , -91.3888    , -57.764     , -36.8134    ])
举报

相关推荐

sklearn-决策树

sklearn决策树预剪枝

0 条评论