当我在 Lasso Regression 中拆分训练集和测试集时,R^2 为负数

Posted

技术标签:

【中文标题】当我在 Lasso Regression 中拆分训练集和测试集时,R^2 为负数【英文标题】:R^2 is negative when I split train and test set in Lasso Regression 【发布时间】:2020-12-06 19:19:43 【问题描述】:

我尝试用原油价格运行 Lasso 回归,当我拆分为训练集和测试集时,我无法洗牌训练集和测试集

2020 年的原油价格,因为 COVID-19 很奇怪

但我想知道如何修复训练集和测试集上的错误,我需要在不随机播放的情况下使用它

# Import Libraries

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#%matplotlib inline 
plt.style.use('ggplot') 
import warnings; warnings.simplefilter('ignore')

# Read data from CSV to Pandas 
df = pd.read_csv('https://www.kaggle.com/yothinpukongnin/crude-oil-price?select=DB_2.csv
', index_col=0)
#df = df.iloc[ 0:108 , : ]
X = df.drop(['Dubai','EU_RUB'], axis=1)
y = df['Dubai']

# Split Train and Test Set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=7, shuffle = False)

#Lasso Regression 
from sklearn.linear_model import Lasso
reg = Lasso(alpha=0.5)
reg.fit(X_train, y_train)

#R^esults from traditional Lasso
from sklearn.metrics import mean_squared_error
print('Lasso Regression: R^2 score on training set', reg.score(X_train, y_train)*100)
print('Lasso Regression: R^2 score on test set', reg.score(X_test, y_test)*100)

测试集的 R 平方 = -356

【问题讨论】:

修复什么错误?您没有报告任何错误。 【参考方案1】:

如果我理解您的问题,您是在询问负 R^2 分数。

但这并不是严格意义上的错误 - R^2 score can be arbitrarily negative。这只是意味着您的模型表现不佳,实际上它的表现甚至比总是预测平均值的模型更差(即 R^2 得分等于 0)。

虽然生成的模型不好,但您的代码在技术上可以正常工作。此外,负 R^2 分数的问题与将数据集拆分为训练和测试部分没有直接关系。

究竟如何制作更好的模型是一个过于复杂的问题,无法在此回答。只是一些提示(以便您知道要查找的主题):

您的数据集非常小,具有相对较多的特征,因此您的模型很可能过拟合(也得到良好的训练 R^2 分数的支持) - 了解如何诊断和缓解过拟合和欠拟合以及偏差与方差交易的问题-关闭, 这是一个时间序列问题,应该这样处理 - 阅读有关时间序列数据的机器学习预测细节的内容, 您应该在拟合任何模型之前对数据进行预处理(这可能包括但不限于归一化/标准化、特征编码、特征生成、降维、添加外部数据、时间序列特定的预处理......) 您应该尝试更多不同的模型并进行网格搜索以找到最佳超参数。

当然不止这些,如果您不熟悉机器学习,最好阅读一本介绍性书籍或参加一门课程,以便您获得基本概述和进一步学习的起点.例如this is an excelent course。

【讨论】:

以上是关于当我在 Lasso Regression 中拆分训练集和测试集时,R^2 为负数的主要内容,如果未能解决你的问题,请参考以下文章

Sklearn Lasso Regression 比 Ridge Regression 差几个数量级?

线性回归——lasso回归和岭回归(ridge regression)

Linear least squares,Lasso,ridge regression有何本质区别

机器学习方法:回归:稀疏与正则约束ridge regression,Lasso

深入理解:Linear Regression及其正则方法

Regression:Generalized Linear Models