본문 바로가기

선형대수

Singular value decomposition (2) - 특이값 분해 응용 (2)

3. 통계학에서의 특이값 분해 응용


3.1 주성분 분석(PCA)

■ 다변량 자료분석 방법론 중 차원 축소는 여러 변수들에 담긴 복잡한 정보를 1차원이나 소수 몇 개의 차원으로 축소하여, 복잡한 다차원 구조를 단순화하고 보다 쉽게 이해할 수 있도록 만들기 위해 사용한다.

■ 이러한 차원 축소 기법의 대표적인 방법으로 주성분분석(Principal Component Analysis, PCA)이 있다. 

- PCA를 통한 차원 축소의 결과로부터 얻어지는 주성분점수들은 군집분석, 회귀분석, 인자(factor)분석 등을 위한 입력자료로 이용되어, PCA는 어떤 일련의 분석 과정에서 하나의 중간단계 역할을 하기도 한다.

■ 주성분분석(PCA)은 서로 상관되어 있는(종속적인) \( n \)개의 변수들 간의 구조를 분석하기 위해서 \( n \)개의 변수들을 선형변환시켜 주성분(Principal Component, PC)이라고 부르는 서로 상관되어 있지 않은(독립적인) 새로운 인공(또는 가상)의 변수들을 유도하는 기법이다.

 원래 변수들의 변이를 결정하는 보다 낮은 차원의 서로 독립적인 요인을 성분(component)이라 한다.

 주성분분석에서는 원래 변수들(서로 상관되어 있는 변수들)이 가진 전체 변이(분산)에 대한 공헌도(설명력)를 순차적으로 최대화하도록 성분(component)들을 유도한다.

- 분산은 데이터들이 평균값을 중심으로 얼마나 퍼져 있는지를 나타내는 척도이다.

- PCA는 분산이 큰 방향이 데이터의 특성을 잘 반영한다는 아이디어를 기반으로, 모든 변수에 걸쳐 왼쪽 그림과 같이 퍼져 있는 데이터(관측값)들에 대해 오른쪽 그림과 같이 분산이 가장 큰 방향을 가리키는 주성분을 찾는다. 

[출처] https://www.scaler.com/topics/nlp/what-is-pca/

 차원 축소는 예를 들어, \( n \)개의 변수가 존재할 때, 이 변수들이 가지고 있는 정보는 \( n \)개의 축에 복잡하게 분포하여 나타난다.

 이렇게 나타나는 정보는 직관적으로 이해하기 어렵다. 그러므로 \( n \)개의 축을 1개의 축(1차원) 또는 소수 몇 개의 축(차원)으로 축소하여, 원래 \( n \)개의 변수들이 담고 있는 정보를 보다 쉽게 이해하려고 하는 것이 차원 축소의 아이디어이다. 

 이는 예를 들어, 어떤 선형변환 \( T : U \rightarrow V \)처럼 벡터공간 \( U \)의 모든 벡터 \( \mathbf{u} \)를 선형변환을 적용하여 벡터공간 \( V \)의 모든 벡터 \( \mathbf{v} \)에 대응시키게 만드는 것과 같다.

 이러한 선형변환을 바꿔 말하면, \( n \)차원 공간에 흩뜨려져 있는 점(data point)들을 새로운 축(주성분)에 사영(projection)시키는 것이며, 사영시켰을 때, 다음 그림과 같이 어떤 오차가 존재할 수 있다. 이때 손실되는 정보(분산)의 양이 적은 기저(축, 여기서의 기저는 주성분)를 찾는 것이 목표이다. 

■ 투영(projection) 시, 손실되는 정보의 양이 가장 적게 되는 경우는 위의 그림처럼 축(주성분)에 직교투영(=정사영)시키는 것이다. 

■ 그러므로 주성분분석은 \( n \) 차원 공간에 있는 흩뜨려져 있는 data point들을 직교최소제곱(orthogonal least square)의 개념에 따라 가장 잘 적합시키는 직선(또는 평면)을 찾기 위한 최적화 문제이다.

- 여기서 말하는, 가장 적합한 기저(축)을 찾았을 때 "직선"이라는 것은 위의 그림처럼 \( n \)차원 공간의 데이터들이 하나의 주성분(PC1) 위에 투영된 것을 의미한다. 
- 가장 적합한 곳이 "평면"이라는 것은, 다음 그림처럼 최소 두 개의 주성분(PC1, PC2)로 구성된 평면에 데이터가 투영된 것을 의미한다.

[출처] https://velog.io/@bonimddal2/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%EC%A3%BC%EC%84%B1%EB%B6%84-%EB%B6%84%EC%84%9D

■ 주성분분석을 이렇게 기존의 데이터들을 새로운 축(주성분)에 잘 적합시켜야 하는 문제로 본다면, 이는 기존의 데이터 포인트들을 새로운 축에 투영시켰을 때, 주성분이라는 축과 오차가 최소가 되게 만들어야 하는 문제로 볼 수 있다. 

■ 즉, 주성분분석은 데이터를 근사할 때 평균제곱오차를 최소화하는 기저(주성분)를 찾는 문제로 볼 수 있다. 

- 투영된 데이터 포인트를 실제값, 축(주성분) 위에 있는 값을 예측값이라고 생각했을 때, 모든 실제값과 예측값의 차이. 즉, 총 오차(total error)의 값은 '오차 = 실제값 - 예측값'으로 정의된 오차들을 모두 더하는 것으로 생각할 수 있다.

- 하지만, 단순히  '오차 = 실제값 - 예측값'으로 정의한다면, 오차값이 음수가 나오는 경우가 발생할 수 있다. 
- 즉,  '오차 = 실제값 - 예측값'으로 정의하면 오차를 모두 더하는 과정에서 오차값이 +(양수)가 되었다가 -(음수)가 되기를 반복하므로, 제대로 된 오차의 크기(실제값과 예측값의 차이)를 측정할 수 없다.

- 그러므로 오차를 단순히 모두 더하는 것이 아니라, 각 오차들을 제곱해 준 뒤에 전부 더해주는 방식으로 오차로서 음수가 나오는 것을 방지한다. 이를 수식으로 표현하면 다음과 같다.

\( \displaystyle \sum^{n}_{i \; = \;1} \left( y_i - \hat{y}_i \right)^2 \)

-- 여기서 \( n \)은 데이터의 개수(샘플의 개수), \( y_i \)는 실제(관측)값, \( \hat{y}_i \)는 예측값(투영된 값)

■ \( \displaystyle \sum^{n}_{i \; = \;1} \left( y_i - \hat{y}_i \right)^2 \)식에 데이터의 개수인 \( n \)으로 나누면 '오차의 제곱합에 대한 평균'을 구할 수 있다. 이를 평균제곱오차(Mean Squared Error, MSE)라고 한다. MSE의 식은 다음과 같다. 

\( \text{MSE} = \dfrac{1}{n} \displaystyle \sum^{n}_{i \; = \;1} \left( y_i - \hat{y}_i \right)^2 \)

- 예를 들어 선형회귀 문제에서 MSE는 데이터 포인트들을 잘 설명할 수 있는. 즉, 오차가 최소가 되게 만드는 직선의 기울기와 편향을 찾기 위해 사용된다.
- 이 개념을 주성분분석에 대입하면 주성분분석의 문제는 투영된 데이터 포인트와 오차가 최소가 되는 축(주성분)을 찾는 문제로 볼 수 있다.

■ 평균제곱오차(MSE) 값이 최소화되려면 데이터에 이상치(outlier)가 존재해서는 안 된다. 

 예를 들어 \( X_1 \)과 \( X_2 \)라는 변수를 주성분기저 1개에 투영시켰을 때, 다음과 같이 이상치가 존재한다고 가정하자. 이상치의 개수가 많아지면 많아질수록 평균제곱오차의 값은 점점 더 커질 것이다.

■ 즉, 주성분분석은 주성분분석은 데이터의 스케일(scale)에 민감하다. 그러므로 주성분분석을 수행하기 전에 데이터를 스케일링해야 한다. 

cf) 그래서 주성분분석을 수행하기 앞서 이상치들을 제거하는 것이 일반적이다.

■ 평균제곱오차를 최소화하기 위한 스케일링 방법으로 평균 중심화는 관측값의 중심을 원점으로 모으기 때문에(=평균이 0을 갖도록 중심화하기 때문에) 특정 방향으로 편향되는 것을 방지할 수 있다.

- PCA를 수행하기 전에 평균 중심화를 적용한다. 그리고 필요에 따라 (기본) 표준화 또는 Z-score 표준화(표준정규분포) 등을 적용한다.

■ 평균 중심화는 변수의 관측값에서 그 평균을 빼주는 것이다. 즉, '평균 빼기'이다. 

- 어떤 임의의 변수 \( X \)에 대응되는 \( n \)개의 관측값 \( x_1, x_2, \cdots, x_n \)이 주어질 때, 관측값의 평균 \( \overline{x} \)와 변수 \( X \)의 분산 \( \text{Var}(X) \)는 다음과 같다.

\( \overline{x} = \dfrac{1}{n} \displaystyle \sum^{n}_{i \; = \; 1} x_i, \quad \text{Var}(X) = \dfrac{1}{n} \sum^{n}_{i \; = \; 1} \left( x_i - \overline{x} \right)^2 \)

- 평균 중심화는 변수(feature)의 \( n \)개의 샘플 \( x_1, x_2, \cdots, x_n \)에 대해 각각 \( \overline{x} \)를 빼주면 된다.

- 이때, 평균 중심화를 적용한 값들을 모아놓은 것을 편차 벡터 \( \mathbf{x} = (x_1 - \overline{x}, \; x_2 - \overline{x}, \; \cdots, \; x_n - \overline{x})^T \)라고 정의하면,

- 행렬의 곱이나 벡터의 내적을 이용하여 다음과 같이 변수 \( X \)의 분산을 나타낼 수 있다.

\( \text{Var} (X) = \dfrac{1}{n} \mathbf{x}^T \mathbf{x} = \dfrac{1}{n} < \mathbf{x}, \mathbf{x} > \)

-- < a, b >는 벡터 a와 b의 내적

■ 주성분분석은 \( n \)개의 변수들을 선형변환시켜 주성분(Principal Component, PC)으로 유도하는 방법이라고 하였다. 

■ 즉, \( n \)개의 여러 변수들이 \( \mathbf{X} =  ( X_1, X_2, \cdots, X_n) \), 주성분을 \( Z \)라고 할 때, \( Z = a_1 X_1 + a_2 X_2 + \cdots + a_n X_n \)으로 선형 결합을 통해 주성분 \( Z \)를 유도하는 것이다. 

■ 여기서 가중치(가중계수)인 벡터 \( \mathbf{a} = ( a_1, a_2, \cdots, a_n \)은 원래의 변수 \( X_1, X_2, \cdots, X_n \)보다 더 유용한 정보를 보유할 수도 있고, 차원 축소는 물론 변수들 간의 관계를 단순화시키는 데 큰 역할을 한다. 

 이때 사용되는 가중계수 \( \mathbf{a} = a_1, a_2, \cdots, a_n \)는 바로 고유벡터이다.  

■ 주성분분석은 원래 공간에 있는 변수들이 가지고 있는 분산을 새로운 공간에서 소수의 가상 변수(주성분)로 최대한 근사 시키는 것이 목표이다. 

■ 이는 데이터의 차원을 축소하면서도 원래 변수들이 가지고 있던 데이터 구조(분산)를 최대한 보존시킬(근사 시킬) 수 있는(또는 잘 설명하는) 주성분이라는 '축'을 찾는 방법이다.  

■ 새로운 공간에서 원래 변수들이 가지고 있떤 분산을 표현하는 이 '축'의 방향은 고유벡터의 방향이며, 고윳값은 이 고유벡터의 크기를 조절하는 상숫값으로, '축'의 길이(크기)를 알려준다.   

■ 즉, 분산이 퍼져 있는 방향을 알려주는 것은 고유벡터이다. 그리고 그 방향(고유벡터 방향)으로 분산이 얼마나 퍼져 있는지(크기) 알려주는 것이 고윳값이다. 그러므로 '고윳값의 합은 분산의 총량(원래 데이터의 총 분산)'이다. 

■ 즉, 고유벡터와 원래 변수(벡터)의 선형 결합을 통해 분산이 퍼져 있는 방향으로 유도된 것이 주성분이라고 할 수 있다.

- 이때 사용되는 고유벡터를 PCA에서는 PC 로딩(Loading)이라고 부른다.

 고유벡터와 원래 변수(벡터)의 선형 결합을 통해 분산이 퍼져 있는 방향으로 유도된 것이 주성분이라면, 변수(feature)의 개수가 \( n \)개일 때, 제1 주성분을 \( \text{Z}_1 \)이라고 할 때, 제1 주성분은 다음과 같이 정의할 수 있다.

\( \text{Z}_1 = a_{11} X_1 + \cdots a_{1n} X_n \)

■ 여기서 PCA에서의 목표는 제1 주성분 \( \text{Z}_1 \)의 분산을 가능한 크게 만드는 것이다. 그래서 \( a^2_{11} + \cdots + a^2_{1n} = 1 \)이라는 제약 조건이 붙는다.

 \( \text{Z}_1 = a_{11} X_1 + \cdots a_{1n} X_n \)은 \( n \)개의 변수(feature)가 존재할 때, 조건 \( a^2_{11} + \cdots + a^2_{1n} = 1 \)을 만족하면서 샘플들 간의 변동을 가능한 크게 만드는 원래 변수들 \( X_1, \cdots X_n \)의 선형 결합이라고 할 수 있다.

- 첫 번째 고유벡터를 \( \mathbf{a} = ( a^2_{11} + \cdots + a^2_{1n}) \)라고 하면, 제약식 \( a^2_{11} + \cdots + a^2_{1n} = 1 \)은 첫 번째 '고유벡터의 크기 = 1'이라는 제약으로 볼 수 있다.

 \( a^2_{11} + \cdots + a^2_{1n} = 1 \)이라는 제약 조건이 붙는 이유는, 고유벡터의 크기를 무시하기 위해서이다.

-  벡터는 '크기'와 '방향'이라는 두 가지 정보를 가지고 있다. 벡터의 크기를 1로 정규화(단위벡터화)하면, 벡터의 크기(길이)는 줄어들지만, 방향은 변하지 않는다.

- 고유벡터는 주성분의 '방향'을 나타낸다. 이 고유벡터의 크기를 1로 정규화하면, 고유벡터의 크기 정보는 제거되지만(정확히는 고유벡터 크기가 1이므로 큰 의미가 없다.), 중요한 '주성분의 방향'에 대한 정보는 변하지 않는다.

- 제약식 \( a^2_{11} + \cdots + a^2_{1n} = 1 \)이 없으면, 상수 \( a_{1j} \) 중 어떤 값을 계속 크게 할 때 주성분의 분산(이 예에서는 제1 주성분의 분산)은 계속 커지지만, 이것은 원래 변수 \( x_1, \cdots, x_n \)의 영향 때문이 아니라 고유벡터의 크기 때문이다. 그러므로 고유벡터의 크기를 1로 제한하는 것이다.
- 제2 주성분, 제3 주성분, \( \cdots \) 을 구할 때도 '고유벡터의 크기 = 1'이라는 제약 조건 하에 계산해야 한다.

- 또한, 주성분분석은 각 주성분들이 서로 상관관계가 없게끔 만들어야 한다. 즉, 주성분들이 서로 독립 관계를 가지게 만들어야 한다는 조건이 붙는다.

- 예를 들어 \( \text{Z}_2 \)를 만들 때, \( \text{Z}_1 \)과 \( \text{Z}_2 \)는 상관관계가 없다.(독립이다.)는 조건도 만족해야 하며,

- \( \text{Z}_3 \)은 \( \text{Z}_1 \)과 \( \text{Z}_2 \) 모두와 상관관계가 없다는 조건도 만족해야 한다.

- 추가 주성분들은 이와 같은 방식으로 계속 정의된다. 만약, 변수(feature)가 \( n \)개라면, 주성분도 \( n \)개이다.

 정리하면, \( a^2_{11} + \cdots + a^2_{1n} = 1 \)이라는 제약 조건에 따라 고유벡터를 '단위'고유벡터로 제한함으로써, 주성분의 분산을 최대화하는 순수한 방향을 찾을 수 있다. 또는 주성분의 분산을 최대화하는 방향을 찾는 문제로 단순화되는 것으로 볼 수 있다.

■ 주성분분석을 위한 가중계수(고유벡터)는 일반적으로 변수들의 상관관계에 대한 정보를 가지고 있는 대칭행렬인 공분산행렬(또는 상관행렬)에 대한 고윳값 분해를 이용하여 구할 수 있다. 

- 공분산행렬은 "대칭행렬이고 양의 준정부호이며, 주대각선에는 각 변수의 분산을, 대각선 이외의 원소는 가능한 모든 변수 쌍의 공분산을 나타내는" 행렬이다.

참고) https://hyeon-jae.tistory.com/193

 

확률변수의 기댓값과 분산, 공분산, 상관계수

1. 확률변수의 기댓값1.1 기댓값의 개념■ 확률변수의 기댓값은 '확률변수의 결과 값을 그 확률변수의 확률뷴포를 가중치로 평균한 값'으로 이산형 확률변수 \( X \)의 기댓값은 \(\mu_X = E(X) = \su

hyeon-jae.tistory.com

■ 그리고 대칭행렬에 대해서 특이값 분해(SVD)는 고윳값 분해와 같은 개념이다. 즉, 공분산행렬의 고윳값 분해 또는 공분산행렬의 특이값 분해를 사용하여 주성분분석을 수행할 수 있다.


3.2 상관 행렬, 공분산 행렬, 주성분분석

■ 예를 들어, 다음과 같은 고객만족 데이터가 있을 때, 주성분분석을 이용하여 변수들 간의 관련성을 분석한다고 하자.

- 총 변수의 수는 8개이고 그 중 2개는 범주형 변수, 나머지는 수치형 변수이다. 

- 수치형 변수 중 'ID'라는 변수는 단순히 고객을 분류하기 위한 변수이기 때문에 제외하고 주성분분석을 수행한다.

■ 먼저 (피어슨) 상관관계는 다음과 같다.

■ 식을 보면, 분자와 분모에 각 변수의 관측값에 대해 평균 중심화를 적용하는 것을 볼 수 있다. 이 정규화를 통해 상관계수의 범위는 -1 ~ +1이 된다.

■ 이때, 분자는 공분산이고, 두 변수의 공분산을 각각의  표준 편차의 곱으로 나누는 형태임을 알 수 있다. 이렇게 상관계수는 공분산을 각 확률변수의 표준편차로 나눔으로써 '측정 단위가 상쇄된다.' 즉, 상관계수는 측정 단위의 영향을 받지 않는다.

■ 상관계수를 구하는 방법은 위의 (피어슨) 상관계수의 식을 통해 계산할 수도 있으며, 다음과 같은 코사인 유사도를 이용하여 계산할 수도 있다.

■ 코사인 유사도에 대한 식과 피어슨 상관계수에 대한 식을 보면, 유일한 차이점은 코사인 유사도에는 평균 중심화를 적용하는 과정이 없다는 것이다. 즉, 피어슨 상관계수는 평균 중심화된 코사인 유사도로 볼 수 있다.

- 데이터에 평균 중심화를 적용한 후, 코사인 유사도를 계산한 결과는 피어슨 상관계수와 동일하다.

■ 예를 들어, 예시 데이터의 각 수치형 변수에 대해 표준화를 적용하여 평균 0 & 표준편차 1인 변수로 만들면 다음과 같다.

■ 위의 df_scaled는 평균 중심화가 적용된 상태이다. 이때, 수치형 변수에 5개(가격, 성능, 편리성, 디자인, 색상)에 대한 편차 벡터(평균 중심화된 관측값들)를 \( \mathbf{t}_1, \mathbf{t}_2, \cdots, \mathbf{t}_5 \)라고 하자.

■ 이제 두 편차 벡터 \( \mathbf{t}_i \)와 \( \mathbf{t}_j \)에 코사인 유사도를 적용하여 상관계수를 얻을 수 있다. 

■ 이때, 두 편차 벡터에 대해 코사인 유사도를 적용했으므로, 계산된 결과는 코사인 유사도가 아니라 상관관계이다.

 앞서, 명시한 바와 같이 상관관계의 범위는 -1에서 +1이다. 그리고 값이 -1에 가까우면 음의 상관관계가 높다고 할 수 있으며, +1에 가까우면 양의 상관관계가 높다고 할 수 있다. 그리고 값이 0이면 상관관계가 없다고 할 수 있다.

- 이때, 계산되는 코사인 유사도는 편차 벡터에 대한 코사인 유사도이다. 그러므로 코사인 값이 결과로 나온다.

- 즉, 코사인 값이 -1에 가까우면 음의 상관관계, +1에 가까우면 양의 상관관계, 코사인 값이 0이면 두 편차 벡터는 상관관계가 없는 것이다.

- 그리고 벡터의 관점에서 두 편차 벡터의 상관관계(코사인 값)가 +1에 가까우면(양의 상관관계이면), 두 편차 벡터의 관계는 평행에 가깝다는 의미이다. 그러므로 값이 정확히 +1이면, 두 편차 벡터의 관계는 정확히 같은 방향으로 평행한 상태라고 할 수 있다.

- 반대로 두 편차 벡터의 상관관계가 -1에 가까울수록(음의 상관관계), 두 편차 벡터의 관계는 서로 점점 반대 방향을 가지는 상태이다. 그러므로 값이 정확히 -1이면, 두 편차 벡터의 관계는 정확히 서로 반대 방향으로 평행한 상태라고 할  수 있다.

- 그리고 두 편차 벡터의 상관관계가 정확히 0으로 상관관계가 없는 경우, 분자인 두 편차 벡터의 내적이 0이 되는 것이며, 어떤 두 벡터의 내적이 0이라는 것은 두 벡터가 서로 직교하는 것이므로, 두 벡터는 수직 관계를 이루고 있다고 할 수 있다.

■ 이렇게 두 편차 벡터 \( \mathbf{t}_i \)와 \( \mathbf{t}_j \) 사이의 코사인 값 \( \cos \theta_{ij} \)를 계산하는 식은 \( \cos \theta_{ij} = \dfrac{<  \mathbf{t}_i , \mathbf{t}_j  >}{\| \mathbf{t}_i  \| \; \| \mathbf{t}_j  \|} \)이다.

 이 식을 이용하여 편차 벡터 \( \mathbf{t}_1 \)과 \( \mathbf{t}_2 \) 코사인값(상관관계)를 계산하면 다음과 같다.

 나머지 편차 벡터들에 대해서도 동일한 방법으로 상관관계를 계산할 수 있다. 

■ 이번에는 피어슨 상관관계에 대한 식을 이용하여 각 변수 사이의 상관관계를 구해보면 다음과 같이 동일한 값임을 확인할 수 있다. 

- 위 결과를 해석하면

- 가격은 성능과 가장 큰 상관을 가지며 디자인과는 비교적 상관관계가 작음을 알 수 있다.

- 그리고 가격은 편리성과 색상에 양의 상관관계를 가지는 것을 볼 수 있다.

- 성능의 경우 편리성과 양의 상관관계를 가지며, 디자인과의 상관관계는 0에 가까운 값을 가진다.

- 즉, 성능과 디자인은 상관관계가 없는 것으로 볼 수 있다. 또한 성능과 색상도 성능과 디자인의 상관관계만큼은 아니지만, 아주 약한 상관을 가지는 것을 볼 수 있다. 또한 편리성도 디자인과 색상에 대해 아주 약한 상관을 가지는 것을 볼 수 있다.

- 반면, 디자인과 색상은 아주 강한 상관을 가지는 것을 볼 수 있다.

- 이 결과를 통해 어떤 제품의 '외향적 요인'인 디자인과 색상이라는 변수는 강한 상관을 가지며,

- 가격, 성능, 편리성이라는 변수는 '내향적 요인'이라고 생각할 수 있다. 

■ 평균 중심화의 결과인 편차 벡터는, 편차벡터를 단위벡터로 만들어도 두 벡터 사이의 코사인 값은 변하지 않는다. 

■ 각 편차벡터의 단위벡터를 \( \mathbf{u}_i = \dfrac{\mathbf{v}_i}{\| \mathbf{v}_i \|}, \; (1 \leq i \leq5 \)라 하고, 10개의 샘플을 가지는 5개의 수치형 변수를 나타내는 \( 10 \times 5 \) 비정방 행렬을 \( U \)라고 할 때, \( U = (\mathbf{u}_1, \; \mathbf{u}_2, \; \mathbf{u}_3 , \; \mathbf{u}_4 , \; \mathbf{u}_5 \)라고 하자. 

■ \( U^T U \)라는 대칭행렬을 \( C \)라고 할때, 이 \( C \) 행렬은 위에서 본 각 변수들의 상관관계를 나타내는 상관행렬이다.

■ 대칭행렬 \( C = U^TU \)는 다음과 같이 계산되기 때문에, 5개 벡터의 상관관계를 나타내는 행렬이 된다. 

\( \mathbf{u}^T_j \mathbf{u}_i = < \mathbf{u}_i , \mathbf{u}_j > = \dfrac{<  \mathbf{t}_i , \mathbf{t}_j  >}{\| \mathbf{t}_i  \| \; \| \mathbf{t}_j  \|} = \cos \theta_{ij} \) 

■ \( n \)개의 변수 \( X_1, X_2, \cdots, X_n \) 각각에 대해 자료값이 \( m \)개씩 주어질 때, 각 변수별로 자료값에서 평균을 뺀 편차로 이루어진 벡터를 \( \mathbf{x}_i \)라 하고, 각 편차 벡터 \( \mathbf{x}_i \)를 크기로 나눈 단위벡터를 \( \mathbf{u}_i \)라 하자. 

■ 이때, 비정방 \( m \times n \) 행렬 \( U = ( \mathbf{u}_1 \; \cdots \; \mathbf{u}_n ) \)에 대해 상관행렬 \( C \)는 \( C = U^T U \)로 대칭행렬이 된다. 

■ 상관행렬과 관계가 있는 또 다른 행렬로 공분산행렬이 있다.

■ 변수 \( X \)에 대한 자료값이 \( x_1, x_2, \cdots, x_n \)으로 주어지고, 변수 \( Y \)에 대한 자료값이 \( y_1, y_2, \cdots, y_n \)으로 주어질 때, 각 변수에 대한 편차 벡터를 각각 \( \mathbf{x}, \; \mathbf{y} \)라고 하자.  그러면, \( \mathbf{x} = (x_1 - \overline{x}, x_2 - \overline{x}, \cdots, x_n - \overline{x} )^T, \; \mathbf{y} = (y_1 - \overline{y}, y_2 - \overline{y}, \cdots, y_n - \overline{y} )^T \) 

이때, 두 편차 벡터 \( \mathbf{x} \)와 \( \mathbf{y} \)의 내적을 \( n \)으로 나눈 값을 두 변수 \( X, Y \)에 대한 공분산이라 하고, \( Cov(X, Y) \)로 나타낸다. 즉, \( Cov(X, Y) = \dfrac{1}{n} \mathbf{y}^T \mathbf{x} = \dfrac{1}{n} < \mathbf{x}, \mathbf{y} > \) 

■ \( \mathbb{R} \) 상에서 \( n \)개의 변수 \( X_1, X_2, \cdots, X_n \)에 대해 각각 \( m \)개씩의 샘플(자료값)이 주어질 때, 각 변수 \( X_i \)에 대한 \( m \times 1 \) 크기의 편차 벡터를 \( \mathbf{x}_i \)라고 하자. 

■ 이때, \( m \times n \)행렬 \( V = ( \mathbf{x}_1, \; \mathbf{x}_2, \; \cdots, \; \mathbf{x}_n ) \)에 대해, 행렬 \( S \)를 \( S = \dfrac{1}{m} V^T V \)라고 정의하면, \( S_{ij} = Cov(X_j, X_i) \)인데, 실수 상에서 정의된 벡터공간의 내적에 대해서는 교환법칙이 성립하므로 \( S_{ij} = Cov(X_j, X_i) = Cov(X_i, X_j) = S_{ji} \)가 성립한다. 

- \( m \)은 샘플(sample)의 개수, \( n \)은 변수(feature)의 개수

cf) 실수 상에서 정의된 벡터공간의 내적에 대해서는 교환법칙이 성립하므로 \( Cov(X, Y) = Cov(Y, X) \)가 성립한다. 

■ 즉, 대칭행렬 \( S \)는 각 변수 사이의 공분산을 나타내는 행렬이 되므로 공분산행렬이라고 부른다. 

특히, 행렬 \( S \)의 \( i, i \) 위치에 있는. 즉, 대각 원소(성분)는 변수(feature) \( X_i \)의 분산이 되므로 행렬 \( S \)를 분산-공분산행렬이라고 부르기도 한다.  

\( S_{ii} = Cov(X_i, X_i) = \dfrac{1}{n} \mathbf{x}^T_i \mathbf{x}_i = Var(X_i) \)

■ 예를 들어, 변수(feature)의 개수가 \( n \)개, 샘플(sample)의 개수가 \( m \)개이고, 평균 중심화를 적용해 편차가 기록된 \( m \times n \) 행렬을 \( A \)라고 하자.

즉, 행렬 \( A \)의 각 행은 특정 샘플의 \( n \)가지 변수에 대한 편차를 나타내고, 행렬 \( A \)의 각 열은 각 변수의 편차 벡터를 나타낸다. 

■ \( A \)의 \( i \) 번째 열벡터를 \( \mathbf{a}_i \)라고 하자.

■ \( m \times n \)행렬 \( A \)에 대해 행렬 \( A \)의 계수(rank)가 \( \text{rank} (A) < n \)이라면, 이는 행렬 \( A \)의 열벡터들은 종속 관계임을 의미한다. 

■ 행렬 \( A \)의 열벡터는 어떤 변수에 대한 \( m \)개의 관측값과 이 관측값들의 (표본)평균의 편차에 대한 값이다. 

■ 이러한 열벡터들이 종속 관계라는 것은 \( n \)가지 변수 중에서 어떤 하나의 변수를 나머지 변수들로 설명할 수 있다. 

이 예에서의 열은 편차 벡터라는 점에서 어떤 하나의 변수는 나머지 변수들로부터 그 변수에 대한 편차 벡터를 설명할 수 있다는 뜻이 된다.

■ 예를 들어 \( \mathbf{a}_2 = 2 \mathbf{a}_1 - \mathbf{a}_3 \)이라면, \( m \)개의 샘플(sample) 각각에 대해 첫 번째 변수와 세 번째 변수의 편차를 아는 것만으로 두 번째 변수를 설명할 수 있다는 의미이다. 

즉, 요인 분석 관점에서 보면 두 번째 변수는 불필요한 변수라고 할 수 있다.   

■ 이런 관점에서 생각하면, 변수별로 만들어진 편차 벡터 \( \mathbf{a}_i \; (1 \leq i \leq n) \) 중 선형(일차) 독립 관계를 갖는 편차 벡터들만 있으면, 요인 분석 관점에서 충분하다는 의미이고, 이를 수학적으로 표현하면  \( \mathbf{a}_i \; (1 \leq i \leq n) \) 중 선형 독립인 열벡터들은 열공간 \( C(A) \)의 기저가 된다는 것과 같은 의미이다.  

- 보통 벡터 \( \mathbf{a}_i \)들은 서로 상관관계가 있는 벡터들이 되기 쉽다. 

■ 주성분분석을 수학적으로 표현하면, 행렬 \( A \)의 계수(rank)가 \( r \)이라고 할 때, 행렬 \( A \)의 \( r \)차원 열공간 \( C(A) \)에 대해 직교기저(서로 종속 관계가 아닌 편차벡터들. 즉, 서로 상관관계가 없는 편차벡터들) \( \mathbf{y}_1, \mathbf{y}_2, \cdots, \mathbf{y}_r \)를 구하되,

각 벡터 \( y_i \)를 가상의 요인에 대한 편차벡터로 이해할 때, \( Var(\mathbf{y}_1) \geq Var(\mathbf{y}_2) \geq \cdots \geq Var(\mathbf{y}_r) \)가 성립하도록 벡터를 잡는 것을 의미한다. 

■ 이때, 가장 큰 분산을 갖는 편차벡터 \( \mathbf{y}_1 \)가 첫 번째 주성분(벡터)이 되는 것이다.

- \( \mathbf{y}_i \; (1 \leq i \leq r) \)를 \( i \)번째 주성분(벡터)

■ 이렇게 주성분(벡터)들은 서로 상관관계가 없는(=선형 독립인) 벡터들로 구성된다.   

■ 예를 들어, \( m \times 1 \) 크기를 갖는 첫 번째 주성분 벡터 \( \mathbf{y}_1 \)을 구하는 방법은 \( A \)의 열공간과 상공간(=선형변환에서의 치역)은 일치하므로 \( \mathbf{y}_1 = A \mathbf{v}_1 \)을 만족하는 \( n \times 1 \)크기의 벡터 \( \mathbf{v}_i \)가 존재한다.는 것을 이용한다. 

- 또는, 위에서 주성분벡터 \( \mathbf{y}_i \)는 행렬 \( A \)의 \( r \)차원 열공간 \( C(A) \)에 대해 직교기저여야 한다고 하였으므로

- 행렬 \( A \)가 \( m \times n \)행렬이고 행렬 \( A \)의 열공간에 존재하는 직교기저인 주성분벡터 \( \mathbf{y}_i \)의 크기는 \( m \times 1 \)이라면,  선형대수에서 \( A\mathbf{x} = b \) 문제를 생각했을 때, 

- \( A \)와 \( \mathbf{y}_i \)를 연결하는 \( n \times 1 \) 벡터가 존재하는 것을 추론할 수 있다.

- 이 \( n \times 1 \) 벡터를 \( \mathbf{v}_i \)라고 했을 때, \( A \mathbf{v}_i = \mathbf{y}_i \)가 성립한다고 할 수 있다. 

cf) \( A \)와 벡터 \( \mathbf{v}_i \)의 곱 \( A \mathbf{v}_i \)는 벡터 \( \mathbf{v}_i \)와 행렬 \( A \)의 열들의 선형 결합으로 나타낼 수 있다.  

- 열공간은 열들의 모든 선형 결합으로 생성된다. 그리고 가능한 모든 결합은 벡터 \( A \mathbf{v}_i \)이다. 

- 즉, 열공간 \( C(A) \)에는 선형 독립 관계를 가지는 행렬 \( A \)의 열들뿐만 아니라, 벡터 \( \mathbf{v}_i \)와 선형 독립인 \( A \)의 열들과의 선형 결합 결과인 벡터 \( A \mathbf{v}_i \)도 \( A \)의 열공간에 존재한다는 것을 의미한다. 

첫 번째 주성분벡터(가장 큰 분산을 갖는 편차 벡터) \( \mathbf{y}_1 \)의 분산 \( \text{Var}(\mathbf{y}_1) \)은 \( \text{Var}(\mathbf{y}_1) = \dfrac{1}{m} \mathbf{y}^T_1 \mathbf{y}_1 \)이며, \( A \mathbf{v}_1 = \mathbf{y}_1 \)이므로, \( \mathbf{y}_1 \)의 분산은 \( \text{Var}(\mathbf{y}_1) = \dfrac{1}{m} \mathbf{y}^T_1 \mathbf{y}_1 = \dfrac{1}{m} \mathbf{v}^T_1 A^T A \mathbf{v}_1 \)으로 나타낼 수 있다.

■ 또한 공분산행렬 \( S \)가 \( S = \dfrac{1}{m} A^TA \)가 된다는 것을 이용하면

\( \text{Var}(\mathbf{y}_1) = \dfrac{1}{m} \mathbf{y}^T_1 \mathbf{y}_1 = \dfrac{1}{m} \mathbf{v}^T_1 A^T A \mathbf{v}_1 = \mathbf{v}^T \left( \dfrac{A^TA}{m} \right) \mathbf{v}_1 = \mathbf{v}^T_1 S \mathbf{v}_1 \)으로 나타낼 수 있다.

■ 이때, \( \mathbf{y}_1 \)의 분산이 최대가 되도록 한다는 의미는 \( \| \mathbf{v}_1 \| = 1 \)인 벡터 \( \mathbf{v}_1 \)에 대해 \( Var(\mathbf{y}_1) = \dfrac{1}{m} \mathbf{y}^T_1 \mathbf{y}_1 = \dfrac{1}{m} \mathbf{v}^T_1 S \mathbf{v}_1 \)가 최대가 되게 한다는 의미가 된다.

이는 벡터 \( \mathbf{v}_1 \)이 공분산행렬 \( S = A^T A \)의 가장 큰 고윳값 \( \lambda_1 \)에 대응되는 고유벡터가 될 때 \( \text{Var} (\mathbf{y}_1) \)이 가장 최대화된다는 것을 의미한다.

■ 이 분산 최대화 문제는 다음과 같이 제약 조건 \( \| \mathbf{v}_1 \| = 1 \)이라는 1개의 등식 제약(equality constraint) 하에 최적화 문제로 생각할 수도 있다. 이에 대한 목적 함수를 나타내면 다음과 같이 나타낼 수 있다.

\( \text{max} \quad \mathbf{v}^T_1 S \mathbf{v}_1 \quad \text{subject to } \| \mathbf{v}_1 \| = 1 \)

■ 제약 조건이 없는 경우 최대 또는 최소를 판별하는 최적화 문제는 다음과 같이 폐구간으로 정의된 연속함수에서 미분을 통해 극대 또는 극소가 될 수 있는 임계점을 찾은 다음, 찾은 임계점과 양끝 점을 연속 함수에 넣었을 때, 함수의 값이 가장 큰 것이 연속 함수 \( f \)의 최댓값이었고, 가장 작은 것이 \( f \)의 최솟값이었다.

참고) https://hyeon-jae.tistory.com/237

 

Positive definite matrices and minima

1. 양정치 행렬 또는 양의 정부호 행렬(Positive definite matrices)■ 양정치행렬(양의 정부호 행렬)은 대칭행렬에서만 적용된다. ■ \( 2 \times 2 \) 대칭행렬 \( A = \begin{bmatrix} a & b \\ b & c \end{bmatrix} \)라

hyeon-jae.tistory.com

■ 하지만, 지금 문제와 같이 제약 조건으로 등식 조건이 있으면 극대(local maximum) 또는 극소(local minimum)이 되기 위한 필요조건은 더 이상 \( f' = 0 \)이 아닐 수 있다. 

- 예를 들어 연속 함수 \( f(x) \)와 제약 조건 \( h(x) = 0 \)이라는 등식 조건이 다음과 같이 나타난다고 하면, 

- 빨간선인 \( h(x) = 0 \)을 만족하는 \( x \) 중에서 극대 또는 극소가 될 수 있는 임계점은 더 이상 \( f' = 0 \)이 되는 지점이 아닐 수 있는 것을 볼 수 있다.

- 위의  그림처럼 제약 조건이 붙는 경우 극대 또는 극소(혹은 최대 또는 최소)는 제약 조건과 함수 \( f \)가 접했을 때 발생할 수 있다. 

■ 이렇게 제약 조건을 만족하면서 함수 \( f \)의 최댓값과 최솟값을 구하는 방법으로 '라그랑주 승수법'이 있다. 

■ 라그랑주 승수법 중 제약 조건이 \( g(x_1, x_2, \cdots x_n) = k \)로 1개일 경우 함수 \( f(x_1, x_2, \cdots, x_n) \)의 최댓값과 최솟값을 구하는 방법은 

-- \( k \)는 상수

- (1) \( \nabla g = \lambda \nabla f \), \( g(x_1, x_2, \cdots x_n) = k \)를 만족하는 \( x_1, x_2, \cdots, x_n \)과 \( \lambda \)를 구한다. (단,  \( \lambda \)는 0이 아닌 실수)

- (2) 그리고 (1)에서 구한 모든 점(\(x_1, x_2, \cdots, x_n \))에서 \( f(x_1, x_2, \cdots, x_n) \)을 계산한다. 이 값들 중 가장 큰 값이 \( f \)의 최댓값이고, 가장 작은 값이 \( f \)의 최솟값이다.

- 즉, \( \nabla g \)가 \( \nabla f \)의 상수배일 때, \( \nabla g = \lambda f \)일 때, 최대 및 최소가 발생한다고 볼 수 있다.

\( \nabla g \)가 \( \nabla f \)의 상수배 \( \Leftrightarrow \) \( \nabla g = \lambda f \)라는 것은 \( \nabla g \)와 \( \nabla f \)가 평행하다는 것이다. 

■ 이때 \( f \)와 \( g \)를 통해 다음과 같은 라그랑즈 함수를 정의할 수 있다.

\( L(x_1, x_2, \cdots, x_n, \lambda) = f(x_1, x_2, \cdots, x_n) - \lambda \left( g(x_1, x_2 \cdots, x_n) - k \right) \)

- 제약 조건이 한 개가 아니라 여러 개인 경우는 다음과 같이 일반화할 수 있다.

\( L(x_1, x_2, \cdots, x_n, \lambda_1, \lambda_2, \cdots, \lambda_n) = f(x_1, x_2, \cdots, x_n) - \displaystyle \sum^{n}_{i \; = \; 1} \lambda_i \left( g_i(x_1, x_2, \cdots, x_n) \right) \)

■ 위의 예시에서 제약 조건이 붙으면 최대 및 최소가 될 수 있는 임계점인 극대 및 극소점이 \( f' = 0 \)이 아닌 제약 조건 \( g \)와 함수 \( f \)가 접하는 지점에서 발생한다고 하였다. 

■ 즉, 최대 및 최소를 찾기 위해서는 두 함수 \( f \)와 \( g \)가 접하는 점을 찾아야 하며, 이 점은 \( L(x_1, x_2, \cdots, x_n, \lambda) = f(x_1, x_2, \cdots, x_n) - \lambda \left( g(x_1, x_2 \cdots, x_n) - k \right) \)의 미분 = 0 \( \Leftrightarrow \) \( \nabla L(x_1, x_2, \cdots, x_n, \lambda) = 0 \)이 되는 지점에서 찾을 수 있다. 

■ 즉, 제약 조건이 등식 조건으로 1개일 때, 라그랑주 함수 \( L \)을 각 변수들 \( x_1, x_2, \cdots, x_n, \lambda \)로 편미분한 결과가 0이 되는 \( n + 1 \)개의 수식들을 연립하여 제약식을 풀게되면 최적화된 해를 구할 수 있다. 

다시 주성분분석으로 돌아와서 \( \text{max} \quad \mathbf{v}^T_1 S \mathbf{v}_1 \quad \text{subject to } \| \mathbf{v}_1 \| = 1 \)에 라그랑주 승수법을 적용하면 라그랑주 함수는 다음과 같이 나타낼 수 있다.

\( L = \mathbf{v}^T_1 S \mathbf{v}_1 - \lambda \left( \mathbf{v}^T_1 \mathbf{v}_1 - 1 \right) \) 

- 목적 함수를 보면 최대화하고자 하는 것이 바로 공분산행렬의 이차형식임을 알 수 있다.

■ 이제 이 예의 최대, 최소는 이 라그랑주 함수에 대해 변수인 벡터 \( \mathbf{v}_1 \)을 편미분한 결과가 0이 되는 지점에서 발생한다.

■ 벡터 \( \mathbf{v}_1 \)에 대한 도함수를 0으로 설정하면 \( \dfrac{\partial{L}}{\partial{\mathbf{v}_1}} = 2 S \mathbf{v}_1 - 2 \lambda \mathbf{v}_1 = 0 \Rightarrow S \mathbf{v}_1 = \lambda \mathbf{v}_1 \)이 된다.

[출처] https://en.wikipedia.org/wiki/Matrix_calculus

 

 - \( L = \mathbf{v}^T_1 S \mathbf{v}_1 - \lambda \left( \mathbf{v}^T_1 \mathbf{v}_1 - 1 \right) \)에서 먼저, \( \left( \mathbf{v}^T_1 \mathbf{v}_1 - 1 \right) \)에 대한 미분은

- \( \mathbf{x}^T \mathbf{x} = \begin{bmatrix} x_1 & \cdots & x_n \end{bmatrix} \begin{bmatrix} x_1 \\ \vdots \\ x_n \end{bmatrix} = x_1 x_1 + x_2 x_2 + \cdots + x_n x_n = x^2_1 + \cdots + x^2_n = \text{ 스칼라 값} \) 
- \( \mathbf{x}^T \mathbf{x} \)는 스칼라 값이다. 그러므로 스칼라를 벡터로 미분하는 첫 번째 식을 이용해야 한다. 

- 위의 첫 번째 식의 결과는 행벡터, 두 번째 식의 결과는 열벡터로 되어 있는데, 이는 피미분 변수를 중심으로 행과 열을 결정할지 아니면 미분 변수를 중심으로 행과 열을 결정할지의 차이이다. 즉, 첫 번째 식의 결과를 열벡터, 두 번째 식의 결과를 행벡터로 나타내도 된다.

- 위의 미분식들은 모두 분자중심 표현법(numerator layout)으로 나타낸 것이다. - 예를 들어 결과가 행벡터로 나타나는 첫 번째 식을 분모중심 표현법(denominator layout)으로 나타내면, 결과는 열벡터가 된다. 둘 중 하나의 표현법으로 일관되게 사용하기만 하면 된다.  - 즉, 분자중심 표현법과 분모중심 표현법은 서로 전치 관계에 있다. 분자중심 표현법으로 나온 결과에 전치를 적용한 결과는 분모중심 표현법의 결과라는 얘기이다.
참고) Matrix calculus - Wikipedia

 

Matrix calculus - Wikipedia

From Wikipedia, the free encyclopedia Specialized notation for multivariable calculus In mathematics, matrix calculus is a specialized notation for doing multivariable calculus, especially over spaces of matrices. It collects the various partial derivative

en.wikipedia.org

- 분모중심 표현법을 사용하여 두 번째 항에 대해 미분을 하면 다음과 같다.

-- 계산 과정을 보기 쉽게 \( \mathbf{v}_1 \)을 \( \mathbf{x} \)로 두고 계산

\( \dfrac{\partial \mathbf{x}^T \mathbf{v}}{\partial \mathbf{x}} = \begin{bmatrix} \dfrac{\partial \mathbf{x}^T \mathbf{x}}{\partial x_1} \\ \vdots \\ \dfrac{\partial \mathbf{x}^T \mathbf{x}}{\partial x_n} \end{bmatrix} = \begin{bmatrix} \dfrac{\partial (x_1 x_1 + \cdots + x_n x_n)}{\partial x_1} \\ \vdots \\ \dfrac{\partial (x_1 x_1 + \cdots + x_n x_n)}{\partial x_n} \end{bmatrix}
= \begin{bmatrix} \dfrac{\partial}{\partial x_1} (x^2_1 + \cdots + x^2_n) \\ \vdots \\ \dfrac{\partial}{\partial x_n} (x^2_1 + \cdots + x^2_n)   \end{bmatrix} \) 

- 여기서 \( \dfrac{\partial}{\partial x_1} (x^2_1 + \cdots + x^2_n) \)은 \( x^2_1 + \cdots + x^2_n \)를 \( x_1 \)에 대해서만 미분하고 \( \dfrac{\partial}{\partial x_n} (x^2_1 + \cdots + x^2_n) \)은 \( x^2_1 + \cdots + x^2_n \)를 \( x_n \)에 대해서만 미분하면 된다. 그러면 그 결과는 다음과 같다. 

\( = \begin{bmatrix} 2x_1 \\ 2x_2 \\ 2x_3 \\ \vdots \\ 2x_n \end{bmatrix} = 2 \mathbf{x} \) 

- 첫 번째 항 \( L = \mathbf{v}^T_1 S \mathbf{v}_1 \)에 대한 미분은 다음과 같다.

-- 계산 과정을 보기 쉽게 \( \mathbf{v}^T_1 S \mathbf{v}_1 \)을 \( \mathbf{x}^T A \mathbf{x} \)로 두고 계산

- \( \mathbf{x}^T A \mathbf{x} \)에서 벡터 \( A \mathbf{x} \)를 \( \mathbf{w} = A \mathbf{x} \)로 두자. 그러면 \( \mathbf{x}^T \mathbf{w} \)에 대해 다음과 같이 미분을 하면 된다.

- \( \dfrac{\partial \mathbf{x}^T \mathbf{w}}{\partial \mathbf{x}} \)는 \( \mathbf{x} \)와 \( \mathbf{w} \)에 대한 식이므로, \( \dfrac{\partial \mathbf{x}^T \mathbf{w}}{\partial \mathbf{x}} = \mathbf{x}^T \dfrac{\partial \mathbf{w}}{\partial \mathbf{x}} + \mathbf{w}^T \dfrac{\partial \mathbf{x}}{\partial \mathbf{x}} \)가 된다.

-- 두 번째 항은 \( \mathbf{x}^T \mathbf{w} = < \mathbf{x}, \; \mathbf{w}> = \text{스칼라 값} \)이므로 \( \mathbf{x}^T \mathbf{w} = \mathbf{w}^T \mathbf{x} \)임을 이용한 것이다.

- \( \dfrac{\partial \mathbf{x}^T \mathbf{w}}{\partial \mathbf{x}} = \mathbf{x}^T \dfrac{\partial \mathbf{w}}{\partial \mathbf{x}} + \mathbf{w}^T \dfrac{\partial \mathbf{x}}{\partial \mathbf{x}} = \mathbf{x}^T A + \mathbf{w}^T = \mathbf{x}^T A + \mathbf{x}^T A^T = \mathbf{x}^T \left( A + A^T \right) \) 
- 이때 \( A \)는 공분산행렬. 즉, 대칭행렬이므로 결과는 \( \mathbf{x}^T \left( A + A^T \right) = 2 \mathbf{x}^T A \)가 된다.

- 그러므로 라그랑주 함수 \( L \)의 미분 결과는 \( 2A \mathbf{x} - 2 \lambda \mathbf{x} \)가 된다. 

■ 지금 최적화 문제는 최대에 대한 문제이다. 즉, \( S \mathbf{v}_1 = \lambda \mathbf{v}_1 \)조건을 만족하는 \( \mathbf{v}_1 \)이 선택되면, 목표함수 \( \mathbf{v}^T_1 S \mathbf{v}_1 \)이 최대가 될 수 있다는 것을 알 수 있다. 

■ 근데  \( S \mathbf{v}_1 = \lambda \mathbf{v}_1 \)라는 조건을 보면 이는 고윳값 방정식의 형태임을 알 수 있다.

여기서 \( S \)는 대칭행렬인 공분산행렬이므로 고유벡터 \( \mathbf{v}_1 \)은 공분산 행렬의 고유벡터이며 \( \lambda \)는 고유벡터 \( \mathbf{v}_1 \)에 대응되는 공분산행렬의 실수 고윳값 \( \lambda_1 \)임을 알 수 있다.

■ 정리하면, 첫 번째 주성분(벡터) \( \mathbf{y}_1 \)의 분산이 최대가 되는 경우를 찾기 위해

- (1) 목적 함수 \( \text{max} \quad \mathbf{v}^T_1 S \mathbf{v}_1 \quad \text{subject to } \| \mathbf{v}_1 \| = 1 \)를 계산해야 하며,

- (2) 이 목적 함수를 풀기 위해 라그랑주 승수법을 이용했으며, 이때의 라그랑주 함수는 \( L = \mathbf{v}^T_1 S \mathbf{v}_1 - \lambda \left( \mathbf{v}^T_1 \mathbf{v}_1 - 1 \right) \)

- (3) 제약 조건으로 등식 조건 1개인 라그랑주 함수의 최대/최소는 라그랑주 함수를 미분했을 때 0이 되는 지점이므로, 라그랑주 함수 \( L \)을 미분했으며,

- 그 결과로 \( \dfrac{\partial{L}}{\partial{\mathbf{v}_1}} = 2 S \mathbf{v}_1 - 2 \lambda \mathbf{v}_1 = 0 \Rightarrow S \mathbf{v}_1 = \lambda \mathbf{v}_1 \)를 얻었다. 

- (4) 목적 함수가 \( \text{max} \quad \mathbf{v}^T_1 S \mathbf{v}_1 \quad \text{subject to } \| \mathbf{v}_1 \| = 1 \)이므로 

- \( \| \mathbf{v}_1 \| = 1 \)라는 등식 제약 하에,  \( S \mathbf{v}_1 = \lambda \mathbf{v}_1 \)라는 조건을 만족하는 \( \mathbf{v}_1 \)가 선택되면 목적 함수가 최대가 될 수 있다는 것을 알 수 있다. 

■ 고윳값 방정식  \( S \mathbf{v}_1 = \lambda \mathbf{v}_1 \)에서 행렬 \( S \)의 고유벡터 \( \mathbf{v}_1 \)에 대응되는 고윳값 \( \lambda \)를 \( \lambda_1 \)이라고 하자.

이때, \( S \mathbf{v}_1 = \lambda_1 \mathbf{v}_1 \)라는 조건의 양변 좌측에 \( \mathbf{v}^T_1 \)을 곱하면, 좌변이 목적 함수인 \( \mathbf{v}^T_1 S \mathbf{v}_1 = \mathbf{v}^T_1 \lambda_1 \mathbf{v}_1 \)식이 성립한다.

■ 이때 \( \lambda_1 \)는 음이 아닌 실수이다.

- 공분산행렬 \( S \)를 \( S = \dfrac{1}{m} A^T A \)로 정의하였다. 

- 여기서 \( m \times n \) 행렬 \( A \)는 임의의 실수 행렬이다.

- 그리고 임의의 실수 행렬 \( A \)에 대해 대칭행렬 \( A^T A \)는 최소한, 항상 양의 준정부호 행렬이다.

- \( x^T (A^T A) x = (Ax)^T (Ax) = \| Ax \|^2 \)이며, 제곱은 항상 0보다 크거나 같기 때문이다.

- \( A^T A \)가 양의 준정부호 행렬이므로 대칭행렬 \( A^T A \)의 모든 고윳값은 음이 아닌 실수이다. 

- 공분산행렬 \( S \)는 \( A^T A \)라는 양의 준정부호 행렬에 단지 \( \dfrac{1}{m} \)이라는 값을 곱한 행렬이다. ( \( m \)은 샘플의 개수. 즉 어떤 숫자)

- 그러므로 위의 상황에서 \( \lambda_1 \)는 음이 아닌 실수라고 할 수 있다.

\( \lambda_1 \)가 음이 아닌 실수이므로 \( \mathbf{v}^T_1 S \mathbf{v}_1 = \mathbf{v}^T_1 \lambda_1 \mathbf{v}_1 = \lambda_1 \mathbf{v}^T_1 \mathbf{v}_1 \)식이 성립하며 \( \mathbf{v}_1 \mathbf{v}_1 \)은 자기 자신에 대한 내적이므로 결과는 어떤 임의의 스칼라이다.

■ 그러므로 \( S \mathbf{v}_1 = \lambda_1 \mathbf{v}_1 \)라는 조건을 만족하는 \( \mathbf{v}_1 \)가 선택되면 목적 함수가 최대가 될 수 있는 것이다.

- 음이 아닌 실수 \( \lambda_1 \)와 \( \mathbf{v}_1 \)가 선택되어야 목적 함수가 최대가 되는 것이 아니라,

- \( \mathbf{v}_1 \) 하나만 잘 선택했을 때, 목적 함수가 최대가 되는 이유는 고유벡터 \( \mathbf{v}_1 \)에 대응되는 것이 \( \lambda_1 \)이기 때문이다.

- 다시 말해, \( \mathbf{v}_1 \)을 선택하면 따라오는 것이 \( \lambda_1 \)이기 때문이다.

- 그리고 위에서 목적 함수를 보면 최대화하고자 하는 것이 바로 공분산행렬의 이차형식이라고 하였다. 그러므로 주성분을 찾는 것은 공분산행렬의 이차형식을 최대화하는 벡터 \( \mathbf{v}_1 \)을 찾는 것과 동일하다고 할 수 있다. 

■ 그리고 \( S \mathbf{v}_1 = \lambda_1 \mathbf{v}_1 \)라는 조건은 라그랑주 승수법에 의해 나온 결과이다.

■ 위에서 \( \mathbf{y}_1 \)의 분산이 최대가 되도록 한다는 의미는  \( \| \mathbf{v} \| = 1 \)인 벡터 \( \mathbf{v}_1 \)에 대해 \( \text{Var}(\mathbf{y}_1) =  \mathbf{v}^T_1 S \mathbf{v}_1 \)가 최대가 된다고 하였따. 

■ 이 라그랑주 승수법에 의해 나온 결과를 \( \text{Var}(\mathbf{y}_1) \)에 대입하면, \( \text{Var}(\mathbf{y}_1) =  \mathbf{v}^T_1 S \mathbf{v}_1 = \mathbf{v}^T_1 \lambda_1 \mathbf{v}_1 = \lambda_1 \mathbf{v}^T_1 \mathbf{v}_1 = \lambda_1 \| v \| = \lambda_1 \)이 된다.

\( \text{Var}(\mathbf{y}_1) = \lambda_1 \)이므로, 벡터 \( \mathbf{v}_1 \)가 \( \| \mathbf{v}_1 \)라는 조건 하에 첫 번째 주성분벡터 \( \mathbf{y}_1 \)의 분산이 최대가 되기 위해서는 \( \lambda_1 \)의 값이 최대여야 한다는 의미이며, \( \lambda_1 \)은 공분산행렬 \( S \)의 고윳값이다.

■ 이를 통해 알 수 있는 것은 PCA의 해법은 공분산행렬에 대한 고윳값 분해라는 것을 알 수 있다.

- (1) 주성분(벡터)의 분산은 고윳값이며,

- (2) 특히, 첫 번째 주성분(벡터)의 분산은 공분산행렬 \( S \)의 고윳값 중 가장 큰 고윳값이라는 사실이다.  

- (3) \( S \)의 가장 큰 고윳값은 대칭행렬인 \( S \)를 대각화했을 때 나오는 고윳값 대각행렬의 가장 왼쪽 위의 대각 원소에 위치하고 있다.

- (4) 그러므로 첫 번째 주성분벡터가 갖는 분산(고윳값)은 다른 주성분벡터가 갖는 분산(고윳값) 중 최대가 된다는 사실을 알 수 있다.

그리고 대칭행렬 \( S \)를 대각화했을 때, \( S = Q \Lambda Q^T \)라고 하자. \( \Lambda \)가 바로 고윳값 대각행렬이다. 이때, 행려 \( Q \)의 첫 번째 열벡터가 바로 \( \mathbf{v}_1 \)이다. 

그러므로 첫 번째 주성분(벡터) \( \text{Var} (\mathbf{y}_1) = \mathbf{v}^T_1 S \mathbf{v}_1 \)이 최대가 되는 경우는 벡터 \( \mathbf{v}_1 \)이 행렬 \( S \)의 가장 큰 고윳값 \( \lambda_1 \)에 대응되는 고유벡터가 될 때이다.

■ 그리고 \( \text{Var}(\mathbf{y}_1) = \dfrac{1}{m} \mathbf{y}^T_1 \mathbf{y}_1 = \mathbf{v}^T_1 S \mathbf{v}_1 = \dfrac{1}{m} \mathbf{v}^T_1 A^T A \mathbf{v}_1 \)에서 특이값 분해를 생각하면, \( A^T A \)의 고유벡터는 \( A \)의 오른쪽 특이벡터에 대응된다. 

■ 그러므로 벡터 \( \mathbf{v}_1 \)은 특이값 \( \sigma_1 = \sqrt{\lambda_1} \)에 대응되는 오른쪽 특이벡터가 되고, \( \sigma_1 \)에 대응되는 왼쪽 특이벡터를 \( \mathbf{u}_1 \)이라 할 때, \( \mathbf{y}_1 = A \mathbf{v}_1 = \sigma_1 \mathbf{u}_1 \)이 성립한다.  

■ 두 번째 주성분벡터 \( \mathbf{y}_2 \)는 두 번째로 큰 분산을 가져야 한다.

주성분을 수학적으로 표현하면 \( \text{rank} (A) = r \)차원 열공간 \( C(A) \)에 대한 직교기저라고 할 수 있다.

■ 즉, 두 번째 주성분(벡터) \( \mathbf{y}_2 \)는 첫 번째 주성분(벡터) \( \mathbf{y}_1 \)과 서로 직교한다.

■ 그러므로 첫 번째 주성분벡터와 두 번째 주성분벡터는 서로 독립이라고 할 수 있다.

■ 주성분의 방향은 고유벡터의 방향이며, 주성분이 가리키는 방향인 분산이 퍼져 있는 방향을 알려주는 것이 고유벡터의 방향이라는 점에서

■ 첫 번째 주성분벡터와 두 번째 주성분벡터는 독립이므로 두 주성분벡터는 서로 다른 분산을 가리킨다고 볼 수 있다.

■ 위의 과정에서 첫 번째 주성분은 분산을 최대화하는 축(= 공분산행렬의 고유벡터 \( \mathbf{v}_1 \)가 가리키는 방향과 동일한 축)을 선택하였다.

■ 두 번째 주성분은 첫 번째 주성분과 직교하는 제약 조건 하에서 남은 분산 중 가장 큰 값을 갖는 축을 선택한다.  

■ 이 과정은 고윳값의 크기 순으로 주성분을 선택하는 것과 동일하며, 결과적으로 첫 번째 주성분이 설명하지 못한
잔여 분산을 최대화하는 것이다.

■ 만약 주성분벡터들의 직교성을 포기한다면, 두 번째 주성분이 첫 번째 주성분과 가리키는 방향이 같을 수 있다. 즉, 첫 번째 주성분과 두 번째 주성분이 겹치는 정보(분산)를 포함할 수 있어 차원 축소의 효율성이 떨어진다. 

■ 직교성을 유지함으로써 각 주성분이 독립적인 정보를 최대한 보존할 수 있는 것이다.

■ PCA는 이러한 아이디어를 사용하기 때문에 데이터의 주요 변동성을 최소한의 성분(component)으로 설명할 수 있다.

■ 핵심은 분산이 큰 순서대로 주성분을 선택하는 것이다. 이를 통해 적은 수의 성분(component)으로도 원본 데이터의 분산을 효율적으로 보존할 수 있다.

■ 정리하면 두 번째 주성분이 두 번째로 큰 분산을 갖는 것은 공분산행렬의 고윳값 분해와 직교성 제약에 기인한다. 이를 통해 정보 중복을 배제하면서 데이터의 변동성을 순차적으로 최대화하여 효율적인 차원 축소를 가능하게 한다.

■  두 번째 주성분벡터 \( \mathbf{y}_2 \)는 두 번째로 큰 분산을 가져야 하므로, \( \mathbf{y}_2 = A \mathbf{v}_2 \)에서 벡터 \( \mathbf{v}_2 \)는  \( \mathbf{v}_1 \)과 수직이면서 크기가 1인 벡터일 때, \( \mathbf{y}_2 = \dfrac{1}{m} \mathbf{y}^T_2 \mathbf{y}_2 = \dfrac{1}{m} \mathbf{v}^T_2 A^T A \mathbf{v}_2 \)가 최대가 되는 벡터 \( \mathbf{v}_2 \)를 구하면 된다.

따라서 \( \mathbf{v_2} \)는 \( A^TA \)의 두 번째 고윳값 \( \lambda_2 \)에 대응되는 고유벡터가 된다.

결국 \( \mathbf{v}_2 \)는 \( A \)의 특이값 중 두 번째로 큰 특이값 \( \sigma_2 = \sqrt{\lambda_2} \)에 대응되는 오른쪽 특이벡터가 되고, \( \sigma_2 \)에 대응되는 왼쪽 특이벡터 \( \mathbf{u}_2 \)에 대해 \( \mathbf{y}_2 = A \mathbf{v}_2 = \sigma_2 \mathbf{u}_2 \)가 된다.  

- 첫 번째 주성분은 특이값 중 특이값이 가장 큰 \( \sigma_1 \)으로 정의되는 것을 볼 수 있다.
- 즉, 두 번째 주성분은 두 번째로 큰 분산을 가져야 하므로 특이값 중 특이값이 두 번째로 큰 \( \sigma_2 \)로 정의된다.

■ 동일한 방법으로 \( i \)번째 주성분벡터 \( \mathbf{y}_i \)는 \( A \)의 \( i \)번째 특이값 \( \sigma_i \)에 대응되는 오른쪽 특이벡터 \( \mathbf{v}_i \)에 대해 \( \mathbf{y}_i = A \mathbf{v}_i \)가 되고, \( \sigma_i \)에 대응되는 왼쪽 특이벡터 \( \mathbf{u}_i \)에 대해 \( \mathbf{y}_i = A \mathbf{v}_i = \sigma_i \mathbf{u}_i \)가 성립한다.

■ 이때, \( \mathbf{y}_i = \sigma_i \mathbf{u}_i \)이고 \( \mathbf{y}_j = \sigma_j \mathbf{u}_j \)에 대해 \( < \mathbf{y}_i, \; \mathbf{y}_j > \)는 \( \sigma_i, \; \sigma_j \)는 어떤 실수이므로, \( < \mathbf{y}_i, \; \mathbf{y}_j > = \sigma_i \sigma_j < \mathbf{u}_i, \; \mathbf{u}_j > = \sigma_i \sigma_j \times 0 = 0 \)이 성립한다.

- 정규직교기저는 직교기저인데 크기가 1인 직교기저이므로 서로 다른 직교기저와는 수직 관계를 갖는다.(직교한다.)

- 수직 관계를 갖는다는 것은 두 직교기저의 사잇각이 90도라는 의미므로 두 직교기저의 내적값은 0이된다. (cos90도 = 0 \)

- 그리고 정규직교기저는 단위벡터이므로 자기 자신과의 내적은 1이된다.

- 특이값 분해에서 왼쪽 특이벡터와 오른쪽 특이벡터는 각각 정규직교집합이 된다.

- 그러므로 위에서 서로 다른 왼쪽 특이벡터의 내적은 0이 되는 것이다.

■ 서로 다른 주성분벡터의 내적값이 0이라는 것은 서로 다른 주성분벡터들은 서로 직교한다는 것이며, 이는 서로 다른 주성분벡터들은 서로 독립 관계를 가진다는 것이다. 그러므로, 주성분벡터 \( \mathbf{y}_i \; ( 1 \leq i \leq r ) \) 사이에는 서로 상관관계가 없음을 알 수 있다. 

■ \( \mathbf{y}_i \)의 분산은 대칭행렬 A^TA의 고윳값이 \( \lambda_1 \geq \lambda_2 \geq \cdots, \geq \lambda_r > 0 \)일 때, \( \text{Var} (\mathbf{y}_i) = \dfrac{1}{m} \mathbf{y}^T_i \mathbf{y}_i = \dfrac{1}{m} \sigma^2_i \mathbf{u}^T_i \mathbf{u}_i = \dfrac{\lambda_i}{m} \)이므로 \( \text{Var} (\mathbf{y}_i) \)는 \( Var(\mathbf{y}_i) = \dfrac{\lambda_i}{m} = \dfrac{\sqrt{\sigma_i}}{m} \)라고 할 수 있다. 
-여기서 \( r \)은 \( r = \text{rank} (A) \)이며 \( \sigma_i \)는 \( i \)번째 특이값, \( \lambda_ i \)는 \( i \)번째 고윳값이다.
- \( \lambda_i \)는 대칭행렬 A^T A의 고윳값 \( \lambda_1 \geq \lambda_2 \geq \cdots \geq \lambda_r > 0 \)을 의미한다.  
- 마찬가지로 \( \sigma_i \)는 특이값 \( \sigma_1 \geq \sigma-2 \geq \cdots \geq \sigma_r > 0 \)을 의미한다.
- 또한, 위의 식에서 정규직교기저의 \( \mathbf{u}^T_i \mathbf{u}_i \)는 자기 자신의 내적. 즉, 자기 자신의 크기이다. 정규직교기저는 단위벡터이므로 크기는 1이다. 그러므로 \( \text{Var} (\mathbf{y}_i) = \dfrac{\lambda_i}{m} = \dfrac{\sigma^2_i}{m} \)가 된다.

■ 이를 통해 주성분 \( \mathbf{y}_i \)의 분산의 크기를 결정짓는 모수(parameter)는 샘플(sample)의 개수 \( m \)과 \( \lambda_i \) 또는 \( \sigma_i \)라는 것을 알 수 있다.  

■ 여기서 가상의 요인에 대한 편차 벡터인 주성분벡터를 구체화하는 방법은 \( n \)가지 종류의 변수 \( X_1, X_2, \cdots, X_n \)에 가중치를 주어 생각하는 것이다.  

■ 즉, 가중결합을 생각하는 것이다. 예를 들어 \( \mathbf{y}_1 \)은 행렬 \( A \)의 가장 큰 특이값에 대응되는 오른쪽 특이벡터 \( \mathbf{v}_1 \)에 대해 \( \mathbf{y}_1 = A \mathbf{v}_1 \)이므로 \( \mathbf{v}_1 = (v_{11}, \; v_{21}, \; \cdots \; v_{n1})^T \)라 할 때, \( A \)의 열벡터 \( a_i \)에 대해 \( \mathbf{y}_1 = v_{11}\mathbf{a}_1 + \cdots + v_{n1}\mathbf{a}_n \)이라는 선형 결합으로 생각할 수 있다.  

■ 이렇게 PCA는 분산이라는 통계적 개념과 선형대수학의 선형 결합이라는 개념을 통합한 것이다.

■ 그리고 행렬 \( A \)에 대한 특이값 분해 \( A = U \Sigma V^T = \displaystyle \sum^{r}_{i=1} \mathbf{u}_i \sigma_i \mathbf{v}^T_i = \mathbf{u}_1 \sigma_1 \mathbf{v}^T_1 + \mathbf{u}_2 \sigma_2 \mathbf{v}^T_2 + \cdots + \mathbf{u}_r \sigma_r \mathbf{v}^T_r = \mathbf{y}_1 \mathbf{v}^T_i + \mathbf{y}_2 \mathbf{v}^T_2 + \cdots + \mathbf{y}_r \mathbf{v}^T_r \)로 나타낼 수 있다. 

- \( \mathbf{y}_i = A\mathbf{v}_i =  \sigma_i \mathbf{u}_i \) 

■ 여기서 Singular value decomposition (1) cf)에 있는 주어진 행렬을 계수가 작은 행렬로 근사시키는 최적의 방법을 사용하면 \( A \)와 동일한 \( m \times n \) 크기를 갖는 계수(rank) 1 행렬 중에서 \( A \)가 담고 있는 편차를 가장 잘 근사시키는 행렬은 \( \mathbf{y}_1 \mathbf{v}^T_1 \)이라고 할 수 있다.

- 이때 \( \mathbf{y}_1 \)은 주성분벡터이고 \( \mathbf{v}_1 \)은 \( n \)개의 변수를 이용하여 \( \mathbf{y}_1 \)을 표현하는 가중치를 담고 있는 벡터이다. 


이어서 https://hyeon-jae.tistory.com/260