0

Я не уверен, правильно ли применяю PCA или нет! У меня есть функции p и n наблюдений (экземпляры). Я помещаю их в nxp-матрицу X. Я выполняю среднюю нормировку и получаю нормированную матрицу B. Я вычисляю собственные значения и собственные векторы матрицы ковариации pxp C = (1/(n-1)) B * .B, где * означает сопряженная транспозиция.Как использовать анализ основных компонентов (PCA) для ускорения обнаружения?

Собственные векторы, соответствующие нисходящим упорядоченным собственным значениям, находятся в матрице pxp E. Предположим, я хочу уменьшить количество атрибутов от p до k. Я использую уравнение X_new = B.E_reduced, где E_reduced создается, выбирая первые k столбцов E. Вот мои вопросы:

1) Должен ли он быть X_new = B.E_reduced или X_new = X.E_reduced?

2) Должен ли я повторять приведенные выше расчеты на этапе тестирования? Если фаза тестирования похожа на фазу обучения, то ускорение не достигается, потому что я должен рассчитать все функции p для каждого экземпляра на этапе тестирования, а PCA делает алгоритм более медленным из-за собственных расходов на вычисление собственных векторов.

3) После применения PCA я заметил, что точность уменьшилась. Связано ли это с числом k (I set k = p/2) или тем фактом, что я использую линейный PCA вместо ядра PCA? Каков наилучший способ выбрать число k? Я читал, что я могу найти отношение суммирования k собственных значений по суммированию всех собственных значений и принять решение на основе этого отношения.

ответ

0

Обычно вы применяете умножение к центрированным данным, поэтому ваши проецируемые данные также центрируются.

Никогда не перезапускайте PCA во время тестирования. Только usenit на данных тренировки, и держите вектор вектора и проекции сдвига. Вам нужно применить ровно та же проекция, что и во время тренировки, а не перепрограммировать новую проекцию.

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

+0

Проекционная матрица - матрица B, я прав? Что такое вектор сдвига? Итак, я получаю вектор 1xp y для тестового экземпляра. Как проецировать вектор y? Я не использовал масштабирование по корням собственных значений, не могли бы вы рассказать об этом? По способу, вы имеете в виду метод классификации? – user5388874

+0

Обычно можно построить матрицу проекции по-разному, включая коэффициенты масштабирования. Смещение сдвига - это вектор, используемый для центрирования, поэтому вы выполняете операцию B (x-mu). –