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: основание колеса, длина, ширина, высота, снаряженный вес, размер двигателя, отверстие, штрих, коэффициент сжатия, мощность, пиковая частота вращения, город-mpg и шоссе-mpg. В отверстии переменных и штрихе отсутствуют четыре значения в строках 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

Ортогональная 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

Количество возвращаемых основных компонентов, заданное как целое значение, меньше ранга данных. Максимально возможный ранг - min (n, p), где n - количество наблюдений и p - количество переменных. Однако, если данные коррелируются, ранг может быть меньше, чем min (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'Level of 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=WxT+μ+ε,

где y - вектор-строка наблюдаемой переменной, x - вектор-строка латентных переменных, а ε - термин изотропной ошибки. ε Гауссов со средним нулем и ковариацией v * I (k), где v - остаточное отклонение. Здесь k должно быть меньше ранга, чтобы остаточное отклонение было больше 0 (v > 0). Стандартный анализ основного компонента, где остаточное отклонение равно нулю, является ограничивающим случаем PPCA. Наблюдаемые переменные, y, являются условно независимыми, учитывая значения латентных переменных, x. Таким образом, латентные переменные объясняют корреляции между переменными наблюдения и ошибкой, объясняя изменчивость, уникальную для конкретного y i. Матрица p -by - k W связывает переменные латента и наблюдения, и векторная μ позволяет модели иметь ненулевое среднее. 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 Algorithms for PCA and SPCA». В работе Конференции 1997 года по усовершенствованиям в области нейронных систем обработки информации. Vol.10 (NIPS 1997), Кембридж, Массачусетс, США: MIT Press, 1998, pp. 626-632.

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

Введенный в R2013a