Почему я получаю некоторые отрицательные значения (предикторы) в качестве выходных данных регрессорных оценок (Lasso, Ridge, ElasticNet)

Для моей проблемы регрессии я использую GridSearchCV из scikit-learn, чтобы получить наилучшее альфа-значение и использую это альфа-значение в своей оценке (Lasso, Ridge, ElasticNet). Мои целевые значения в наборе обучающих данных не содержат отрицательных значений. Но некоторые из предсказанных значений отрицательны (около 5-10%). Я использую следующий код. Мои тренировочные данные содержат некоторые нулевые значения, и я заменяю их с помощью этой функции.

return Lasso(alpha=best_parameters['alpha']).fit(X,y).predict(X_test)

Любая идея, почему я получаю отрицательные значения? Форма X, y и X_test (20 л, 400 л) (20 л,) (10 л, 400 л)


person user644745    schedule 17.11.2013    source источник


Ответы (1)


Лассо — это просто регуляризованная линейная регрессия, поэтому фактически для каждой обученной модели есть некоторые значения, для которых предиктор будет отрицательным.

рассмотрим линейную функцию

f(x) = w'x + b

Где w и x - векторы, а ' - оператор транспонирования

Независимо от того, каковы значения w и b, пока w не является нулевым вектором - всегда есть значения x, для которых f(x)<0. И не имеет значения, что ваш тренировочный набор, используемый для вычисления w и b, не содержит отрицательных значений, так как линейная модель всегда (возможно, в некоторых действительно больших значениях) пересекает значение 0.

person lejlot    schedule 17.11.2013
comment
Спасибо за объяснение. Любая идея, что было бы лучшей оценкой, когда мои функции (исходные 1500, уменьшенные после выбора функций до 400) больше, чем образцы? Использование AdaBoostRegressor с DecisionTreeRegressor с n_estimators=300 не сильно улучшило оценку, но, по крайней мере, не получило отрицательного значения. - person user644745; 17.11.2013
comment
Честно говоря, лучшее решение — собрать больше данных. С таким небольшим набором данных вы не можете ожидать каких-либо разумных результатов. - person lejlot; 17.11.2013