Ошибка в построении модели линейной регрессии (sklearn). Огромная погрешность
Прохожу соревнование www.kaggle.com/c/house-prices-advanced-regression-techniques
Получившаяся предиктивная модель выдает огромную ошибку:
mse 5811162076.48
sqrt(mse) 76230.98
avg_error 57070.42
Знатоки, подскажите, как исправить\улучшить результат. Пробовал реализовать модель с помощью данного решения(www.kaggle.com/vipin20/house-prices-eda-feature-engineering-top-10). Код выложил на GITHUB (https://github.com/Sergey-Kit/All/blob/c5f93237ab55079740ebedb35d47233d25e1c3c0/Prediction%20of%20House%20Prices.ipynb)
Ответы (1 шт):
Как выяснилось, надо было всего лишь почитать раздел Evaluation
Metric
Submissions are evaluated on Root-Mean-Squared-Error (RMSE) between the logarithm of the predicted value and the logarithm of the observed sales price. (Taking logs means that errors in predicting expensive houses and cheap houses will affect the result equally.)
Правим код:
mse = np.mean((np.log(y_test_verification['SalePrice'])-np.log(y_pred))**2)
Получаем метрики не такие уже страшные:
mse 0.19601661402442377
sqrt(mse) 0.44273763565392066
А если взять модель посложнее, которая лучше работает с категориальными переменными, хотя бы даже старый добрый Random Forest, то будет ещё лучше:
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
rf = RandomForestRegressor(n_jobs=-1)
rf.fit(X_train, y_train)
print(mean_squared_error(np.log(y_test_verification['SalePrice']), np.log(rf.predict(X_test)))**0.5)
# 0.3586312743499053
Хотя, повторю свой комментарий - непонятно, что там в 'sample_submission.csv', насколько это правильные предсказания, чтобы на них ориентироваться. На X_train, y_train при проверке RF вообще отличный скор обучения показывает 0.05, например.