当我在 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有何本质区别