1. Correlation
(정의) 상관관계 = 두 변수가 서로 관련되어 함께 변하는 정도와 방향을 나타내는 통계적 개념. 한 변수가 변할 때 다른 변수가 어떻게 변하는지를 수치(-1과 +1 사이)로 표현하며, 1에 가까우면 양의 상관, -1에 가까우면 음의 상관, 0에 가까우면 상관관계가 거의 없음을 의미한다. 보통 이 수치는 "상관계수(Correlation Coefficient)"라고 나타낸다.
주의: 하나가 다른 하나에 영향을 주는 인과관계는 절대 아니다. 둘의 관계가 서로 "상관성을 가진다"는 것이다.
scatter plot으로 표현하면 이것을 직관적으로 이해할 수 있다.

X축에 한 변수, Y축에 다른 변수를 설정했다고 가정하고, 두 변수 값을 산포도로 나타내보자.
- (1,1) 산점도: X 변수가 커질 때 반대로 Y 변수의 값들은 떨어진다. 꽤나 규칙적으로 떨어져있으니, 우리는 X 값을 알면 Y 값도 추측할 수 있게 된다. 한 변수가 증가하는데 한 변수가 반대로 감소한다 = 두 변수 사이는 부적 상관관계를 가진다 = 상관계수는 -1에 가까워질 것이다
- (2,1) 산점도: 이번엔 X가 커질 때 Y도 값이 꽤나 규칙적으로 커진다. 즉, 이 두 변수는 정적 상관관계를 가진다. 그러면 반대로, 상관계수는 1에 가까워질 것이다.
- (1,2), (2,1) 산점도: 얼추 두 변수 사이의 관계가 어떤지 패턴으로는 이해할 수 있지만, 뭔가 규칙적으로 보이진 않는다. 하지만 경향성이 존재하므로 각각 -0.7, 0.7 정도로 상관관계를 표현할 수 있다.
- 이제 나머지 산점도들은 모두 -0.5에서 0.5 사이다. 보다시피 0으로 갈수록 두 변수 간 상관관계를 추측하기 어려워지며, 0으로 간다면 두 변수는 경향성도 없이 랜덤으로 산점도에 점이 쭉 찍힐 것이다.
내가 떠올렸던 궁금증!
Q. 두 변수를 산포도에 뿌렸을 때 y=x, y=2x, y=x^2, y=e^x 모두 r=1일까? (여기서 r은 상관계수를 의미한다)
A. 결과적으로, No! 나중에 공분산 내용과 함께 설명하겠지만, correlation coefficient가 1이 되려면 모든 점이 직선 위에 있어야 한다.
(그림을 한번 참고해도 좋다 - 가장 위 행은 모든 산점도에서의 상관계수를, 가운데 행은 직선 산점도에서의 상관계수를, 맨 아래는 비선형적인 산점도에서의 상관계수를 나타낸다)

그렇다면, 정리해봤을 때 우리는 다음의 사실을 알 수 있다.
'상관관계를 나타내는 상관계수는 결국, 두 변수 X, Y간 직선관계가 있는지 측정하는 통계량이구나'
그렇다면, 우리는 이제 이 직선관계가 얼만큼 기울어져있는지, 두 변수가 동시에 각자 얼마나 변하는지 알아봐야 한다.
데이터를 분석하는 우리에겐, 이게 가장 궁금하지 않을까?
그 해답은 "공분산(Covariance)"로 설명할 수 있다.
2. Variance(분산) & Standard Deviation(표준편차)
두 변수가 각자 얼만큼 변하는지 알기 위해선, 하나의 공통된 점을 기준으로 각 변수가 생긴 차이를 설명해야한다.
직관적으로, 가장 이상적인 공통된 점은 두 변수 각각의 변하지 않는 값인 평균이 될 것이다.
그 전에, 분산을 어떻게 구했는지 먼저 설명해본다면 공분산을 이해하기 쉽지 않을까 하여 간단하게 설명과, 수식을 올려본다.
분산이란 어떠한 데이터의 평균인(기댓값)으로부터 얼마나 넓게 퍼져있는지 나타내는 값이라고 할 수 있다.
정의를 써보자면, 분산은 "관측된 값에서 평균을 뺀 값을 제곱하고, 그것을 모두 더한 후 전체 개수로 나눠서 구한다. 즉, 평균에 대한 편차 제곱의 평균을 구한 값이다."
분산이 크면 클수록 데이터 분포가 평탄화된 상태이고, 분산이 작으면 기댓값 주위에 봉긋하게 모인 볼록한 상태를 나타낼 것이다.
(빨강: 분산이 큰 상태, 파랑: 분산이 작은 상태)

수식은 다음과 같다.

근데 사실 분산은 편차를 제곱하면서 값이 크게 증가하게 되는데, 따라서 이러한 분산 값은 "어떠한 의미를 가지고 있는지" 파악하기 어렵다. 따라서 우리는 이러한 분산을 '기존과 비교했을 때 어느정도 의미를 가지는데?'를 알기 위해, 분산에 루트를 씌우게 된다. 이게 바로 표준편차가 되는 것이다.
정리해보면,
- 분산: "얼마나 퍼져있는가"를 제곱해서 나타낸 값
- 표준편차: 분산의 제곱근을 취해 원래 단위로 되돌린 값, "평균에서 얼마나 떨어져 있는가"를 수치화한 값
3. Covariance
기존에 공분산을 알려고 하는 이유가 뭐였는지 다시 되돌아보자. "두 변수의 직선관계가 얼만큼 기울어져있는지, 두 변수가 동시에 각자 얼마나 변하는지를 알아보되, 단 기준은 각 변수의 평균으로 잡자."
먼저 수식은 다음과 같이 나오게 된다.

이제 이 의미를 한번 살펴보자.
일단, X와 Y가 완전히 관련도 없는 독립된 변수들이라면? 아래와 같이 수식이 바뀌게 되고,

우항의 각각 0이 될 것이고, 결국 Cov(X,Y)는 0이 된다.

반대로, 두 변수가 짝을 이루고 있다고 가정해보면, 공분산은 다음과 같이 계산될 수 있다.
x1, x2, x3, ..., xn
y1, y2, y3, ..., yn
Cov(X,Y) = [(x1 - x평균)(y1-y평균) + (x2 - x평균)(y2 - y평균) + ... + (xn - x평균)(yn - y평균)]/n
이때 분자를 살펴보면, (1) x1이 x평균보다 크고 y1이 y평균보다 크면 양수를 갖게 됨 (2) x1이 x평균보다 작고 y1이 y평균보다 작으면 양수를 갖게됨 (3) x1이 x평균보다 크고 y1이 y평균보다 작으면 음수를 갖게 됨 (4) (3)의 반대의 경우도 음수를 갖게 됨
그리고 각 변수가 평균에서 멀리 떨어질 수록 이 값이 커지게 됨
따라서, 공분산은 크기와 부호를 갖게 되는데, 공분산의 부호는 방금 설명한 것처럼 두 변수의 분포 상태를 알 수 있게 해준다. 크기는 클수록 얇고 길게 분포하고 있다고 할 수 있게 된다. 하지만, X와 Y의 단위가 만약 다르다면, 어떻게 될까? 예를 들어서, 키로 구한 공분산과 몸무게로 구한 공분산이 있다고 가정했을 때, 두 데이터의 분포 형태가 동일하다고 해도 단위에는 차이가 있다. 키 데이터의 공분산이 훨씬 클 것인데, 그렇다고 키 분포 상태가 더 얇고 길게 나타났다고 할 수 있을까?
따라서 이러한 에러를 해결하기 위해 공분산도 표준화가 필요하다는 주장이 나왔고, 그렇게 나온 것이 Pearson의 상관계수이다.
4. Pearson's Correlation Coefficient
피어슨의 상관계수는 이러한 공분산의 정규화를 한 것이다. 공분산은 애초에 양수 +무한대까지 나올 수가 있고 음수라고 한다면 -무한대까지 나올 수가 있다. 그래서 각각의 변수를 표준화를 해서, Cov(X,Y)에 갈아끼워주면 다음과 같은 식이 나오게 된다.


이제 이 r이 왜 -1과 1 사이로밖에 나올 수가 없는지 확인해보면 "코시슈바르츠 부등식"으로 증명할 수 있다.



표준화된 변수의 분산은 항상 1이니까 우항이 다 1이 되버린다.
따라서 ..


이때 r = 1 또는 -1이 되는 조건은 A와 B가 선형 관계여야 한다.



마지막 식을 보면, 이는 X와의 관계에 있어서 Y는 일차함수라는 뜻을 가지게 된다. 따라서 c가 0보다 크면 r=1이 되고, c가 0보다 작으면 r=-1이 되는 것이다.
내가 질문했던 것이 기억이 나는가??

이렇게 보면, y=e^x나 x^2(x>0)과 같은 것은 왜 r=1이 아닌지 이해가 될 것이다.
이제 가장 위 첫 번째 그림을 봤을 때, 각 그래프에 대해서 왜 r이 -1부터 1까지 어떠한 값을 가지면 산점도가 그려지는지 이해가 될 것이다.
이렇게 해당 포스트에선 두 데이터(feature이라고 표현할 수도 있을 것 같다)에서 상관관계란 무엇인지, 이를 위한 공분산은 무엇이고 상관계수는 어떻게 나온 것인지 알아보았다.
'AI' 카테고리의 다른 글
| 머신러닝에서의 Causality(인과) (0) | 2026.06.04 |
|---|---|
| 머신러닝에서의 Correlation (상관) (0) | 2026.06.04 |
| GPU 분산 학습 - DDP (Distributed Data Parallel) (0) | 2026.06.04 |
| CTGAN의 탄생 (3) | 2024.11.13 |
| 퍼셉트론에서 신경망으로 (0) | 2024.11.11 |