2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Метод главных компонент для малой выборки
Сообщение08.08.2008, 09:28 
В моем исследовании стоит задача вычисления главных компонент.
Нашел более менее удобную библиотеку на C++ для PCA - OpenCV.
Моя задача стоит получить поворот исходной системы координат без удаления осей (в компонентном анализе обычно отбрасывают "неглавные" компоненты), т.е. обязательно просто поворот.

Но вот проблема в OpenCV обязательное ограничение - количество возвращаемых собственных векторов будет не больше чем размер выборки (n) в случае если размер выборки меньше чем количество осей в векторах исходной выборки (k).
Т.е. когда n>k все нормально - я получаю нужные мне k собственных векторов.
Но когда n<k OpenCV может выдасть только n собственных векторов.

Я посмотрел алгоритм вычисления главных компонент в OpenCV:
1. Центрирование данных по средним
2. Вычисление ковариционной матрицы.
3. Сингулярное разложение.

Я никак немногу понять что из этих операций наложило такое ограничение?
Могу ли я обойти такое ограничение?
Или вообще отказаться от сингулярного разложения и пользоваться другим методом.
Какой есть алгоритм который корректно может вычислить поворот системы координат даже для малой выборки?

 
 
 
 Re: Метод главных компонент для малой выборки
Сообщение08.08.2008, 09:36 
Andrey Soloduhin писал(а):
Но вот проблема в OpenCV обязательное ограничение - количество возвращаемых собственных векторов будет не больше чем размер выборки (n) в случае если размер выборки меньше чем количество осей в векторах исходной выборки (k).
Т.е. когда n>k все нормально - я получаю нужные мне k собственных векторов.
Но когда n<k OpenCV может выдасть только n собственных векторов.

А откуда их возьмётся больше?

Если формально Вы работаете в $k$-мерном пространстве, но входных данных только $n$, причем $n<k$, то фактически всё происходит лишь в соотв. не более чем $n$-мерном подпространстве. Вот оттуда собственные векторы и будут браться.

 
 
 
 Re: Метод главных компонент для малой выборки
Сообщение08.08.2008, 09:59 
ewert писал(а):
то фактически всё происходит лишь в соотв. не более чем $n$-мерном подпространстве.

А почему так получается?
Такой вопрос у меня наверно изза главной проблемы - я немогу понять идею сингулярного разложения - везде где читал непонятно написано (для меня :D).

Могу ли я дробится просто поворота системы координат?
Или какой мне метод выбрать чтобы получить поворот всей системы координат?

 
 
 
 Re: Метод главных компонент для малой выборки
Сообщение08.08.2008, 10:08 
Andrey Soloduhin писал(а):
Такой вопрос у меня наверно изза главной проблемы - я немогу понять идею сингулярного разложения - везде где читал непонятно написано (для меня :D).

Этого я тоже не могу понять. Поскольку ковариационная матрица симметрична (и даже неотрицательна), речь может идти только о приведении её к диагональному виду с помощью поворотов. Сингулярные разложения имеют смысл только в неэрмитовых случаях.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group