Как рассчитать RMSE на регрессионной модели Риджа - PullRequest
0 голосов
/ 10 февраля 2019

Я выполнил модель регрессии гребня для набора данных (ссылка на набор данных: https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data), как показано ниже:

from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split

y = train['SalePrice']
X = train.drop("SalePrice", axis = 1)

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.30)
ridge = Ridge(alpha=0.1, normalize=True)
ridge.fit(X_train,y_train)
pred = ridge.predict(X_test)

Я рассчитал MSE, используя библиотеку метрик из sklearn, как

from sklearn.metrics import mean_squared_error
mean = mean_squared_error(y_test, pred) 
rmse = np.sqrt(mean_squared_error(y_test,pred)

Я получаю очень большое значение MSE = 554084039.54321 и RMSE = 21821.8, я пытаюсь понять, правильна ли моя реализация.

1 Ответ

0 голосов
/ 10 февраля 2019

Реализация RMSE

Ваша реализация RMSE верна, что легко проверить, если взять квадратный корень из mean_squared_error.

от sklearn. Я думаю, что вам не хватает закрывающих скобок,здесь, чтобы быть точным:

rmse = np.sqrt(mean_squared_error(y_test,pred)) # the last one was missing

Высокая проблема ошибки

Ваш MSE высокий из-за того, что модель не в состоянии моделировать отношения между вашими переменными и целью очень хорошо.Имейте в виду, что каждая ошибка принимается до степени 2, поэтому, если цена на 1000 будет снижена, вы получите значение 100000.

Вы можете изменить цену с помощью натурального логарифма (numpy.log) и преобразовать его в лог-масштаб, это обычная практика, особенно для этой проблемы (я предполагаю, что вы делаете Цены на дома: передовые методы регрессии ), см. руководство по доступным ядрам.При таком подходе вы не получите такие большие значения.

Последнее, но не менее важное: отметьте Средняя абсолютная ошибка , чтобы увидеть, что ваши прогнозы не так ужасны, как кажутся.

...