Выбор функции на модели керас - PullRequest
0 голосов
/ 06 мая 2018

Я пытался найти лучшие функции, которые доминируют в выводе моей регрессионной модели. Вот мой код.

seed = 7
np.random.seed(seed)
estimators = []
estimators.append(('mlp', KerasRegressor(build_fn=baseline_model, epochs=3,
                           batch_size=20)))
pipeline = Pipeline(estimators)
rfe = RFE(estimator= pipeline, n_features_to_select=5)
fit = rfe.fit(X_set, Y_set)

Но я получаю следующую ошибку во время выполнения.

RuntimeError: The classifier does not expose "coef_" or "feature_importances_" attributes

Как преодолеть эту проблему и выбрать лучшие функции для моей модели? Если нет, могу ли я использовать алгоритмы, такие как LogisticRegression (), предоставляемые и поддерживаемые RFE в Scikit, для решения задачи поиска лучших функций для моего набора данных?

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Предложение:

Выполните алгоритм RFE для алгоритма на основе sklearn, чтобы определить важность функции. Наконец, вы используете наиболее важные наблюдаемые функции для обучения вашего алгоритма на основе Keras.

К вашему вопросу: Стандартизация не требуется для логистической регрессии

0 голосов
/ 06 мая 2018

Я предполагаю, что ваша модель Keras - это некая нейронная сеть. А с NN вообще трудно понять, какие входные функции актуальны, а какие нет. Причина этого заключается в том, что каждый входной объект имеет несколько коэффициентов, которые связаны с ним - каждый соответствует одному узлу первого скрытого слоя. Добавление дополнительных скрытых слоев усложняет определение степени влияния входного объекта на окончательный прогноз.

С другой стороны, для линейных моделей это очень просто, поскольку каждый признак x_i имеет соответствующий вес / коэффициент w_i, а его величина напрямую определяет, насколько сильно он влияет на прогнозирование (при условии, что характеристики, конечно, масштабируются).

Оценщик RFE (рекурсивное исключение объектов) предполагает, что ваша модель прогнозирования имеет атрибут coef_ (линейные модели) или feature_importances_ (древовидные модели), который имеет длину входных объектов и представляет их релевантность (в абсолютном выражении). условия).

Мое предложение:

  1. Выбор элемента : (Вариант a) Запустите RFE на любой линейной / древовидной модели, чтобы уменьшить количество элементов до некоторого требуемого числа n_features_to_select. (Вариант б) Используйте регуляризованные линейные модели, такие как лассо / эластичная сеть, которые обеспечивают разреженность. Проблема в том, что вы не можете напрямую установить фактическое количество выбранных функций. (Вариант c) Используйте любую другую технику выбора функций из здесь .
  2. Нейронная сеть : Используйте только функции из (1) для вашей нейронной сети.
...