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) берет параметры в качестве 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