Ошибка значения: среднеквадратичная логарифмическая ошибка не может быть использована, когда целевые объекты содержат отрицательные значения

#python-3.x #machine-learning #scikit-learn #data-science #cross-validation

#python-3.x #машинное обучение #scikit-learn #наука о данных #перекрестная проверка

Вопрос:

 cross_val_score(estimator=LinearRegression(), X=X, y=y, scoring='neg_mean_squared_log_error', cv=5)
  

приводит к следующей ошибке:

 ValueError: Mean Squared Logarithmic Error cannot be used when targets contain negative values.
  

хотя мой целевой вектор не имеет отрицательных значений (цены на жилье)

 >>> np.any(y < 0)
False
  

Я знаю, что функция log не определена для отрицательных значений, и эта среднеквадратичная ошибка журнала использует эту формулу: введите описание изображения здесь

Это означает, что проблема должна заключаться в шляпе y, т. Е. После подгонки линейная регрессия предсказывает отрицательное значение, но это не так:

 >>> np.any(LinearRegression().fit(X,y).predict(X) < 0)
False
  

Я прочитал ответы на похожие вопросы, но я все еще не уверен, что вызывает эту ошибку и как ее исправить. Эта же ошибка возникает и с другими регуляризованными линейными регрессорами, такими как Ridge, Lasso, ElasticNet при использовании перекрестной проверки. Однако, когда я использую

 mean_squared_log_error(y, model.fit(X,y).predict(X))
  

с этими же моделями, т. Е. Для определения оценки обучения, она отлично работает без ошибок.

Моя цель — отправить прогнозы в Kaggle. Для оценки производительности они используют среднеквадратичную ошибку журнала, но если мои прогнозы иногда отрицательны, как kaggle в любом случае выдает оценку, используя этот показатель?

при использовании перекрестной проверки с другими оценщиками, такими как neg_mean_squared_error

 cross_val_score(estimator=LinearRegression(), X=X, y=y, scoring='neg_mean_squared_error', cv=5)
  

конечно, проблем нет, поэтому могу ли я использовать перекрестные оценки значений с этим показателем для оценки производительности моих моделей, т. Е. Будут ли модели с наименьшим значением neg_mean_squared_error также иметь наименьшее значение neg_mean_squared_log_error?