Часткова найменша регресія квадратів у R: чому ПЛС на стандартизованих даних не еквівалентна максимальній кореляції?


12

Я дуже новий в часткових найменших квадратиках (PLS) і намагаюся зрозуміти вихід R функції plsr()в plsпакеті. Давайте змоделюємо дані та запустимо PLS:

library(pls)
n <- 50
x1 <- rnorm(n); xx1 <- scale(x1) 
x2 <- rnorm(n); xx2 <- scale(x2)
y <- x1 + x2 + rnorm(n,0,0.1); yy <- scale(y)
p <- plsr(yy ~ xx1+xx2, ncomp=1)

Я очікував, що наступні числа іab

> ( w <- loading.weights(p) )

Loadings:
    Comp 1
xx1 0.723 
xx2 0.690 

               Comp 1
SS loadings       1.0
Proportion Var    0.5
> a <- w["xx1",]
> b <- w["xx2",]
> a^2+b^2
[1] 1

обчислюються з метою максимального використання

> cor(y, a*xx1+b*xx2)
          [,1]
[1,] 0.9981291

але це не зовсім так:

> f <- function(ab){
+ a <- ab[1]; b <- ab[2]
+ cor(y, a*xx1+b*xx2)
+ }
> optim(c(0.7,0.6), f, control=list(fnscale=-1))
$par
[1] 0.7128259 0.6672870

$value
[1] 0.9981618

Це чисельна помилка чи я неправильно розумію природу і ?ab

Я також хотів би знати, що це за коефіцієнти:

> p$coef
, , 1 comps

           yy
xx1 0.6672848
xx2 0.6368604 

EDIT : Тепер я бачу, що p$coefтаке:

> x <- a*xx1+b*xx2
> coef(lm(yy~0+x))
        x 
0.9224208 
> coef(lm(yy~0+x))*a
        x 
0.6672848 
> coef(lm(yy~0+x))*b
        x 
0.6368604 

Тому я думаю, що я маю рацію щодо природи і .ab

EDIT: З огляду на коментарі @chl, я вважаю, що моє питання недостатньо чітке, тому дозвольте надати більше деталей. У моєму прикладі є вектор відповідей та двоколонкова матриця предикторів, і я використовую нормалізовану версію of та нормалізовану версію of (по центру та розділеній на стандартні відхилення). Визначення першого компонента PLS є з і вибраними для того, щоб мати максимальне значення внутрішнього продукту .YXY~YX~Xt1t1=aX~1+bX~2abt1,Y~Отже, це еквівалентно максимальному співвідношенню між та , чи не так?t1Y


2
Регресія PLS максимально збільшує показники коефіцієнтів (які обчислюються як добуток вихідних даних з коваріацією навантажувачів) , а не кореляцією (як це робиться в Canonical Correlation Analysis). У plsцьому документі JSS є хороший огляд пакету та регресії PLS .
chl

1
Оскільки всі вектори центрировані та нормалізовані, коваріація є кореляцією, чи не так? Вибачте, але папір JSS занадто багато технічної для початківця.
Стефан Лоран

Взагалі, існує асиметричний процес дефляції (в результаті регресії лінійної комбінації одного блоку на лінійну комбінацію іншого), яка дещо ускладнює речі. Я дав деяку схематичну картину у цій відповіді . Ерве Абді дав деякий загальний огляд регресії PLS, і Метод дослідження часткових найменших квадратів (PLS) Вегеліна теж досить корисний. У цей момент я, мабуть, повинен перетворити всі ці коментарі на відповідь ...
chl

У моєму прикладі є вектор відповідей та двоколонкова матриця предикторів, і я використовую нормалізовану версію of та нормалізовану версію of (по центру та розділеній на стандартні відхилення). Моє визначення першого компонента PLS - з і вибраними для того, щоб мати максимальне значення скалярного продукту . Хіба це не гарне визначення? YXY~YX~Xt1t1=aX~1+bX~2abt1,Y~
Стефан Лоран

Вибачте, @ Stéphane, тому що мої коментарі вище не враховували той факт, що ви вимагали лише один компонент (тому дефляція тут не відіграє критичної ролі). Однак, здається, що ваша функція оптимізації не нав'язує одиничні норми вагових векторів, такі, що кінці . (btw, дасть вам більше інформації про те, що таке "коефіцієнти", але ви вже виявили це, мабуть.)a2+b21?coef.mvr
chl

Відповіді:


17

Регресія PLS спирається на ітеративні алгоритми (наприклад, NIPALS, SIMPLS). Ваш опис основних ідей правильний: ми шукаємо один (PLS1, одна змінна відповідь / кілька предикторів) або два (PLS2, з різними режимами, множинні змінні відповіді / декілька предикторів) вектор (и) ваг, (і ) , скажімо, для формування лінійних комбінацій (-ів) вихідної змінної (-ів) такої, що коваріація між Xu та Y (Yv, для PLS2) максимальна. Зосередимось на витягуванні першої пари ваг, пов'язаних з першим компонентом. Формально критерій оптимізації читає У вашому випадку є універсальним, тому він становить максимізацію uv

maxcov(Xu,Yv).(1)
Y
cov(Xu,y)Var(Xu)1/2×cor(Xu,y)×Var(y)1/2,st.u=1.
Оскільки не залежить від , ми максимізуємо . Розглянемо , де дані стандартизовані індивідуально (я спочатку помилився з масштабуванням вашої лінійної комбінації замість та окремо!), Так що ; однак і залежить від . На закінчення, максимальне співвідношення між латентною складовою та змінною відповіді не дасть однакових результатівVar(y)uVar(Xu)1/2×cor(Xu,y)X=[x_1;x_2]x1x2Var(x1)=Var(x2)=1Var(Xu)1u.

Я повинен подякувати Артуру Тененхаузу, який вказав на мене в правильному напрямку.

Використання одиничних векторів ваги не є обмежуючим, і деякі пакети ( pls. regressionу plsgenomics , засновані на коді з попереднього пакета Wehrens pls.pcr) повертають нестандартні вектори ваги (але з прихованими компонентами, які все ще є нормою 1), якщо це вимагається. Але більшість пакетів PLS поверне стандартизовані , включаючи той, який ви використовували, зокрема ті, що реалізують алгоритм SIMPLS або NIPALS; Я знайшов хороший огляд обох підходів у презентації Баррі М. Уайза, регрес властивостей часткових найменших квадратів (PLS) та відмінності між алгоритмами , але хіміометрієюuвіньєтка також пропонує хорошу дискусію (с. 26-29). Особливо важливим є також той факт, що більшість підпрограм PLS (принаймні тієї, яку я знаю в R) передбачають, що ви надаєте нестандартні змінні, оскільки центрирування та / або масштабування обробляються внутрішньо (це особливо важливо при перехресній валідації, наприклад, ).

Враховуючи обмеження , вектор виявляєтьсяuu=1u

u=XyXy.

Використовуючи невелике моделювання, його можна отримати наступним чином:

set.seed(101)
X <- replicate(2, rnorm(100))
y <- 0.6*X[,1] + 0.7*X[,2] + rnorm(100)
X <- apply(X, 2, scale)
y <- scale(y)

# NIPALS (PLS1)
u <- crossprod(X, y)
u <- u/drop(sqrt(crossprod(u)))         # X weights
t  <- X%*%u
p <- crossprod(X, t)/drop(crossprod(t)) # X loadings

Ви можете порівняти вищезазначені результати ( u=[0.5792043;0.8151824]зокрема) з тим, що давали б R-пакети. Наприклад, з допомогою NIPALS з хемометрика пакета (інша реалізація , який я знаю , що можна знайти в mixOmics пакеті), ми отримаємо:

library(chemometrics)
pls1_nipals(X, y, 1)$W  # X weights [0.5792043;0.8151824]
pls1_nipals(X, y, 1)$P  # X loadings

Аналогічні результати будуть отримані з plsrалгоритмом PLS ядра за замовчуванням:

> library(pls)
> as.numeric(loading.weights(plsr(y ~ X, ncomp=1)))
[1] 0.5792043 0.8151824

У всіх випадках ми можемо перевірити, що має довжину 1.u

За умови, що ви зміните свою функцію, щоб оптимізувати функцію, яка читається

f <- function(u) cov(y, X%*%(u/sqrt(crossprod(u))))

і нормалізуючись uзгодом ( u <- u/sqrt(crossprod(u))), ви повинні бути ближче до вищевказаного рішення.

Вказане : Оскільки критерій (1) еквівалентний може бути знайдений як лівий сингулярний вектор від SVD відповідає найбільшому власному значенню:

maxuXYv,
uXY
svd(crossprod(X, y))$u

У більш загальному випадку (PLS2) спосіб узагальнити вищесказане - сказати, що перші канонічні вектори PLS є найкращим наближенням матриці коваріації X і Y в обох напрямках.

Список літератури

  1. Тененхаус, М (1999). L'approche PLS . Резюме аплікації статистики , 47 (2), 5-40.
  2. ter Braak, CJF та de Jong, S (1993). Об'єктивна функція часткової регресії найменших квадратів . Журнал хіміометрії , 12, 41–54.
  3. Абді, Н (2010). Часткова найменша регресія квадратів та проекція на латентну регресію структури (PLS Regression) . Міждисциплінарні огляди Вілі: обчислювальна статистика , 2, 97-106.
  4. Boulesteix, AL та Strimmer, K (2007). Часткові найменші квадрати: універсальний інструмент для аналізу великомірних геномних даних . Брифінги з біоінформатики , 8 (1), 32-44.

Спасибі гл. Я прочитаю Вашу відповідь, коли це можливо (і обов'язково підтверджую та натискайте галочку!)
Stéphane Laurent

Я щойно прочитав вашу відповідь - вітаю і дуже дякую.
Стефан Лоран
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.