Я столкнулся со сценарием, где у меня есть 10 сигналов на человека на 10 человек (таким образом, 100 выборок), содержащих 14000 точек данных (измерений), которые мне нужно передать в классификатор. Я хотел бы уменьшить размерность этих данных, и PCA, кажется, является способом сделать это. Тем не менее, мне удалось найти только примеры PCA, где количество образцов больше, чем количество измерений. Я использую приложение PCA, которое находит ПК с помощью SVD. Когда я передаю свой набор данных 100x14000, возвращается 101 ПК, поэтому подавляющее большинство измерений, очевидно, игнорируется. Программа указывает, что первые 6 ПК содержат 90% дисперсии.
Разумно ли предположить, что эти 101 ПК содержат практически все отклонения, а оставшиеся размеры пренебрежимо малы?
В одной из прочитанных мной статей утверждается, что, используя аналогичный (хотя и несколько более низкого качества) набор данных, чем мой, они смогли сократить 4500 измерений до 80, сохранив 96% исходной информации. Бумажные ручные волны по деталям использованного метода PCA, было доступно только 3100 образцов, и у меня есть основания полагать, что меньше образцов, чем было использовано для фактического выполнения PCA (чтобы устранить смещение из фазы классификации).
Я что-то упустил или это действительно способ использования PCA с набором данных с высокой размерностью и малым размером выборки? Любая обратная связь будет принята с благодарностью.
источник
Ответы:
Я бы посмотрел на проблему немного иначе: насколько сложную модель вы можете себе позволить, имея всего 10 субъектов / 100 образцов?
И на этот вопрос я обычно отвечаю: гораздо меньше, чем 100 компьютеров. Обратите внимание, что я работаю с данными другого типа (вибрационные спектры), поэтому все может немного отличаться. В моей области обычно используется 10, 25 или 50 компьютеров, рассчитанных по O (1000) спектрам O (10) субъектов.
Вот что я бы сделал:
Посмотрите на дисперсию, покрытую этими 100 ПК. Я обычно нахожу, что только немногие компоненты действительно вносят вклад в дисперсию в наших данных.
Я очень предпочитаю PLS в качестве предварительной обработки для классификации по сравнению с PCA, так как она намного лучше выполняет сортировку направлений, которые имеют большие отклонения, что не помогает в классификации (в моем случае это могут быть вариации фокуса, разная толщина образца). ..). По моему опыту, я часто получаю похожие классификаторы с 10 скрытыми переменными PLS или от 25 до 50 ПК.
Образцы проверки должны обрабатываться с использованием ротации PCA, рассчитанной только из обучающего набора, в противном случае проверка может (и в таких крайних случаях, которые, скорее всего, будут ваши) иметь большой перевес оптимистического смещения
Другими словами, если вы выполняете внешнюю загрузку или перекрестную проверку, предварительную обработку PCA или PLS необходимо рассчитывать для каждой комбинации поезд / набор тестов в отдельности.
источник
Если - это число точек, а - это число измерений, а то число главных компонентов с ненулевой дисперсией не может превышать (при выполнении PCA на необработанных данных) или (при выполнении PCA на центрированные данные - как обычно).N п n ≤ p N n - 1
источник
Подходя к этому под другим углом:
В PCA вы аппроксимируете ковариационную матрицу приближением -rank (то есть вы сохраняете только верхние главных компонентов). Если вы хотите изобразить это, ковариационные векторы проецируются ортогонально вниз в линейное подпространство меньшей размерности. Поскольку у вас есть только 100 точек данных, выборочная ковариация обязательно лежит в подпространстве измерения 100 (фактически, как доказывает ttnphns, 99).К К ≤
Конечно, дело в том, чтобы сохранить большие ПК и выбросить маленькие, чтобы избежать шума при установке. Вы сказали, что 6 составляют 96% дисперсии, так что это звучит хорошо. Другой метод должен был бы сделать перекрестную проверку и выяснить , как высокоК
источник