Written by Pilwon Hur (2007/10/29)
예를 들어서 이야기하는 것이 쉬울 것 같다. 숙제성적과 시험성적이 어떻게 서로 연관이 되어 있는지를 원한다고 가정해보자. 다음의 표와 같이 시험성적, 중간고사, 기말고사의 성적이 나열되어 있다. 모두 200점 만점이다.
Scores | |||
학생 |
숙제 |
중간고사 |
기말고사 |
S1 |
198 |
200 |
196 |
S2 |
160 |
165 |
165 |
S3 |
158 |
158 |
133 |
S4 |
150 |
165 |
91 |
S5 |
175 |
182 |
151 |
S6 |
134 |
135 |
101 |
S7 |
152 |
136 |
80 |
평균 |
161 |
163 |
131 |
각 학생이 시험정적과 숙제성적에 어떤 상관관계를 가지는지를 비교해 보고 싶다. 먼저 두가지 경우에 대한 점수가 어떻게 연관이 있는지를 알고, 난이도의 차이등을 고려하기 위해서 zero mean 을 취하자. 즉, 각 column들에 대해서 각각의 평균을 빼 준다. 즉, 다음과 같은 행렬을 만들 수 있다.
\[ X= \begin{bmatrix} 37 & 37 & 65 \\ -1 & 2 & 34 \\ -3 & -5 & 2 \\ -11& 2 & -40 \\ 14 & 19 & 20 \\ -27& -28& -30 \\ -9 & -27& -51 \end{bmatrix} \]\(X\) 의 각 column은 실제 점수의 평균값으로 부터의 편차를 나타낸다. 첫번째로부터 각각의 column을 \(x_1,x_2,x_3\) 이라고 하자.
\(x_1,x_2\) 이 서로 어떻게 연관을 가지고 있는지를 나타내기 위해서는 두 벡터 \(x_1,x_2\) 의 \(\cos \theta\) 를 살펴보면 된다. 무슨 말이냐 하면, 다음과 같다.
서로 완전히 관계없는 독립적인 두 벡터는 서로 orthogonal 이다. 즉, \(x_1 \perp x_2\) 이다. 이 경우 correlation 은 \(0\) 이 된다.
서로 완전히 종속적인 두 벡터는 서로 비례한다. 즉, \(x_2=\alpha x_1\) 이다. 이 경우 correlation 은 \(1\) 이 된다.
Correlation이 \(1\) 인 경우, 두 벡터는 linear의 관계를 가지게 된다. 즉 linearity가 성립할 경우 correlation 은 \(1\) 이다. 다른 말로 하면, nonlinear한 경우 correlation 이 \(0\) 과 \(1\) 사이의 값을 가지게 된다.
다시 위의 예로 돌아가면, \(x_1, x_2\) 의 correlation 을 살펴보자.
\[ \cos \theta = \frac{x_1^T x_2}{\lVert x_1 \rVert \lVert x_2 \rVert} \approx 0.92 \]비록 correlation 이 완벽히 \(1\) 을 가지지는 않지만, 이정도면 아주 높게 서로 correlate 되었다고 말할 수 있다. 다음 그림을 보면 각각의 점의 쌍이 \(x_2 = \alpha x_1\) 에 상당히 가까움을 알 수 있다.
그러면 \(\alpha\) 는 어떻게 구할까?
\(x_2 = \alpha x_1\) 을 만족시켜야 하지만, 정확히 모든 점들이 위의 그래프 위에 있지는 않다. 그렇다면, 이 문제는
\[ \inf \lVert x_2 - \alpha x_1 \rVert \]의 문제와 같아진다. 이것은 classical projection theorem 에 의해 쉽게 해결할 수 있는 문제이다. 위의 식을 만족시키는 \(\alpha\) 를 \(\hat{\alpha}\) 라고 하자. 이 경우, \(\alpha x_1 \perp x_2-\hat{\alpha} x_1\) 이므로, inner product를 다음과 같이 정의할 경우,
\[ \left< \alpha x_1 , x_2 - \hat{\alpha} x_1 \right> = \alpha x_1^T (x_2 - \hat{\alpha} x_1) = \alpha (x_1^T x_2 - \hat{\alpha} x_1^T x_1) =0 \] \[ \therefore \hat{\alpha}=\frac{x_1^T x_2}{x_1^T x_1} \approx 1.05 \]두 벡터 \(x_1, x_2\) 의 \(\cos \theta\) 가 correlation 을 나타낸다면, \(\cos \theta\) 의 계산을 편하게 하기 위해서 normalize를 하면 다음과 같다.
\[ \begin{align*} u_1=\frac{x_1}{\lVert x_1 \rVert} \\ u_2=\frac{x_2}{\lVert x_2 \rVert} \end{align*} \]이렇게 놔두면 는 다음과 같이 아주 쉽게 구할 수가 있기 때문이다.
\[ \cos \theta = u_1^T u_2 \]그렇다면 행렬 \(X\) 에 대해서 각 column을 각 column의 norm으로 normalize 하면 다음과 같다.
\[ U= \begin{bmatrix} 0.74 & 0.65 & 0.62 \\ -0.02 & 0.03 & 0.33 \\ -0.06 & -0.09 & 0.02 \\ -0.22 & 0.03 & -0.38 \\ 0.28 & 0.33 & 0.19 \\ -0.54& -0.49& -0.29 \\ -0.18 & -0.47& -0.49 \end{bmatrix} \]만약 \(C=U^T U\) 라고 한다면
\[ C= \begin{bmatrix} 1 & 0.92 & 0.83 \\ 0.92 & 1 & 0.83 \\ 0.83 & 0.83 & 1 \end{bmatrix} \]이 된다. 이 행렬 \(C\) 가 바로 correlation 행렬이다. 여기서 알 수 있듯이, \(3\) 가지 시험 점수들은 모두 positively correlated 이다. 만약 negatively correlated 일 경우, 음의 계수를 가질 것이다. 계수가 \(0\) 이면 uncorrelated 이다. 평균값으로 부터의 편차를 나타내는 벡터들이 서로 orthogonal 이면 uncorrelated 이고, \(0\) 의 계수를 가지게 된다.
통계에서 correlation 행렬과 관련되어 있는 또 다른 중요한 수치로서 covariance 행렬이 있다. Variance는 어떻게 계산하는지 알고 있을 것이다. 평균에서의 편차들을 각각 제곱한 값들의 평균이다. 즉, variance는 다음과 같이 정의된다.
\[ s^2=\frac{1}{n-1} \sum_i^n x_i^2 = \frac{x^T x}{n-1} \]이것은 표준편차 \(s\) 의 제곱값이다. 만약 각각 \(n\) 개의 값들을 가지는 두개의 데이터 집합
를 가지고 있다면, 각각 평균값을 빼버린, 편차만을 나타내는 새로운 변수
을 정의할 수 있다. 이럴 경우 covariance 는 다음과 같이 정의된다.
만약 행렬 가 2개 이상의 데이터 집합을 가질 경우에는 covariance (scalar)값을 가지는 것이 아니라, covariance 행렬, S, 을 가지게 된다.
이 예에서 covariance 행렬은 다음과 같은 값을 가지게 된다.
여기서 주대각선 값은
의 각각 variance (분산) 값이다. Off-diagonal 값들은 covariance 이다.