processpca

Обработайте столбцы матрицы с анализом основных компонентов

Синтаксис

[Y,PS] = processpca(X,maxfrac)
[Y,PS] = processpca(X,FP)
Y = processpca('apply',X,PS)
X = processpca('reverse',Y,PS)
name = processpca('name')
fp = processpca('pdefaults')
names = processpca('pdesc')
processpca('pcheck',fp);

Описание

processpca обрабатывает матрицы с помощью анализа основных компонентов так, чтобы каждая строка была некоррелирована, строки были в порядке суммы, которую они вносят в общее изменение, и строки, чей вклад в общее изменение меньше maxfrac удаляются.

[Y,PS] = processpca(X,maxfrac) принимает X и необязательный параметр,

X

N-by- Q матрица

maxfrac

Максимальная доля отклонения для удаленных строк (по умолчанию 0)

и возвращает

Y

M-by- Q матрица с N - M удалены строки

PS

Настройки процесса, которые позволяют последовательно обрабатывать значения

[Y,PS] = processpca(X,FP) принимает параметры как struct: FP.maxfrac.

Y = processpca('apply',X,PS) возвращает Y, заданные X и настройки PS.

X = processpca('reverse',Y,PS) возвращает X, заданные Y и настройки PS.

name = processpca('name') возвращает имя этого метода процесса.

fp = processpca('pdefaults') возвращает структуру параметра процесса по умолчанию.

names = processpca('pdesc') возвращает описание параметров процесса.

processpca('pcheck',fp); выдает ошибку, если какой-либо параметр недопустим.

Примеры

Вот как форматировать матрицу с независимой строкой, коррелированной строкой и полностью избыточной строкой так, чтобы ее строки были некоррелированы, а избыточная строка была удалена.

x1_independent = rand(1,5)
x1_correlated = rand(1,5) + x1_independent;
x1_redundant = x1_independent + x1_correlated
x1 = [x1_independent; x1_correlated; x1_redundant]
[y1,ps] = processpca(x1)

Затем примените те же параметры обработки к новым значениям.

x2_independent = rand(1,5)
x2_correlated = rand(1,5) + x1_independent;
x2_redundant = x1_independent + x1_correlated
x2 = [x2_independent; x2_correlated; x2_redundant];
y2 = processpca('apply',x2,ps)

Противоположная обработка y1 чтобы получить x1 снова.

x1_again = processpca('reverse',y1,ps)

Подробнее о

свернуть все

Уменьшите входную размерность, используя processpca

В некоторых ситуациях размерность входного вектора велика, но компоненты векторов сильно коррелируются (избыточны). В этой ситуации полезно уменьшить размерность входных векторов. Эффективной процедурой для выполнения этой операции является анализ основного компонента. Этот метод имеет три эффекта: он ортогонализует компоненты входных векторов (так, что они некоррелированы друг с другом), он упорядочивает получившиеся ортогональные компоненты (основные компоненты) так, чтобы те с наибольшей вариацией оказались на первом месте, и он устраняет те компоненты, которые вносят наименьший вклад в изменение в наборе данных. Следующий код иллюстрирует использование processpca, который выполняет анализ основного компонента с помощью настройки обработки maxfrac of 0.02.

[pn,ps1] = mapstd(p);
[ptrans,ps2] = processpca(pn,0.02);

Входные векторы сначала нормированы, используя mapstd, так что они имеют нулевое среднее и отклонение единства. Это стандартная процедура при использовании основных компонентов. В этом примере второй аргумент перешел к processpca составляет 0,02. Это означает, что processpca устраняет основные компоненты, которые вносят менее 2% в общее изменение в наборе данных. Матрица ptrans содержит преобразованные входные векторы. Структура параметров ps2 содержит матрицу преобразования основного компонента. После обучения сети эти настройки должны использоваться для преобразования любых будущих входов, которые применяются к сети. Он эффективно становится частью сети, как и веса и смещения сети. Если вы умножаете нормированные входные векторы pn по матрице преобразования transMat, вы получаете преобразованные входные векторы ptrans.

Если processpca используется для предварительной обработки набора обучающих данных данных, затем всякий раз, когда обученная сеть используется с новыми входами, следует предварительно обработать их с помощью матрицы преобразования, которая была вычислена для набора обучающих данных, используя ps2. Следующий код применяет новый набор входов к уже обученной сети.

pnewn = mapstd('apply',pnew,ps1);
pnewtrans = processpca('apply',pnewn,ps2);
a = sim(net,pnewtrans);

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

Анализ основного компонента не является частью обработки по умолчанию для feedforwardnet. Добавить его можно следующей командой:

net.inputs{1}.processFcns{end+1} = 'processpca';

Алгоритмы

Значения в строках, элементы которых не все одинаковые значения, установлены в

y = 2*(x-minx)/(maxx-minx) - 1;

Значения в строках с одним и тем же значением устанавливаются равными 0.

См. также

| |

Введенный в R2006a