Как интерпретировать коэффициенты, возвращаемые из `LinearRegression (). Coef_` при использовании полиномиальной регрессии - PullRequest
0 голосов
/ 30 января 2020

У меня есть тренировочный набор данных x_train с 6 функциями / переменными и с целью y_train. Они хранятся в pandas фреймах данных.

Я выполнил линейную регрессию, чтобы получить модель вида y = b + m_1*x_1 + m_2*x_2 + ... + m_6*x_6. Когда я печатаю LinearRegression().coef_, я получаю массив numpy, который выглядит следующим образом: [[m_1, m_2, m_3, m_4, m_5, m_6]]. Из этого я могу извлечь коэффициенты mi просто отлично.

Теперь я пытаюсь вместо этого сделать Quadrati c регрессию на этих данных. Я ожидаю, что это даст мне модель вида y = b + m_{11}*x_1 + m_{12}*x_1^2 + m_{21}*x_2 + m_{22}*x_2^2 + ... + m_{62}*x_6^2. Поэтому я ожидаю, что я должен получить 12 коэффициентов, m_11, m_12, m_21, m_22, m_31, m_32, m_41, m_42, m_51, m_52, m_61, m_62. Вместо этого, когда я печатаю qm.coef_, как показано в приведенном ниже коде, я получаю массив numpy длиной 28:

>>> print(qm.coef_)
[ 5.23243620e-08 -4.52818442e+01 -1.69803868e-02  1.23876223e+00
 -1.31251424e+01  6.34950041e+01 -5.65064601e-02 -3.04164916e+00
  1.22800976e-03 -1.81908736e-02 -1.38319879e+00 -1.88468027e+00
  8.98960781e-03 -5.10163574e-07  5.60756672e-04 -8.52068126e-04
 -5.09033748e-03  2.67482109e-06  1.10815787e-01 -7.45059709e-01
 -1.05108447e+00  6.37628573e-05 -9.12589844e-01 -1.22173903e+00
 -5.47228030e-04  6.34950042e+01 -5.39225901e-03  2.21487661e-06]

Мой вопрос: почему я получаю 28? Где 12, которые я ищу, и каковы другие 16 коэффициентов?


Вот мой код:

poly = PolynomialFeatures(degree=2)
X_poly = poly.fit_transform(x_train)
poly.fit(X_poly, y_train)
qm = LinearRegression()
qm.fit(X_poly, y_train)
print(qm.coef_)

Аналогичный вопрос который остался без ответа. Еще один похожий вопрос , на который не был дан правильный ответ.

Ответы [ 2 ]

1 голос
/ 30 января 2020

Это не вопрос программирования, а вот объяснение:

Есть 6 функций, поэтому a1 * x1 + a2 * x2 .. + a6 * x6 составит 6 тета. Теперь их квадраты как особенности, поэтому a7 * x1 ^ 2 + a8 * x2 ^ 2 + .. + a12 * x6 ^ 2 сделают еще 6 тэты. Теперь такие комбинации, как x1 * x2 и т. Д., Будут составлять 6C2 thetas ie 15. Также, наконец, начало координат смещает theta a0, итого всего: 1 + 12 + 15 = 28 thetas

1 голос
/ 30 января 2020

Вы забываете, что Polynomial regression также использует перекрестные произведения между переменными, а не только квадраты переменных. Когда вы используете fit для полинома, вы работаете не только с переменными grade 1 и grade 2, но и с перекрестными произведениями:

В случае регрессии с двумя переменными (X1, X2), вы ожидаете иметь 5 коэффициентов:

Y = m1 * x1 + m2 * x2 + m3 * x1 ** 2 + m4 * x2 ** x2 + m5 * x1 * x2

Кроме того, в вашем случае 6 переменных есть 16 возможных комбинаций между переменными. Учитывая, что у вас есть 6 переменные класса 1, 6 переменные степени 2 и комбинация 15 между ними, а также базовый параметр: 6 + 6 + 15 + 1 = 28.

...