Processing math: 0%

NMST539 | Cvičenie 6

Metóda hlavných komponent | Teoretická časť

LS 2020/2021 | 06/04/21 | (online výuka)

zdrojový Rmd súbor (kódovanie UTF8)

Outline šiesteho cvičenia:

  • metóda hlavných komponent (PCA- Principal Component Analysis);
  • teoretické aspekty metódy hlavných komponent;
  • súvislosť hlavných komponent a lineárnej regresie;


Odborná literatúra:
  • Hardle, W. and Simar.L.: Applied Multivariate Statistical Analysis. Springer, 2015
  • Mardia, K., Kent, J., and Bibby, J.:Multivariate Analysis, Academic Press, 1979.




1. Metóda hlavných komponent / teoretické aspekty

Metóda hlavných komponent (PCA) je mnohorozmerná (prevažne exploratívna) štatistická metóda založena na teoretickej variančnej-kovariančnej matici náhodného vektoru \boldsymbol{X} \in \mathbb{R}^{p}. V praxi sa samozrejme metóda hlavných komponent aplikuje na základe empricikého odhadu teoretickej variančnej-kovariančnej matice, ktorý získame na základe náhodného výberu \boldsymbol{X}_1, \dots, \boldsymbol{X}_n z rovnakého rozdelenia, ako pôvodný náhodný vektor \boldsymbol{X} \in \mathbb{R}^{p}.

Jednoducho môžeme hlavné komponenty definovať ako ‘vhodné’ lineárne kombinácie pôvodných zložiek náhodneho vektoru \boldsymbol{X} = (X_1, \dots, X_p)^\top. Hlavná myšlienka spočíva v definovaní/určení \ell < p hlavných komponent (lineárnych kombinácii zložiek X_1, \dots, X_p), ktoré využijeme namiesto p \in \mathbb{N} pôvodných zložiek (tzv. redukcia dimenzionality). Nové zložky – \ell hlavných kompoment – sú v určitom zmysle najlepšie možné. Hlavné kompomenty sú orgogonálne a navyše sú usporiadané vzhľadom k postupne klesajúcej variabilite jednotlivých kompoment. V praktických úlohach často požadujeme, aby \ell \ll p, čo predstavuje výraznú redukciu pôvodnej dimenzie. Na druhej strane sa ale snažíme zachovať čo najväčšiu mieru z pôvodnej informácie.

Z formálneho hľadiska je možné hlavne komponenty definovať rôzne:

  • ortogonálne lineárne kombinácie zložiek náhodného vektoru s postupne klesajúcou variabilitou;
  • hlavné komponenty definujú najlepší lineárny podpriestor pre aproximáciu dat;
  • z geometrického hľadiska sa jedná o EIV rozklad teoretickej (alebo empirickej) variančnej-kovariančnej matice;
  • z pohľadu dat sa jedná o SVD rozklad n \times p rozmernej datovej matice;

Z pohľadu štatistika sú hlavné komponenty definované ortogonálne lineárne kombinácie pôvodných premenných (X_1, \dots, X_p)^\top v náhodnom vektore \boldsymbol{X} \in \mathbb{R}^{p}, tak aby tieto lineárne kombinácie boli vzájomne nekorelované, s nulovou strednou hodnotou a diagonálnou variančnou-kovariančnou maticou, ktorá ma na hlavnej diagonále vlastné čísla variančnej-kovariančnej matice náhodného vektoru \boldsymbol{X} \in \mathbb{R}^{p}.

V tomto zmysle sa jedná o maximalizačnú úlohu, kde prvá hlavná komponenta \boldsymbol{\delta}_1^\top \boldsymbol{X} (t.j. lineárná kombinácia zložiek vektora \boldsymbol{X} \in \mathbb{R}^{p}) je definovaná pre \boldsymbol{\delta}_1 \in \mathbb{R}^p také, že \boldsymbol{\delta}_1 = Argmax_{\boldsymbol{\{\delta};~\|\boldsymbol{\delta}\| = 1 \}} ~~Var (\boldsymbol{\delta}^\top \boldsymbol{X}). Druhá hlavná komponenta \boldsymbol{\delta}_2^\top \boldsymbol{X} je definovaná ako analogická maximalizačná uloha, ale pri dodatočnej podmienke, že sa jedná o ortogonálne lineárne kombinácie, t.j. \boldsymbol{\delta}_1^\top\boldsymbol{\delta}_2 = 0, resp. náhodné veličiny \boldsymbol{\delta}_1^\top \boldsymbol{X} a \boldsymbol{\delta}_2^\top \boldsymbol{X} sú nekorelované, t.j., že platí Cov(\boldsymbol{\delta}_1^\top \boldsymbol{X}, \boldsymbol{\delta}_2^\top \boldsymbol{X}) = 0. Na hlavné komponenty sa ale môžeme pozerať aj z geometrického pohľadu projekcií do lineárných podpriestorov a hlavne konceptu lineárnej regresie (prípadne tzv. totálne najmenších štvorocov – TLS / Total Least Squares).



2. Hlavné komponenty, ortogonálne projekcie a regresia

Nech \boldsymbol{Y} \in \mathbb{R}^n je nejaký náhodný vektor dĺžky n \in \mathbb{N} a nech \mathbb{X} predstavuje (náhodnú) maticu napr. vysvetlujúcich premenných, ktorá je typu n \times p. Vo všeobecnosti predpokládame, že p \in \mathbb{N} (väčšinou počet rôznych premenných) je menšie, ako n (väčšinou počet pozorovaní). Klasická úloha lineárnej regresie spočíva vo využití informácie obsiahnutej v matici \mathbb{X} k vhodnej aproximácii n rozmerného náhodného vektoru \boldsymbol{Y} (tzv. vektor závislej premennej) v p rozmernom lineárnom podpriestore \mathcal{L}(\mathbb{X}) – lineárnom podpriestore R^n generovanom stĺpcami matice \mathbb{X}.

Ak označíme ortogonálnu projekciu náhodného vektoru \boldsymbol{Y} do p rozmerného lineárneho podpriestoru \mathcal{L}(\mathbb{X}) ako P_{\mathbb{X}}(\boldsymbol{Y}), tak potom klasický lineárny regresný model pre vektor závislej premennej \boldsymbol{Y} a nezávisle premenné v stĺpcoch matice \mathbb{X} vo forme P_{\mathbb{X}}(\boldsymbol{Y}) = a_1 \boldsymbol{X}_1 + \dots + a_p \boldsymbol{X}_p (lineárna kombinácia stĺpcov matice \mathbb{X}) dáva najmenšiu možnú štvorcovú chybu v zmysle, že výraz

\| \boldsymbol{Y} - P_{\mathbb{X}}(\boldsymbol{Y}) \|_2^2 je minimalizovaný (pripomeňte si Gauss-Markovovu vetu pre tzv. BLUE (Best Linear Unbiased Estimate) odhad v lineárnej regresii).

Príslušná (idempotentná) projekčná matica je definovaná predpisom \mathbb{H} = \mathbb{X}(\mathbb{X}^\top \mathbb{X})^{-1}\mathbb{X}^\top = \mathbb{Q}\mathbb{Q}^\top, kde matica \mathbb{X} obsahuje vektory (v stĺpcoch) generujúce lineárný podpriestor \mathcal{L}(\mathbb{X}) resp. stĺce matice \mathbb{Q} predstavujú ortogonálnu bázu lineárneho podpriestoru \mathcal{L}(\mathbb{X}) . Samozrejme platí, že P_{\mathbb{X}}(\boldsymbol{Y}) = \mathbb{H}\boldsymbol{Y} = \mathbb{X}(\mathbb{X}^\top \mathbb{X})^{-1}\mathbb{X}^\top \boldsymbol{Y} = \mathbb{Q}\mathbb{Q}^\top \boldsymbol{Y} = P_{\mathbb{Q}}(\boldsymbol{Y})



Koncept lineárnej regresie (t.j. ortogonálnej projekcie do lineárneho podpriestoru generovaného stĺpcami matice \mathbb{X}) môže byť zobecnený na problém hľadania najlepšej ortogonálnej projekcie \boldsymbol{Y} do lineárneho podpriestoru, ktorý je generovaný stĺpcami nejakej obecnej matice \mathbb{B} typu n \times p, tak že platí \mathbb{B}^\top\mathbb{B} = \mathbb{I}.

Označme obecne takúto projekciu ako P_{\mathbb{B}}(\boldsymbol{Y}). Potom platí, že P_{\mathbb{B}}(\boldsymbol{Y}) = \mathbb{B}\mathbb{B}^\top\boldsymbol{Y}| a, navyše, lze ukázať, že zároveň platí aj

\|\boldsymbol{Y} - P_{\mathbb{\Gamma}}(\boldsymbol{Y})\|_2^2 \leq \|\boldsymbol{Y} - P_\mathbb{B}(\boldsymbol{Y})\|_2^2 kde \Gamma je matica typu n\times p ktorá obsahuje (v stĺpcoch) prvých p vlastných vektorov teoretickej variančnej-kovariančnej matice \Sigma náhodného vektoru \boldsymbol{Y} (tzv. Eckart a Young (1936) a Mirsky (1960) approximácia). Pripomeňme, že v súvislosti s konceptom lineárnej regresie – t.j. projekciou P_{\mathbb{X}}(\boldsymbol{Y}) – predpokládame vlasnosť linearity (BLUE).

V nasledujúcom príklade použijeme tri konkrétne ortogonálne projekcie náhodného vektoru \boldsymbol{Y} do lineárneho podpriestoru, ktorý je generovaný stĺpcami vhodnej matice typu n \times p. Rovnaké data – t.j. náhodný vektor \boldsymbol{Y} – použijeme pre všetky projekcie, ale lineárny podpriestor, do ktorého bude vektor projektovaný, bude zakaždým iný. Výsledné ortogonálne projekcie sa budu preto vájomne líšiť. Ktorá ortogonálna projekcia je najlepšia (a v akom zmysle)?

set.seed(1234)
x <- seq(0,1, length = 100)
y <- 0 + 2 * x + rnorm(100)

par(mfrow = c(1,3))
### regression of Y on X
plot(y ~ x, pch = 21, bg = "lightblue", xlab = "X variable", ylab = "Y variable", main = "Projection of Y onto L(X)", ylim = c(-1.5, 4))
m <- lm(y ~ x)
abline(m, col = "red", lwd = 2)

index <- c(10, 60, 80)

for (i in 1:100){
  lines(c(x[i], x[i]), c(y[i], m$fitted[i]), col = "blue", lty =2)
}


### regression of X on Y 
plot(y ~ x, pch = 21, bg = "lightblue", xlab = "X variable", ylab = "Y variable", main = "Projection of X onto L(Y)", ylim = c(-1.5, 4))
m <- lm(x ~ y)
lines((x - m$coeff[1])/m$coeff[2] ~ x, col = "red", lwd = 2)

index <- c(10, 60, 80)

for (i in 1:100){
  lines(c(x[i], m$coeff[1] + m$coeff[2] * y[i]), c(y[i], y[i]), col = "blue", lty =2)
}


### regression onto the first PC

### data standardization
means <- apply(cbind(x,y), 2, mean)
sdErs <- apply(cbind(x,y), 2, sd)
cd <- cbind((x - means[1])/sdErs[1], (y - means[2])/sdErs[2])

### first eigen vector
firstEigenVector <- eigen(cov(cd))$vectors[,1]

### projection onto the linear space generated by the first eigen vector
project2pc1 <- t(firstEigenVector) %*% t(cd)

### rotation back to the original coordinates
rotation <- as.numeric(project2pc1) %*% t(firstEigenVector)

### rescaling to the original mean/variance
rescaled <- cbind(rotation[,1] * sdErs[1] + means[1], rotation[,2] * sdErs[2] + means[2])

plot(y ~ x, pch = 21, bg = "lightblue", xlab = "X variable", ylab = "Y variable", main = "Projection onto 1.PC", ylim = c(-1.5,4), xlim = c(-0, 1))

### first PC
lines(rescaled[,2] ~ rescaled[,1], col = "red", lwd = 2)

### orthogonal projections 
for (i in 1:100){
  lines(c(x[i], rescaled[i,1]), c(y[i], rescaled[i,2]), col = "blue", lty =2)
}

Na základe predchádzajúceho príkladu môžeme obecne povedať, že pri hľadaní hlavných komponent sa dá namiesto spektrálnej dekompozície (EIV) teoretickej variančnej-kovariančnej matice náhodného vektoru \boldsymbol{Y} postupovať vrámci konceptu klasickej lineárnej regresie a iteratívnym postupom (alternáciou medzi dvoma podobnými lineárnymi regresnými úlohami) sa dopracovať k ekvivalentnému riešeniu – hlavným komponentám. Pre háhodný vektor závislej premennej \boldsymbol{Y} \in \mathbb{R}^n múžeme tieto dve úlohy formulovať následovne:

\|\boldsymbol{Y} - P_\mathbb{B}(\boldsymbol{Y})\|_2^2 = \|\boldsymbol{Y} - \mathbb{B}\mathbb{B}^\top\boldsymbol{Y}\|_2^2 = \|\boldsymbol{Y} - \mathbb{B} \boldsymbol{v}\|_2^2 = \sum_{i = 1}^{n} [Y_{i} - \boldsymbol{b}_i^\top\boldsymbol{v}]^2,

kde \boldsymbol{v} = \mathbb{B}^\top\boldsymbol{Y}, pre i = 1, \dots, n, a \boldsymbol{b}_i je príslušný řádek matice \mathbb{B}. Musíme si uvedomiť, že ani matica \mathbb{B} ani vektor \boldsymbol{v} nie sú známe (preto potrebujeme riešiť dve vzálomne alternujúce regresné problémy).

Výraz \sum_{i = 1}^{n} [Y_{i} - \boldsymbol{b}_i^\top\boldsymbol{v}]^2 budeme preto minimalizovať aj vzhľadom k neznámej ortogonálnej matici \mathbb{B} (v jednom kroku), tzn., že platí \mathbb{B}^\top\mathbb{B} = \mathbb{I} a tiež vzhľadom k neznámemu vektoru \boldsymbol{v} (v následujúcom kroku). Oba kroky dostatočne dlho alternujeme, až kým nie je dosiahnutá konvergencia.

Hlavná myšlienka samozrejme spočíva v tom, že sa snazíme nájsť najlepšiu ortogonálnu projekciu do lineárneho podpriestoru, ktorý je generovaný orgogonálnou maticou \mathbb{B}, tak, aby súčet štvorcových chýb bol najmenší možný. Z teórie lineárnej regresie vieme, že za platnosti dodatočného predpokladu linearity je najlepším odhadom práve model lineárnej regresie. V obecnom prípade (bez predpokladu linerity) ale lze získať lepšiu ortogonálnu projekciu. Ak bude matica \mathbb{B} v jednotlivých stĺpcoch obsahovať prvých p \in \mathbb{N} hlavných kompoment, tak získame najlepšiu možnú ortogonálnu projekciu náhodného vektoru \boldsymbol{Y} do p rozmerného lineárneho podpriestoru (samozrejme všetko pouze v zmysle najmenšej štvorcovej chyby).

Jednoduchý príklad alternujúcej regresie od Matíasa Salibiána Barreru.

alter.pca.k1 <- function(x, max.it = 500, eps=1e-10) {
  n2 <- function(a) sum(a^2)
  p <- dim(x)[2]
  x <- scale(x, scale=FALSE)
  it <- 0
  old.a <- c(1, rep(0, p-1))
  err <- 10*eps
  while( ((it <- it + 1) < max.it) & (abs(err) > eps) ) {
    b <- as.vector( x %*% old.a ) / n2(old.a)
    a <- as.vector( t(x) %*% b ) / n2(b)
    a <- a / sqrt(n2(a))
    err <- sqrt(n2(a - old.a))
    old.a <- a
  }
  conv <- (it < max.it)
  return(list(a=a, b=b, conv=conv))
}


set.seed(1234)
n <- 20
p <- 5
x <- matrix(rt(n*p, df=2), n, p)

Prvú hlavnú kompomentu pomocou alternujúcich lineárnych regresných modelov získame ako

alter.pca.k1(x)$a
## [1]  0.08363314 -0.95027213 -0.01427383  0.11629502 -0.27615231

Jedná sa o stĺpcový vektor matice \mathbb{B}, ktorý nam dá minimálnú štvorcovú chybu projekcie do jednorozmerného lineárneho podpriestoru, ktorý je generovaný prvým vlastnym vektorom variančnej-kovariančnej matice – čo múžeme priamo porovnať s využitím EIV alebo SVD rozkladu:

svd(cov(x))$u[,1]
## [1] -0.08363314  0.95027213  0.01427383 -0.11629502  0.27615231
eigen(cov(x))$vectors[,1]
## [1] -0.08363314  0.95027213  0.01427383 -0.11629502  0.27615231

Je nutné si uvedomiť, že rozdiel v znamienku je v tomto prípade irelevantný.



Z hľadiska praktických aplikacii môže byť užitočné porovnať fungovanie a časovú náročnosť oboch postupov napr. pomocou simulačnej štúdie. Využijeme výrazne vyšší počet dimenzii, aby bolo porovnanie viac relevantné a výpovedné.

n <- 2000
p <- 500
x <- matrix(rt(n*p, df=2), n, p)

system.time( tmp <- alter.pca.k1(x) )
##    user  system elapsed 
##   0.340   0.024   0.364
system.time( e1 <- svd(cov(x))$u[,1] )
##    user  system elapsed 
##   0.846   0.005   0.852

Výpočetná časová náročnosť sa zdá byť v prospech alternujúcej regresie. Obecne platí, že v programe R je nutné dbať na maticové operácie a pristupovať k ním efektívne, čo do časovej náročnosti výpočtu.



3. Metóda hlavných komponent v programe R

Metóda hlavných komponent je v programe R implementovaná pomocou príkazu princomp() ktorý využíva spektrálný rozklad (EIV) teoretickej (resp. empirickej) variančnej-kovariančnej matice. Pre konkrétne data \mathcal{X} = (\boldsymbol{X}_1, \dots, \boldsymbol{X}_p) s odhadnutou variančnou-kovariančnou maticou \mathcal{S} získame spektrálny rozklad – t.j. EIV(\mathcal{S}) (analogicky, ak je známa teoretická matica, získame EIV(\mathcal{\Sigma})).

Alternatívne a pri praktických (t.j. empirických) úlohach aj ekvivalentne je možné v programe R využiť aj príkaz prcomp(), ktorý funguje výhradne na empirickom princípe a využíva singulárný rozklad (SVD) datovej matice \mathcal{X} – teda SVD(\mathcal{X})).

Označme oba rozklady ako EIV(\mathcal{S}) = \Gamma \Lambda \Gamma^\top \quad \quad \textrm{a analogicky} \quad \quad SVD(\mathcal{X}) = UDV^\top.

Ekvivalentnosť oboch rozkladov je viac-menej okamžitá: n \mathcal{S} = \mathcal{X}^\top\mathcal{X} = VDU^\top UD V^\top = V D^2 V^\top = \Gamma \widetilde{\Lambda} \Gamma^\top = EIV(n\mathcal{S}), pre \Gamma \equiv V a \widetilde{\Lambda} \equiv D^2. Taktiež platí, že EIV(n\mathcal{S}) = \Gamma \widetilde{\Lambda} \Gamma^\top = \Gamma (n \Lambda) \Gamma^\top = n \Gamma \Lambda \Gamma^\top = n EIV(\mathcal{S}).



Využitie metódy hlavných komponent z praktického hľadiska (prevažne ako exploratívny a dimenziu redukujúci nástroj) bude predmetom následujúceho cvičenia.

Samostatne


Pre fungovanie hlavných komponent je podstatné porozumenie fungovania vlastných čísel a vlastných vektorov. Interaktívne grafické ilustrácie pre pripomenutie je možné nájsť napr. tu:










Domáca (samostatná) úloha

(Deadline: Siedme cvičenie / 13.04.2021)


Uvažujte náhodný výber (X_1,Y_1)^\top, \dots (X_n,Y_n)^\top generovaný, resp. simulovaný z nejakého vhodného dvojrozmerného rozdelenia. Náhodný vektor \boldsymbol{Y} = (Y_1, \dots, Y_n)^\top lze chápať aj ako element v n rozmernom lineárnom priestore \mathbb{R}^n. Budu nás zaujímať tri rôzne ortogonálne projekcie – zakaždým do iného dvojrozmerného lineárneho podpriestoru v \mathbb{R}^n. Pre každú projekciu explicitne spočítajte štvorcové chyby (t.j. empiricky overte kvalitu danej projekcie vhľadom k teoretickým očakávaniam). Projekcie sa pokúste nejak vizualizovať.

  • Zvoľte si ľubovolný dvojrozmerný lineárny podpriestor generovaný stĺpcovými vektormi vhodnej matice typu n \times 2 (ale uvažujte obecne iný lineárny podpierstor, ako v nasledujúcich dvoch úlohach). Pomocou projekčnej matice data ortogonálne projektujte do vami zvoleného lineárneho podpriestoru.
  • Využijte metodológiu lineárnej regresie a aplikujte ortogonálnu projekciu na regresnú přímku, t.j. do lineárneho podpriestoru ktorý je generovaný stĺpcami regresnej matice \mathbb{X} = (\boldsymbol{1}, \boldsymbol{X}), kde prvý stĺpec je stĺpec jednotiek a druhý stĺpec je \boldsymbol{X} = (X_1, \dots, X_n)^\top.
  • Nájdite ortogonálnu projekciu do dvojrozmerného lineárneho podpriestoru, ktorý je daný prvou a druhou principálnou kompomentou. Pokúste sa túto úlohu riešiť bez pomoci príkazov princomp() a prcomp().
  • Riešenie umiestnite na svoju webovú stránku, najneskôr v utorok, 13.04.2021, do 14:00.