Добро пожаловать назад.

Предыстория того, что именно мы здесь делаем, находится здесь.

Теперь двинемся вперед.

Обратное устранение

Мы будем отбирать компоненты на основе метода обратного исключения.

Что такое обратное исключение? Это метод сохранения только тех функций, которые важны для набора данных, т. Е. С учетом того, что эти функции вносят существенные изменения в зависимую переменную.

Вот как работает этот алгоритм:

  1. Выберите уровень значимости.
  2. Совместите модель со всеми функциями.
  3. Проверяйте p-значения различных функций с помощью функции summary ().
  4. Если значение p выше уровня значимости, удалите эту функцию.
  5. Повторяйте шаги 2–4 с сокращенными функциями до тех пор, пока не останутся только функции, имеющие p-значения ≤ уровня значимости.

Уровень значимости и p-значение

Таким образом, уровень значимости - это количество изменений, которые функция повлияет на конечный результат, т.е. насколько важна эта функция и насколько она влияет на конечный результат. Обычно мы принимаем 5% / 0,05 уровень значимости по умолчанию.

p-значение относится к гипотезе уровня значимости.

Допустим, у вас есть друг, который говорит, что функция абсолютно бесполезна. (это называется нулевой гипотезой). Чем выше значение p-value, тем больше он верен, и наоборот.

p-значение изменяется от 0 до 1.

Скажем, столбец 1 имеет p-значение 0,994, нулевая гипотеза верна, т.е. этот столбец не вносит заметных изменений в вывод и может быть легко удален без каких-либо последствий.

Теперь столбец 2 имеет p-значение 0,001, нулевая гипотеза ложна, т.е. обеспечивает очень существенное изменение вывода.

Где мы проводим черту того, что является значимым или нет? Вот тут-то и появляется уровень значимости.

В нашем случае мы не будем рассматривать p-значения выше 0,05.

Код:

# Fitting Simple Linear Regression to the Training set
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
# Predicting the Test set results
y_pred = regressor.predict(X_test)
#adding a column of ones for b0x0
X = np.append(arr = np.ones((50,1)).astype(int), values = X, axis = 1)
#preparing for the backward elimination for having a proper model
import statsmodels.formula.api as sm

Объяснение кода:

Приведенный выше блок кода просто обучает набор данных в линейной регрессии. Добавлен b0x0, поскольку это будет первый столбец с характеристиками. С,

y = mx + c or

y = b0x0 + b1x1

В основном это столбец из единиц. Следующим шагом будет импорт модуля statsmodel.formula.api как sm.

#creating matrix of features by backward elimination
X_opt = X[:, [0, 1, 2, 3, 4, 5]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()

Удаление наивысшего p-значения (x2 или 2-й столбец) и переписывание кода.

X_opt = X[:, [0, 1, 3, 4, 5]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()

Удаление наивысшего p-значения (x1 или первый столбец) и переписывание кода.

X_opt = X[:, [0, 3, 4, 5]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()

Удаление наивысшего p-значения (x3 или 4-й столбец) и переписывание кода.

X_opt = X[:, [0, 3, 5]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()

Теперь, когда нам нужно принять решение, мы видим, что x2 или 5-й столбец имеет p-значение 0,06 или 6%. Это довольно близко к уровню значимости 5%, поэтому мы не совершенно уверен, что удаление будет хорошей идеей.

В случае сомнений мы проверим скорректированные значения R-квадрата для большей точности.

Текущая корректировка. значение r-квадрата: 94,8%

Удаление наивысшего p-значения (x2 или 5-й столбец) и переписывание кода.

X_opt = X[:, [0, 3]]
regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
regressor_OLS.summary()

Новая корректировка. значение r-квадрата: 94,5%

Мы видим, что наша точность уменьшилась, поэтому мы сохраним предыдущие столбцы. Таким образом, соответствующие столбцы в этом наборе данных - это 3-й и 5-й столбцы, и поэтому мы можем удалить все остальные столбцы без какого-либо снижения точности модели.

Ну что ж, на данный момент все.

До свидания.