И другие программы этой серии
В этом методе проводится одновременная декомпозиция матрицы предикторов 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);
[F0, mY] = mc(Y);
и они превращаются в матрицу 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)
%PLS: calculates a PLS component.
%The output vectors are w, t, u, q and p.
%
% Choose a vector from y as starting vector u.
u = y(:, 1);
% The convergence criterion is set very high.
kri = 100;
% The commands from here to end are repeated until convergence.
while (kri > 1e - 10)
% Each starting vector u is saved as uold.
uold = u; w = (u\' * x)\'; w = w/norm(w);
t = x * w; q = (t\' * y)\'/(t\' * t);
u = y * q/(q\' * q);
% The convergence criterion is the norm of u-uold divided by the norm of u.
kri = norm(uold - u)/norm(u);
end;
% After convergence, calculate p.