AI

머신러닝에서의 Correlation(상관)

EddyLee 2026. 6. 4. 15:28

1. Correlation

(정의) 상관관계 = 두 변수가 서로 관련되어 함께 변하는 정도와 방향을 나타내는 통계적 개념. 한 변수가 변할 때 다른 변수가 어떻게 변하는지를 수치(-1과 +1 사이)로 표현하며, 1에 가까우면 양의 상관, -1에 가까우면 음의 상관, 0에 가까우면 상관관계가 거의 없음을 의미한다. 보통 이 수치는 "상관계수(Correlation Coefficient)"라고 나타낸다.

주의: 하나가 다른 하나에 영향을 주는 인과관계는 절대 아니다. 둘의 관계가 서로 "상관성을 가진다"는 것이다.

 

scatter plot으로 표현하면 이것을 직관적으로 이해할 수 있다.

 

출처: 유쌤의 R로 배우는 데이터 분석

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이 되려면 모든 점이 직선 위에 있어야 한다. 

(그림을 한번 참고해도 좋다 - 가장 위 행은 모든 산점도에서의 상관계수를, 가운데 행은 직선 산점도에서의 상관계수를, 맨 아래는 비선형적인 산점도에서의 상관계수를 나타낸다)

By DenisBoigelot, original uploader was Imagecreator - 자작, original uploader was Imagecreator, CC0, https://commons.wikimedia.org/w/index.php?curid=15165296

 

그렇다면, 정리해봤을 때 우리는 다음의 사실을 알 수 있다.

'상관관계를 나타내는 상관계수는 결국, 두 변수 X, Y간 직선관계가 있는지 측정하는 통계량이구나'

그렇다면, 우리는 이제 이 직선관계가 얼만큼 기울어져있는지, 두 변수가 동시에 각자 얼마나 변하는지 알아봐야 한다.

데이터를 분석하는 우리에겐, 이게 가장 궁금하지 않을까?

그 해답은 "공분산(Covariance)"로 설명할 수 있다.

 

2. Variance(분산) & Standard Deviation(표준편차)

두 변수가 각자 얼만큼 변하는지 알기 위해선, 하나의 공통된 점을 기준으로 각 변수가 생긴 차이를 설명해야한다. 

직관적으로, 가장 이상적인 공통된 점은 두 변수 각각의 변하지 않는 값인 평균이 될 것이다.

그 전에, 분산을 어떻게 구했는지 먼저 설명해본다면 공분산을 이해하기 쉽지 않을까 하여 간단하게 설명과, 수식을 올려본다.

 

분산이란 어떠한 데이터의 평균인(기댓값)으로부터 얼마나 넓게 퍼져있는지 나타내는 값이라고 할 수 있다.

정의를 써보자면, 분산은 "관측된 값에서 평균을 뺀 값을 제곱하고, 그것을 모두 더한 후 전체 개수로 나눠서 구한다. 즉, 평균에 대한 편차 제곱의 평균을 구한 값이다."

분산이 크면 클수록 데이터 분포가 평탄화된 상태이고, 분산이 작으면 기댓값 주위에 봉긋하게 모인 볼록한 상태를 나타낼 것이다.

(빨강: 분산이 큰 상태, 파랑: 분산이 작은 상태)

By JRBrown - 자작, 퍼블릭 도메인, https://commons.wikimedia.org/w/index.php?curid=10777712

수식은 다음과 같다.

근데 사실 분산은 편차를 제곱하면서 값이 크게 증가하게 되는데, 따라서 이러한 분산 값은 "어떠한 의미를 가지고 있는지" 파악하기 어렵다. 따라서 우리는 이러한 분산을 '기존과 비교했을 때 어느정도 의미를 가지는데?'를 알기 위해, 분산에 루트를 씌우게 된다. 이게 바로 표준편차가 되는 것이다.

 

정리해보면,

  • 분산: "얼마나 퍼져있는가"를 제곱해서 나타낸 값
  • 표준편차: 분산의 제곱근을 취해 원래 단위로 되돌린 값, "평균에서 얼마나 떨어져 있는가"를 수치화한 값

 

3. Covariance

기존에 공분산을 알려고 하는 이유가 뭐였는지 다시 되돌아보자. "두 변수의 직선관계가 얼만큼 기울어져있는지, 두 변수가 동시에 각자 얼마나 변하는지를 알아보되, 단 기준은 각 변수의 평균으로 잡자."

먼저 수식은 다음과 같이 나오게 된다.

이제 이 의미를 한번 살펴보자.

일단, X와 Y가 완전히 관련도 없는 독립된 변수들이라면? 아래와 같이 수식이 바뀌게 되고,

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

티스토리 친절한 데이터 사이언티스트 되기 강좌 - https://recipesds.tistory.com/entry/Covariance-%EA%B3%B5%EB%B6%84%EC%82%B0%EA%B3%BC-Pearson-%EC%83%81%EA%B4%80%EA%B3%84%EC%88%98%EC%9D%98-%EC%86%8D%EC%82%AC%EC%A0%95

 

반대로, 두 변수가 짝을 이루고 있다고 가정해보면, 공분산은 다음과 같이 계산될 수 있다.

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)에 갈아끼워주면 다음과 같은 식이 나오게 된다.

표준화된 X
피어슨의 상관계수

이제 이 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