Регресс Лассо с Python: простой вопрос - PullRequest
0 голосов
/ 23 января 2019

Предположим, у меня есть таблица значений:

df = pd.DataFrame({'Y1':[1, 2, 3, 4, 5, 6], 'X1':[1, 2, 3, 4, 5, 6], 'X2':[1, 1, 2, 1, 1, 1], 
              'X3':[6, 6, 6, 5, 6, 4], 'X4':[6, 5, 4, 3, 2, 1]})

Я хочу сделать простую регрессию Лассо, используя все эти значения в качестве моего набора тестирования, где Y1 - зависимая переменная, а все X1 ...X4 являются независимыми переменными.Я пытался использовать следующее:

from sklearn.linear_model import Lasso
Lasso(alpha = 0.0001).fit(df, df['Y1'])

, но это не дает мне коэффициенты, которые я хочу.Как мне выполнить эту простую задачу?Спасибо.

1 Ответ

0 голосов
/ 23 января 2019

Я не думаю, что вы полностью понимаете, что означают коэффициенты.Прежде всего, вы не должны регрессировать 'Y1' по всем вашим переменным (включая 'Y1').Не включайте 'Y1' в ваши независимые переменные:

Lasso(alpha = 0.0001).fit(df[['X1','X2','X3','X4']], df['Y1'])

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

Y1 = b1*X1 + b2*X2 + b3*X3 + b4*X4

Теперь, если мы используемкоэффициенты, которые вы предложили (оставив 'Y1' in), тогда модель будет:

Y1 = Y1 + X1 - X4

Но вы, очевидно, видите, что это не очень хорошо предсказывает 'Y1'.Мы можем изменить модель так, чтобы она была просто:

Y1 = Y1

'Y1' предсказывает 'Y1' совершенно (дух).Вот почему вы выводите коэффициент [ 1, 0, -0, -0, -0].Но это не то, что мы хотим при проведении регрессии.Как я уже говорил, вы хотите оставить 'Y1' вне регрессии.Таким образом, используя предложенные вами коэффициенты и опуская 'Y1', ваша модель будет выглядеть следующим образом:

Y1 = X1 - X4

Обратите внимание, что это не очень хорошо предсказывает 'Y1' (вы можетепроверить некоторые пункты из вашего набора данных).Вместо этого вы могли бы использовать следующую модель для идеального прогнозирования 'Y1':

Y1 = X1

Таким образом, если вы регрессируете по лассо 'Y1' на 'X1','X2','X3','X4', вы должны получить коэффициенты [1, 0, 0, 0].

...