Предположим, вы хотите выполнить следующую регрессию:
y ~ a + b x + c x^2
, где x
- это образец c. Лучшие коэффициенты a,b,c
рассчитываются с помощью простого матричного исчисления. Сначала обозначим X = [1 | X | X^2]
матрицу с N строками, где N - количество выборок. Первый столбец представляет собой столбец 1 с, второй столбец представляет собой столбец значений x_i
, для всех выборок i, третий столбец представляет собой столбец значений x_i^2
для всех выборок i. Обозначим через B следующий вектор-столбец B=[a b c]^T
Если Y - вектор-столбец из N целевых значений для всех выборок i, мы можем записать регрессию в виде
y ~ X B
i
-ая строка это уравнение равно y_i ~ [1 x_i x^2] [a b c]^t = a + b x_i + c x_i^2
.
Цель обучения регрессии - найти B=[a b c]
такой, чтобы X B
был как можно ближе к y
.
Если вы не добавите столбец 1
, вы предполагаете, что априори a=0
, что может быть неверно.
На практике, когда вы пишете Python код, и вы используете PolynomialFeatures
вместе с sklearn.linear_model.LinearRegression
, последний по умолчанию заботится о добавлении столбца 1 с (поскольку в LinearRegression
параметр fit_intercept
по умолчанию True
), так что вы не ' Также нужно добавить его в PolynomialFeatures
. Поэтому в PolynomialFeatures
обычно хранится include_bias=False
.
Ситуация меняется, если вы используете statsmodels.OLS
вместо LinearRegression