sklearn.model_selection中的 cv 参数.回归问题中的 GridSearchCV:best_sco



我在理解 GridSearchCV 中 cv 参数的效果时遇到问题。我仍然使用 Python 2.7 和 sklearn 0.18

当使用 GridSearchCV 调整一些参数(例如岭回归)时,随着越来越多的数据包含在训练中,我希望分数会上升到更多的折叠数。然而,我观察到相反的行为。谁能向我解释一下,这是否应该预料到?

考虑以下示例

from __future__ import division, print_function
from sklearn import linear_model
from sklearn import preprocessing
from sklearn import model_selection
import numpy as np
# Some example data
X = np.ones((100, 4)) * np.arange(100).reshape((100, 1)) + (np.random.random((100, 4)) * 0.5)
Y = np.ones((100, 1)) * np.arange(100).reshape((100, 1))
scalerx = preprocessing.StandardScaler()
X_ = scalerx.fit_transform(X)
scalerx = preprocessing.StandardScaler()
Y_ = scalerx.fit_transform(Y)
for cv in np.arange(2, 100, 5):
    GS = model_selection.GridSearchCV(
        cv=cv, estimator=linear_model.Ridge(random_state=0),
        param_grid=[{'alpha': [10e-2, 10e-1, 10e0, 10e1, 10e2]}],
        )
    GS.fit(X_, Y_)
    print(cv, GS.best_score_)

这将产生以下输出

2 0.999967723551
7 0.999700831429
12 0.999157506389
17 0.998278596601
22 0.997107931494
27 0.995490243014
32 0.993315835556
37 0.990634277512
42 0.986174197011
47 0.982697293408
52 0.941176694311
57 0.844045003327
62 0.744867073869
67 0.646916948176
72 0.548521372859
77 0.451907425236
82 0.352978995707
87 0.256264849417
92 0.1575027865
97 0.058902807202

测试样本越小(折叠数越大),最佳分数越低。

所用数据的大小对 Y 的方差有直接影响。这很重要,因为 sklearn 的回归模型使用 R 平方作为默认分数公式,即 mean(y_hat - y)/var(y)。

给定您提供的数据,随着样本数量的增加,方差会减小,从而使 R^平方值也会减小。

"可以比较R2的一种情况是,当不同的模型拟合到具有相同未转换响应变量的相同数据集。然后增加R2与减少样本内MSE(等式9)相同。但是,在这种情况下,您不妨比较一下MSE。

第 17 页 在 http://www.stat.cmu.edu/~cshalizi/mreg/15/lectures/10/lecture-10.pdf

最新更新