负决定系数对评估岭回归意味着什么?

数据挖掘 机器学习 scikit-学习 岭回归
2021-10-05 14:30:55

从我显示的负面结果来看,ridge.score()我猜我做错了什么。也许有人可以指出我正确的方向?

# Create a practice data set for exploring Ridge Regression


data_2 = np.array([[1, 2, 0], [3, 4, 1], [5, 6, 0], [1, 3, 1],
           [3, 5, 1], [1, 7, 0], [1, 8, 1]], dtype=np.float64)


# Separate X and Y

x_2 = data_2[:, [0, 1]]
y_2 = data_2[:, 2]

# Train Test Split
x_2_train, x_2_test, y_2_train, y_2_test = train_test_split(x_2, y_2, random_state=0)

# Scale the training data
scaler_2 = StandardScaler()
scaler_2.fit(x_2_train)
x_2_transformed = scaler_2.transform(x_2_train)

# Ridge Regression
ridge_2 = Ridge().fit(x_2_transformed, y_2_train)
x_2_test_scaled = scaler_2.transform(x_2_test)
ridge_2.score(x_2_test_scaled, y_2_test)

输出为:-4.47

编辑:从阅读 scikit learn docs 这个值是 R2价值。我想问题是,我们如何解释这个?

2个回答

负值意味着您的拟合度很差——如果您创建的测试集与训练集的分布不同,这是有道理的。

sklearn 文档

系数 R2定义为 (1 - u/v),其中 u 是残差平方和 ((y_true - y_pred) ** 2).sum(),v 是总平方和 ((y_true - y_true.mean() ) ** 2).sum()。最好的分数是 1.0,它可以是负数(因为模型可以任意变差)。一个始终预测 y 的期望值的常量模型,不考虑输入特征,将得到R2 0.0 分。

要了解决定系数的负值(r2)。你需要知道什么r2= 0 表示。

r2= 0 表示回归量拟合的平方误差与始终返回目标平均值的拟合的平方误差相同。

如果r2是负数,这意味着您的回归器拟合的平方误差高于平均拟合。也就是说,它的表现比平均拟合差。

r2= 1 - 平方误差(您的拟合)/平方误差(平均拟合)

`