exponenta event banner

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около-Q матрица

maxfrac

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

и возвращает

Y

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

PS

Параметры процесса, позволяющие согласованно обрабатывать значения

[Y,PS] = processpca(X,FP) принимает параметры как структуру: 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