exponenta event banner

ppca

Вероятностный анализ основных компонентов

Описание

пример

[coeff,score,pcvar] = ppca(Y,K) возвращает коэффициенты основной компоненты для матрицы данных n-by-p Y на основе вероятностного анализа основных компонентов (PPCA). Он также возвращает баллы основного компонента, которые являются представлениями Y в пространстве главного компонента и дисперсии главного компонента, которые являются собственными значениями ковариационной матрицы Y, в pcvar.

Каждый столбец coeff содержит коэффициенты для одного главного компонента, и столбцы находятся в порядке убывания дисперсии компонента. Ряды score соответствуют наблюдениям, а столбцы - компонентам. Ряды Y соответствуют наблюдениям, а столбцы - переменным.

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

пример

[coeff,score,pcvar] = ppca(Y,K,Name,Value) возвращает коэффициенты, оценки и отклонения основных компонентов с использованием дополнительных опций для вычисления и обработки специальных типов данных, заданных одним или несколькими Name,Value аргументы пары.

Например, можно ввести начальные значения для остаточного отклонения, vили измените критерии прекращения.

пример

[coeff,score,pcvar,mu] = ppca(___) также возвращает оценочное среднее каждой переменной в Y. Можно использовать любой из входных аргументов в предыдущих синтаксисах.

пример

[coeff,score,pcvar,mu,v,S] = ppca(___) также возвращает изотропную остаточную дисперсию в v и окончательные результаты при схождении в структуре S.

Примеры

свернуть все

Загрузите образцы данных.

load fisheriris

Двойная матрица meas состоит из четырёх видов измерений на цветках, которые, соответственно, являются длиной и шириной чашелистиков и лепестков.

Ввести отсутствующие значения случайным образом.

y = meas;
rng('default'); % for reproducibility
ix = random('unif',0,1,size(y))<0.20;
y(ix) = NaN;

Сейчас около 20% данных отсутствуют, указано NaN.

Выполните вероятностный анализ основных компонентов и запросите коэффициенты и отклонения компонентов.

[coeff,score,pcvar,mu] = ppca(y,3);
coeff
coeff = 4×3

    0.3562    0.6709   -0.5518
   -0.0765    0.7120    0.6332
    0.8592   -0.1597    0.0596
    0.3592   -0.1318    0.5395

pcvar
pcvar = 3×1

    4.0914
    0.2125
    0.0617

Выполните анализ главных компонентов с использованием алгоритма чередования наименьших квадратов и запросите коэффициенты и дисперсии компонентов.

[coeff2,score2,pcvar2,mu2] = pca(y,'algorithm','als',...
'NumComponents',3);
coeff2
coeff2 = 4×3

    0.3376    0.4952    0.7406
   -0.0731    0.8609   -0.4476
    0.8657   -0.1168   -0.1233
    0.3623   -0.0086   -0.4857

pcvar2
pcvar2 = 3×1

    4.0733
    0.2652
    0.1222

Коэффициенты и дисперсии первых двух главных компонентов одинаковы.

Другим способом сравнения результатов является поиск угла между двумя пространствами, охватываемыми векторами коэффициентов.

subspace(coeff,coeff2)
ans = 0.0884

Угол между двумя пространствами довольно мал. Это означает, что эти два результата близки друг к другу.

Загрузите набор данных образца.

load imports-85

Матрица данных X имеет 13 непрерывных переменных в столбцах от 3 до 15: колесная база, длина, ширина, высота, бордюрный вес, размер двигателя, диаметр, ход, степень сжатия, лошадиная сила, пик-об/мин, город-мпг и шоссе-мпг. У переменных канала и хода отсутствуют четыре значения в рядах 56-59, а у переменных лошадиная сила и пиковая скорость вращения отсутствуют два значения в рядах 131 и 132.

Выполните вероятностный анализ главных компонентов и просмотрите первые три главных компонента.

[coeff,score,pcvar] = ppca(X(:,3:15),3);
Warning: Maximum number of iterations 1000 reached.

Измените допуск окончания для функции затрат на 0,01.

opt = statset('ppca');
opt.TolFun = 0.01;

Выполнить вероятностный анализ основных компонентов.

[coeff,score,pcvar] = ppca(X(:,3:15),3,'Options',opt);
Warning: Maximum number of iterations 1000 reached.

ppca теперь завершается до достижения максимального числа итераций, поскольку оно соответствует допуску для функции затрат.

Загрузите образцы данных.

load hald
y = ingredients;

Данные ингредиентов имеют 13 наблюдений для 4 переменных.

Введите отсутствующие значения в данные.

y(2:16:end) = NaN;

Каждое 16-е значение равно NaN. Это соответствует 7,69% данных.

Найдите первые три основных компонента данных с помощью PPCA и просмотрите восстановленные наблюдения.

[coeff,score,pcvar,mu,v,S] = ppca(y,3);
Warning: Maximum number of iterations 1000 reached.
S.Recon
ans = 13×4

    6.8536   25.8700    5.8389   59.8730
    1.0433   28.9710   14.9654   51.9738
   11.5770   56.5067    8.6352   20.5076
   11.0835   31.0722    8.0920   47.0748
    7.0679   52.2556    6.0748   33.0598
   11.0486   55.0430    9.0534   22.0423
    2.8493   70.8691   16.8339    5.8656
    1.0333   31.0281   19.6907   44.0306
    2.0400   54.0354   18.0440   22.0349
   20.7822   46.8091    3.7603   25.8081
      ⋮

Можно также реконструировать наблюдения с использованием главных компонентов и расчетного среднего.

t = score*coeff' + repmat(mu,13,1);

Загрузите данные.

load hald

Здесь, ingredients - вещественно-значная матрица переменных предиктора.

Выполните вероятностный анализ основных компонентов и коэффициенты отображения.

[coeff,score,pcvariance,mu,v,S] = ppca(ingredients,3);
Warning: Maximum number of iterations 1000 reached.
coeff
coeff = 4×3

   -0.0693   -0.6459    0.5673
   -0.6786   -0.0184   -0.5440
    0.0308    0.7552    0.4036
    0.7306   -0.1102   -0.4684

Отображение результатов алгоритма при сходимости PPCA.

S
S = struct with fields:
           W: [4x3 double]
        Xexp: [13x3 double]
       Recon: [13x4 double]
           v: 0.2372
     NumIter: 1000
    RMSResid: 0.2340
      nloglk: 149.3388

Отображение матрицы W.

S.W
ans = 4×3

    0.5624    2.0279    5.4075
    4.8320  -10.3894    5.9202
   -3.7521   -3.0555   -4.1552
   -1.5144   11.7122   -7.2564

Orthogonalizing W восстанавливает коэффициенты.

orth(S.W)
ans = 4×3

   -0.0693    0.6459    0.5673
   -0.6786    0.0184   -0.5440
    0.0308   -0.7552    0.4036
    0.7306    0.1102   -0.4684

Входные аргументы

свернуть все

Входные данные, для которых вычисляются основные компоненты, определенные как матрица n-by-p. Ряды Y соответствуют наблюдениям, а столбцы - переменным.

Типы данных: single | double

Количество возвращаемых основных компонентов, указанное как целое число, меньшее ранга данных. Максимально возможный ранг - мин (n, p), где n - число наблюдений и p - число переменных. Однако, если данные коррелированы, ранг может быть меньше, чем мин (n, p).

ppca упорядочивает компоненты на основе их отклонения.

Если K min (n, p ),ppca наборы K равно min (n, p) - 1, и'W0' усечено до min (p, n) - 1 столбец, если указать p by-p W0 матрица.

Например, можно запросить только первые три компонента на основе отклонения компонента следующим образом.

Пример: coeff = ppca(Y,3)

Типы данных: single | double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'W0',init,'Options',opt указывает, что начальные значения для 'W0' находятся в матрице init и ppca использует опции, определенные opt.

Начальное значение W в алгоритме вероятностного анализа основных компонентов, определяемое как разделенная запятыми пара, состоящая из 'W0' и матрицу p-by-k.

Типы данных: single | double

Начальное значение остаточной дисперсии, указанное как разделенная запятыми пара, состоящая из 'v0' и положительное скалярное значение.

Типы данных: single | double

Опции итераций, заданные как пара, разделенная запятыми 'Options' и структура, созданная statset функция. ppca использует следующие поля в структуре опций.

'Display'Уровень вывода на дисплей. Варианты: 'off', 'final', и 'iter'.
'MaxIter'Максимально допустимое количество шагов. Значение по умолчанию - 1000. В отличие от параметров оптимизации, достижение MaxIter значение рассматривается как сходимость.
'TolFun'Положительное целое число, указывающее допуск окончания для функции затрат. По умолчанию используется значение 1e-6.
'TolX'Положительное целое число, указывающее порог сходимости для относительного изменения элементов W. Значение по умолчанию - 1e-6.

Можно изменить значения этих полей и указать новую структуру в ppca с использованием 'Options' аргумент пары имя-значение.

Пример: opt = statset('ppca'); opt.MaxIter = 2000; coeff = ppca(Y,3,'Options',opt);

Типы данных: struct

Выходные аргументы

свернуть все

Коэффициенты главной компоненты, возвращаемые в виде матрицы p-by-k. Каждый столбец coeff содержит коэффициенты для одного главного компонента. Столбцы находятся в порядке отклонения нисходящего компонента, pcvar.

Баллы основного компонента, возвращенные в виде матрицы n-by-k. Ряды score соответствуют наблюдениям, а столбцы - компонентам.

Отклонения главных компонентов, которые являются собственными значениями ковариационной матрицы Y, возвращается в виде вектора столбца.

Оценочное среднее каждой переменной в Y, возвращенный как вектор строки.

Изотропная остаточная дисперсия, возвращаемая как скалярное значение.

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

WW при схождении.
XexpУсловное ожидание предполагаемой скрытой переменной x.
ReconРеконструированные наблюдения с использованием k главных компонентов. Это малая размерная аппроксимация входных данных Y, и равно mu + score*coeff'.
vОстаточное отклонение.
RMSResidСреднеквадратичный квадрат остатков.
NumIterЧисло счетчиков итераций.
nloglkОтрицательное значение функции логарифма.

Подробнее

свернуть все

Вероятностный анализ основных компонентов

Вероятностный анализ главных компонентов (PPCA) - это метод оценки главных осей, когда любой вектор данных имеет одно или несколько отсутствующих значений.

PPCA основан на изотропной модели ошибок. Он стремится связать p-мерный вектор наблюдения y с соответствующим k-мерным вектором скрытой (или ненаблюдаемой) переменной x, которая является нормальной со средним нулем и ковариацией I (k). Отношение:

yT=W∗xT+μ+ε,

где y - вектор ряда наблюдаемой переменной, x - вектор ряда скрытых переменных, и ε - изотропный остаточный член. λ - гауссов со средним нулем и ковариацией v * I (k), где v - остаточная дисперсия. Здесь k должно быть меньше ранга, чтобы остаточная дисперсия была больше 0 (v > 0). Стандартный анализ главных компонентов, где остаточная дисперсия равна нулю, является ограничивающим случаем PPCA. Наблюдаемые переменные, y, условно независимы, учитывая значения скрытых переменных, x. Так, скрытые переменные объясняют корреляции между переменными наблюдения и ошибка объясняет изменчивость, уникальную для конкретного yi. Матрица W p-на-k связывает скрытые и наблюдаемые переменные, и вектор λ позволяет модели иметь ненулевое среднее значение. PPCA предполагает, что в наборе данных случайным образом отсутствуют значения. Это означает, что отсутствие или отсутствие значения данных не зависит от скрытой переменной, заданной наблюдаемыми значениями данных.

В рамках этой модели

y ~ N (λ, W * WT + v * I (k)).

Отсутствует аналитическое решение в закрытой форме для W и v, поэтому их оценки определяются итеративной максимизацией соответствующего логарифма с использованием алгоритма ожидания-максимизации (EM). Этот алгоритм EM обрабатывает отсутствующие значения, рассматривая их как дополнительные скрытые переменные. При сходимости столбцы W охватывают подпространство, но не являются ортонормированными. ppca получает ортонормированные коэффициенты, coeff, для компонентов путем ортогонализации W.

Ссылки

[1] Типпинг, М. Э. и К. М. Бишоп. Вероятностный анализ основных компонентов. Журнал Королевского статистического общества. Серия B (Статистическая методология), том 61, No.3, 1999, стр. 611-622.

[2] Roweis, S. «Алгоритмы EM для PCA и SPCA». В материалах Конференции 1997 года по достижениям в области нейронных систем обработки информации. Vol.10 (NIPS 1997), Кембридж, Массачусетс, США: MIT Press, 1998, стр. 626-632.

[3] Илин, А. и Т. Райко. «Практические подходы к анализу основных компонентов при наличии отсутствующих значений». Дж. Мач. Рес.. Т. 11, август, 2010, с. 1957-2000.

Представлен в R2013a