[chapter6] 행렬 응용 : 데이터 분석에서의 행렬
1. 공분산(covariance)
평균중심화된 변수 사이의 내적
데이터 크기가 반영되므로 +, - 제한이 없다는 점을 제외하고 상관관계와 같은 방식으로 해석할 수 있다.(변수가 함께 이동할 때 양수, 변수가 따로 이동할 때 음수, 선형 관계가 없을 때 0)
공분산의 정규화 인자는 n-1이며 n은 데이터 점의 개수
공분산 정규화를 통해 더 많은 데이터 값을 합할 때마다 공분산이 커지는 것을 방지할 수 있다.
아래는 공분산에 대한 방정식이다.
$$ c_{a,b} = (n-1)^{-1}\sum_{i=1}^{n}(x_i - \bar{x})(y_i - \bar{y}) $$
공분산 with ChatGPT
잘 이해가 안가서 ChatGPT에게 물어봤다🤔
공분산은 '두 값이 함께 어떻게 움직이느냐'를 보는 지표로, 두 변수가 평균에서 벗어나는 방향이 비슷한지/반대인지를 말한다.
- 같이 커지고 같이 작아지면 = 양의 공분산(+)
- 하나는 커지는데 다른 하나는 작아지면 = 음의 공분산(-)
- 관계가 없으면 = 0 근처
평균에서 얼마나 벗어났는지가 핵심으로, 위 방정식으로 보면 x에서 x의 평균을, y에서 y의 평균을 빼고 그 두 값을 곱한다.
이 때 곱하는 이유는 두 값이 +/- 이면 곱도 -로 반대임을 알수있고, +/+ 거나 -/- 이면 곱도 +로 같은 방향임을 알 수 있기 때문이다.
즉, 공분산은 두 변수가 평균을 기준으로 같은 방향으로 흔들리는지, 반대 방향으로 흔들리는지를 수치로 표현한 것이다.
여기서 왜 n-1로 나누는지가 궁금했다.
모집단 전체가 아닌 일부 표본만으로 전체 모집단의 분산을 추정할 때, n으로 나누면 실제 모분산보다 작아지는 경향이 있다고 한다.
사실 직관적으로 '아하!'는 못했지만.. 그런가부다 로 넘어가자.😅
아무튼, 위 방정식을 잘 보면 평균화된 두 벡터 X, Y의 내적으로 볼 수 있는데, 아래처럼 나타낼 수 있다.
$$ \tilde{x}^T\tilde{y} / (n-1) $$
각 변수를 열에 담은 행렬 X를 만들고, X를 전치하면 $X^T$ 행은 X 행렬의 열이 된다.
따라서 $X^TX$는 모든 열과 열 사이의 공분산이 된다.
다시 말해 공분산 행렬의 (i,j)번째 원소는 데이터 특징 i와 j 사이의 내적이다.
공분산 행렬에 대한 행렬 방정식은 아래가 된다.
$$ C = X^TX\frac{1}{n-1} $$
여기서 행렬 C는 대칭이다.(자신의 전치행렬을 곱하면 정방 대칭이 되므로)
C의 대각 원소는 각 변수의 자기 자신에 대한 공분산이며, 통계에서는 이를 분산이라고 한다.
공분산 행렬은 아래와 같이 파이썬으로 계산할 수 있다.
datamean = np.mean(dataMat,axis=0) # 특징 평균 벡터
dataMatM = dataMat - datamean # 브로드캐스트를 이용한 평균중앙화
covMat = dataMatM.T @ dataMatM # 데이터 행렬의 전치와 데이터 행렬의 곱
covMat /= (dataMatM.shape[0]-1) # N-1로 나누기
Numpy에는 공분산과 상관 행렬을 각각 np.cov(), np.corrcoef()로 계산할 수 있다.
공분산 행렬?
변수가 여러 개 있을 때, 모든 쌍의 공분산을 한 번에 모아둔 표
변수 3개면 아래와 같이 된다.

이 때 대각선 원소는 한 변수 혼자 얼마나 퍼져 있는지를 의미하고, 비대각선은 두 변수가 평균에서 같은 방향으로 벗어나는 경향을 말한다.
2. 행렬-벡터 곱셈을 통한 기하학적 변환
순수회전행렬
길이를 유지하면서 벡터를 회전시킨다. 2차원 회전 행렬은 아래와 같다.
$$ T = \begin{bmatrix}cos(\theta ) & sin(\theta ) \\-sin(\theta ) & cos(\theta ) \\\end{bmatrix} $$
순수회전행렬은 기본적으로 직교 행렬이다. 즉, T의 열들은 직교이다.
이 변환행렬을 사용할 떄는 $\theta$를 특정 시계 방향 회전 각도로 설정한 다음, 행렬 T에 2 x N의 기하학적 점 행렬을 곱하면 된다.
여기서 행렬의 각 열은 N개의 데이터 점에 대한 (x, y) 좌표이다.
이 순수회전행렬을 사용하면 벡터의 점이 일정 각도만큼 회전한다.

'수학 > 선형대수' 카테고리의 다른 글
| [개발자를 위한 실전 선형대수학] 7.1 역행렬, 7.2 역행렬의 유형과 가역성의 조건, 7.3 역행렬 계산 (0) | 2026.01.03 |
|---|---|
| [개발자를 위한 실전 선형대수학] Chapter 6 연습문제 (0) | 2026.01.03 |
| [개발자를 위한 실전 선형대수학] Chapter 5 연습문제 (0) | 2025.12.23 |
| [개발자를 위한 실전 선형대수학] 5.3 계수, 5.4 계수 응용, 5.5 행렬식 (0) | 2025.12.11 |
| [개발자를 위한 실전 선형대수학] 5.1 행렬 노름, 5.2 행렬 공간 (0) | 2025.12.10 |