CV удаления рекурсивных функций в Sklearn изменяется при удалении функций

Я использую модуль RFECV в sklearn, чтобы найти оптимальное количество функций для получения максимальной перекрестной проверки в 2 раза. Я использую регрессор гребня в качестве моей оценки.

rfecv = RFECV(estimator=ridge,step=1, cv=KFold(n_splits=2))
rfecv.fit(df, y)

У меня есть 5 функций в моем наборе данных, которые я стандартизировал с помощью стандартизатора.

Я буду использовать RFECV для своих данных, и он скажет, что 2 функции оптимальны. Но когда я удаляю одну из функций с самым низким коэффициентом регрессии и повторно запускаю RFECV, он теперь говорит, что 3 функции оптимальны.

Когда я продвигаюсь по всем функциям по одному (как должно делать рекурсивное средство), я обнаруживаю, что 3 на самом деле является оптимальным.

Я проверил это с другими наборами данных и обнаружил, что оптимальное количество функций меняется, когда я удаляю объекты по одному и повторно запускаю RFECV.

Я мог бы что-то упустить, но разве это не то, что RFECV должен решить? Любая дополнительная информация о RFECV приветствуется.

1 ответ

Это имеет смысл на самом деле. RFECV рекомендует определенное количество функций на основе доступных данных. Когда вы удаляете функцию, вы меняете диапазон оценки.

из документов:

# Determine the number of subsets of features by fitting across
# the train folds and choosing the "features_to_select" parameter
# that gives the least averaged error across all folds.

...

n_features_to_select = max(
    n_features - (np.argmax(scores) * step),
    n_features_to_select)

n_features_to_select используется для определения того, сколько функций следует использовать в RFE для любой конкретной итерации (в / из RFECV).

rfe = RFE(estimator=self.estimator,
          n_features_to_select=n_features_to_select,
          step=self.step, verbose=self.verbose)

И поэтому это напрямую связано с количеством функций, которые вы включаете в свой начальный шаг rfecv.fit().

Кроме того, удаление объекта с самым низким коэффициентом регрессии - не лучший способ обрезки объектов. Коэффициент отражает его влияние на зависимую переменную, а не обязательно на точность модели.

Другие вопросы по тегам