Как использовать анализ главных компонентов для логистической регрессии - PullRequest
0 голосов
/ 04 октября 2018

Я заинтересован в использовании логистической регрессии для классификации оперного пения (n = 100 аудиофайлов) из неоперного пения (n = 300 аудиофайлов) (просто пример).У меня есть несколько функций, которые я могу использовать (например, MFCC, высота тона, энергия сигнала).Я хотел бы использовать PCA для уменьшения размерности, в результате чего отбрасываются «наименее важные переменные».У меня вопрос, должен ли я делать свой PCA на всем моем наборе данных (но опере и не опере)?Потому что, если я это сделаю, разве это не отбросит «наименее важные переменные» для оперы и неоперы, вместо того, чтобы отбрасывать переменные, наименее важные для идентификации оперы?

1 Ответ

0 голосов
/ 05 октября 2018

Краткий ответ:

Вы должны провести PCA для всех данных.

Не такой короткий ответ:

  1. Сначала объедините выборки из обоих классов.
  2. Затем разделите ваши данные в поезде и протестируйте.(наборы поездов и тестов должны содержать данные обоих классов)
  3. Используйте данные своего поезда, чтобы соответствовать вашей модели PCA
  4. Примените преобразование PCA, которому вы обучались (3), как для поезда, так и для тестового набора
  5. Обучите и протестируйте свою модель логистической регрессии по прогнозируемым наборам данных

Длинный ответ:

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

Таким образом, если ваши данные имеют N_Feats, вы можете рассматривать PCA как матрицу измерения N_Feats x Projection_size, где Projection_size < N_Feats, которую вы умножаете на свои данные, чтобы получить проекцию более низкого измерения

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

Если вы думаете с точки зрения проекций, нет смысла иметь 2 разных проекции для каждого класса.Зачем?Есть две причины:

  1. Если у вас есть два PCA по одному для каждого класса, когда вы захотите протестировать свою модель, вы не будете знать, какой PCA вы должны подать для каждого образца данных, если вы не посмотрите натестовые этикетки.Это нереальная ситуация, потому что, если вы уже знаете метки, вам вообще не нужен классификатор.Таким образом, если вы сделаете это, вы получите высокую производительность, потому что вы вводите метку косвенно на входе вашего классификатора.
  2. Если у вас есть два PCA, координаты проецируемых образцов не будут иметь одинакового значения в зависимости от класса.Это все равно, что тренировать классификатор на двух совершенно разных источниках данных, имеющих одинаковое измерение.Как тренировка логистической регрессии, чтобы отличить мышей от слона, затем дать 1 характеристику для мышей, которая является весом, и 1 характеристику для слонов, которая является размером.Модель логистической регрессии даст вам выход, потому что численно решение может быть вычислено.Но это не имеет смысла с точки зрения методологии.
...