Как использовать анализ основных компонентов в задачах классификации машинного обучения под наблюдением?

Я работал через концепции анализа основных компонентов в R.

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

Главный вопрос, в каком-то смысле, что теперь? Большая часть чтения, с которым я столкнулся на PCA, сразу же останавливается после выполнения вычислений, особенно в том, что касается машинного обучения. Извините за гиперболу, но я чувствую, что все согласны с тем, что техника полезна, но никто не хочет использовать ее после того, как она это сделает.

Более конкретно, вот мой реальный вопрос:

Я уважаю, что основные компоненты - это линейные комбинации переменных, с которых вы начали. Итак, как эти преобразованные данные играют роль в контролируемом машинном обучении? Как кто-то может использовать PCA как способ уменьшить размерность набора данных, и, ТОГДА, использовать эти компоненты с обучаемым учеником, скажем, SVM?

Я абсолютно смущен тем, что происходит с нашими лейблами. Как только мы окажемся в собственном пространстве, отлично. Но я не вижу никакого способа продолжать двигаться вперед с машинным обучением, если это преобразование разрушает нашу концепцию классификации (если нет какой-либо линейной комбинации "Да" или "Нет", с которой я не сталкивался!)

Пожалуйста, зайдите и поправьте меня, если у вас есть время и средства. Заранее спасибо.

2 ответа

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

Целью PCA является представление ваших данных X в ортонормированной основе W; координаты ваших данных в этом новом базисе Z, как выражено ниже:

X = ZW '

Из-за ортонормированности мы можем инвертировать W просто перенеся его и написав:

XW = Z

Теперь, чтобы уменьшить размерность, давайте выберем некоторое количество компонентов k

XW = Z

Теперь у нас есть k-мерное представление наших обучающих данных X. Теперь вы запускаете некоторый контролируемый классификатор, используя новые функции в Z.

Y = F (Z)

Ключ в том, чтобы понять, что W в некотором смысле является каноническим преобразованием из нашего пространства p-функций в пространство из k-объектов (или, по крайней мере, лучшее преобразование, которое мы могли бы найти, используя наши обучающие данные). Таким образом, мы можем поразить наши тестовые данные тем же W-преобразованием, что приведет к k-мерному набору тестовых функций:

XW = Z

Теперь мы можем использовать тот же классификатор, обученный k-мерному представлению наших обучающих данных, чтобы делать прогнозы k-мерного представления наших тестовых данных:

Y = F (Z)

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

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

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

  • Выполняя линейное преобразование, вы подразумеваете, что все компоненты выражены в эквивалентных единицах.
  • Помимо дисперсии, PCA не учитывает структуру ваших данных. Вполне может случиться, что данные разделятся по измерениям с низкой дисперсией. В этом случае классификатор не будет учиться на основе преобразованных данных.
Другие вопросы по тегам