В этом разделе приведены наиболее употребительные алгоритмы, используемые при анализе многомерных данных. Рассмотрены как простейшие методы преобразования данных центрирование и шкалирование, так и алгоритмы для анализа данных — PCA, PLS.
Часто при анализе требуется преобразовать исходные данные. Наиболее используемыми методами преобразования данных выступают центрирование и шкалирование каждой переменной на стандартное отклонение. В разделе 4.3 приводился код функции для центрирования матрицы. Поэтому ниже показан только код функции, которая шкалирует данные. Обратите внимание, что исходная матрица должна быть центрирована
function Xs = scaling(X) |
Наиболее популярным способом сжатия данных в многомерном анализе является метод главных компонент (PCA). С математической точки зрения PCA — это декомпозиция исходной матрицы X, т.е. представление ее в виде произведения двух матриц T и P
X = TPt + E
Матрица T называется матрицей счетов (scores) , матрица P — матрицей нагрузок (loadings), а E — матрицей остатков.
Простейший способ найти матрицы T и P — использовать SVD разложение через стандартную функцию MatLab, называемую svd.
function [T, P] = pcasvd(X)
|
Для построения PCA счетов и нагрузок, используется рекуррентный алгоритм NIPALS, который на каждом шагу вычисляет одну компоненту. Сначала исходная матрица X преобразуется (как минимум – центрируется) и превращается в матрицу E0, a=0. Далее применяют следующий алгоритм.
- 1. Выбрать начальный вектор t
- 2. pt = tt Ea / ttt
- 3. p = p / (ptp)½
- 4. t = Ea p / ptp
- 5. Проверить сходимость, если нет, то идти на 2
После вычисления очередной (a-ой) компоненты, полагаем ta=t и pa=p. Для получения следующей компоненты надо вычислить остатки Ea+1 = Ea – t pt и применить к ним тот же алгоритм, заменив индекс a на a+1.
Код алгоритма NIPALS может быть написан и самими читателями, в данном же пособии авторы приводят свой вариант. При расчете PCA, можно вводить число главных компонент (переменная numberPC). Если же не известно, сколько необходимо компонент, следует написать в командной строке [P,T] = pcanipals (X) и тогда программа задаст число компонент равным наименьшему из показателей размерности исходной матрицы X.
function [T, P] = pcanipals(X, numberPC)
|
О вычислении PCA с помощью надстройки Chemometrics рассказано в пособии Проекционные методы в системе Excel.
Самым популярным способом для многомерной калибровки является метод проекции на латентные структуры (PLS). В этом методе проводится одновременная декомпозиция матрицы предикторов X и матрицы откликов Y:
X=TPt+E Y=UQt+F T=XW(PtW)–1
Проекция строится согласованно – так, чтобы максимизировать корреляцию между соответствующими векторами X-счетов ta и Y-счетов ua. Если блок данных Y включает несколько откликов (т.е. K>1), можно построить две проекции исходных данных – PLS1 и PLS2. В первом случае для каждого из откликов yk строится свое проекционное подпространство. При этом и счета T (U) и нагрузки P (W, Q) , зависят от того, какой отклик используется. Этот подход называется PLS1. Для метода PLS2 строится только одно проекционное пространство, которое является общим для всех откликов.
Детальное описание метода PLS приведено в этой книге Для построения PLS1 счетов и нагрузок, используется рекуррентный алгоритм. Сначала исходные матрицы X и Y центрируют
[E0, mX] = mc(X); |
и они превращаются в матрицу E0 и вектор f0, a=0. Далее к ним применяет следующий алгоритм
- 1. wt = fat Ea
- 2. w = w / (wtw)½
- 3. t = Ea w
- 4. q = tt fa / ttt
- 5. u = qfa / q2
- 6. pt = tt Ea / ttt
После вычисления очередной (a-ой) компоненты, полагаем ta=t и pa=p. Для получения следующей компоненты надо вычислить остатки Ea+1 = Ea – t pt и применить к ним тот же алгоритм, заменив индекс a на a+1.
Приведем код этого алгоритма, взятый из книги
function [w, t, u, q, p] = pls(x, y)
|
О вычислении PLS1 с помощью надстройки Chemometrics Add In рассказано в пособии Проекционные методы в системе Excel.
Для PLS2 алгоритм выглядит следующим образом. Сначала исходные матрицы X и Y преобразуют (как минимум – центрируют), и они превращаются в матрицы E0 и F0, a=0. Далее к ним применяет следующий алгоритм.
- 1. Выбрать начальный вектор u
- 2. wt = ut Ea
- 3. w = w / (wtw)½
- 4. t = Ea w
- 5. qt = tt Fa / ttt
- 6. u = Fa q/ qtq
- 7. Проверить сходимость, если нет, то идти на 2
- 8. pt = tt Ea / ttt
После вычисления очередной (a-ой) PLS2 компоненты надо положить: ta=t, pa=p, wa=w, ua=u и qa=q. Для получения следующей компоненты надо вычислить остатки Ea+1 = Ea – t pt и Fa+1 = Fa – tqt и применить к ним тот же алгоритм, заменив индекс a на a+1.
Приведем код, которой также заимствован из из книги.
function [W, T, U, Q, P, B, SS] = plsr(x, y,
a)
|
О вычислении PLS2 с помощью надстройки Chemometrics Add In рассказано в пособии Проекционные методы в системе Excel.