Среднеквадратическая ошибка огромна при использовании Scikit Learn

Я боролся с этой проблемой с моей MSE, предсказывая регрессию. Я столкнулся с той же проблемой с различными моделями регрессии, которые я пытался построить.

Проблема в том, что мой MSE огромен. 83661743,99, если быть точным. Мой R в квадрате составляет 0,91, что не кажется проблематичным.

Я вручную реализовал функцию стоимости и градиентный спуск, выполняя курсовую работу в Стэнфордских классах Эндрю Нг, и у меня есть разумная функция стоимости; но когда я пытаюсь реализовать это с помощью SKLearn lib, MSE оказывается чем-то другим. Я не знаю, что я сделал не так, и мне нужна помощь, чтобы проверить это.

Вот ссылка на набор данных, который я использовал: https://www.kaggle.com/farhanmd29/50-startups

Мой код:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
from sklearn.linear_model import LinearRegression

df = pd.read_csv('50_Startups.csv')

#checking the level of correlations between the predictors and response
sns.heatmap(df.corr(), annot=True)

#Splitting the predictors from the response
X = df.iloc[:,:-1].values
y = df.iloc[:,4].values


#Encoding the Categorical values
label_encoder_X = LabelEncoder()
X[:,3] = label_encoder_X.fit_transform(X[:,3])

#Feature Scaling
scaler = StandardScaler()
X = scaler.fit_transform(X)

#splitting train and test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=0)

#Linear Regression
model = LinearRegression()
model.fit(X_train,y_train)

pred = model.predict(X_test)

#Cost Function
mse = mean_squared_error(y_test,pred)
mse

person Prince    schedule 27.04.2020    source источник
comment
Насколько это огромно? Пожалуйста, поделитесь ценностями. Имейте также в виду, что, в отличие от метрик классификации, таких как точность, метрики регрессии, такие как MSE, не имеют естественного масштаба, т. е. нельзя сказать простым взглядом, велики они или низки — это зависит от масштаба данных. предсказано.   -  person desertnaut    schedule 27.04.2020
comment
@desertnaut, у меня было значение 83661743,99. достаточно забавно, что мой Rsquared был 0,91   -  person Prince    schedule 27.04.2020
comment
Было бы хорошо, если бы эти значения были в вопросе, а не в комментариях. Пожалуйста, предложите вам отредактировать и обновить свой пост, чтобы включить их.   -  person desertnaut    schedule 27.04.2020


Ответы (2)


Поскольку вы использовали стандартную нормализацию для масштабирования, значения набора данных могут быть огромными. Как сказал Desertnaut, MSE не масштабируется, поэтому он может быть огромным из-за больших значений набора данных. Вы можете попытаться нормализовать данные, используя MinMaxScaler, чтобы получить ввод между [0-1]

person Oscar García-Olalla    schedule 27.04.2020
comment
Я пробовал это раньше, и у меня все еще была большая ценность. Я также забыл добавить, что мой R в квадрате был 0,91. - person Prince; 27.04.2020

Я понял ошибочность своего пути. MSE равен 1/n (количество выборок), умноженному на сумму фактического отклика, вычтенного из предсказанного отклика в КВАДРАТЕ. Следовательно, указанная ошибка будет ВОЗВРАЩЕНА в КВАДРАТ ожидаемого значения ошибки. на что я должен был обратить внимание, так это на RMSE, который найдет sqrt MSE. мои прогнозы тоже были ошибочными, потому что я масштабировал свои значения. Немасштабированные значения X дали мне гораздо лучшие прогнозы. Это мне придется изучить больше, поскольку я не понимаю, почему.

person Prince    schedule 27.04.2020