Обратное исключение на больших наборах данных в python - PullRequest
1 голос
/ 30 января 2020

Я прошел онлайн-курс, где инструктор объяснил обратное исключение, используя набор данных (50,5), где вы удаляете столбцы вручную, просматривая их p-значения.

 import statsmodels.api as sm
 X = np.append(arr = np.ones((2938, 1)).astype(int), values = X, axis = 1)
 X_opt = X[:, [0,1,2,3,4,5]]
 regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
 regressor_OLS.summary()

 # Second Step
 X_opt = X[:, [0,1,,3,4,5]]
 regressor_OLS = sm.OLS(endog = y, exog = X_opt).fit()
 regressor_OLS.summary() 
 # and so on

Теперь во время тренировки на большой набор данных, такой как (2938, 214), который у меня есть, должен ли я сам удалить все столбцы? Потому что это много работы, или есть какой-то алгоритм или способ сделать это.

Это может быть глупый вопрос, но я новичок в машинном обучении, поэтому любая помощь приветствуется. Спасибо

1 Ответ

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

То, что вы пытаетесь сделать, называется "Eliminatio рекурсивного свойства", для краткости RFE.

Пример из sklearn.feature_selection.RFE:

from sklearn.datasets import make_friedman1
from sklearn.feature_selection import RFE 
from sklearn.svm import SVR 

X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
estimator = SVR(kernel="linear")
selector = RFE(estimator, 5, step=1)
selector = selector.fit(X, y)

Это устранит функции, использующие SVR одну за другой, пока не останется только 5 самое важное. Вы можете использовать любой алгоритм, который обеспечивает feature_importances_ член объекта.

Когда дело доходит до p-values, вы можете исключить все значения, превышающие пороговое значение (при условии, что нулевая гипотеза о том, что этот коэффициент не имеет значения, например, равен нулю), но см. ниже.

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

...