Вопрос для начинающих: Эффект трансформации целей в регрессионной модели - PullRequest
0 голосов
/ 23 декабря 2018


Я новичок в области обработки данных, и я работал с Keras LSTM, но безуспешно.И вычисление оценки r2 каждый раз получает 0.0.
Итак, после некоторого поиска в Google я нашел приведенный ниже пример scikit-learn [1], и у меня есть новичок в области обработки данных, изо всех сил пытающийся понять следующие пункты:

  1. Почему они применили exp и log1p?
  2. Существует ли способ проверки гипотезы в python, чтобы узнать, какое преобразование я должен применить к своим данным, чтобы получить лучшие результаты в LSTM?
  3. Почему они применили его ко всему набору данных, а затем разделили для обучения и тестирования?В мысли, порядок должен сохранить функцию преобразования и использовать его позже в тесте?(не уверен, как это сделать в этом случае)


[1] https://scikit -learn.org / stable / auto_examples / compose / plot_transformed_target.html # sphx-glr-Скачать-авто-примеры-Compose-участок трансформированных-мишень-ру

1 Ответ

0 голосов
/ 07 января 2019

Это очень широкие вопросы, но есть кое-что, что, надеюсь, поможет вам в этом:

Почему они применили exp и log1p?

Документация, которую вы связалиупоминает это:

Генерируется синтетическая проблема случайной регрессии.Цели y изменяются путем: (i) перевода всех целей таким образом, чтобы все записи были неотрицательными, и (ii) применения экспоненциальной функции для получения нелинейных целей, которые нельзя подогнать с помощью простой линейной модели.

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

Есть ли в python метод проверки способа или гипотезы, чтобы узнать, какое преобразование должноя применяю свои данные, чтобы получить лучшие результаты в LSTM?

Не существует единого размера, но обычно вы пытаетесь использовать различные преобразования (log, exp, sqrt, cubert, reverse и т. д.)..), чтобы попытаться приблизить ваши возможности к нормальному распределению.Разные модели делают разные предположения о распределении предикторов, и многие предполагают, что гауссиан (хотя некоторые устойчивы к тому, что это предположение нарушается)Таким образом, вы делаете преобразования объектов, чтобы попытаться сделать их максимально приближенными к нормальным - это не помешает иметь нормально распределенные функции.

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

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

Вы можете быть запутаны между Преобразованием объектов и Масштабированием объектов.Применение преобразования вместе или позже не будет иметь никакого значения - например, не имеет значения, будете ли вы сначала разбивать, а потом делать преобразование журнала.Они делают это для удобства, отладки и читабельности кода.

Однако функция масштабирования является совсем другой проблемой.Если вы развернете свои модели в производство, вам, вероятно, потребуется сохранить параметры \ функции масштабирования и применить их отдельно к данным по поездам \ испытаниям и производству.

...