1. 들어가기 전에
머신러닝을 공부하다가, 판다스에서 상관계수를 계산해주는 코드를 작성하였다.
import pandas as pd
url = ""
data = pd.read_csv(url)
data.corr()
피어슨, 스피어만과 같은 상관계수는 많이 들어봤는데 판다스에서 default로 어떤 상관계수를 쓰고 어떤 상관계수들을 받고 각각 특징이 궁금해졌다.
우선, 공식 홈페이지를 살펴본 결과, 피어슨 상관계수를 default로 사용한다. 그리고 피어슨, 켄달, 스피어만 상관계수를 사용할 수 있다.
상관계수를 이해하기전 공분산을 이해하는 것이 필수이므로 공분산을 알아본 뒤, 상관계수의 정의를 살펴보고 각각 특징을 알아보자.
2. 공분산
정의
2개의 확률변수의 선형 관계를 나타내는 값이다. (출처: 위키피디아)
$$
Con(X,Y) = E[(X-E[X])(Y-E[Y])]
$$
다만, 공분산은 치명적인 문제점이 있다. 확률변수의 단위 크기에 영향을 많이 받기 때문에, 상관관계의 정도를 알 수 없다. 이 때문에 상관계수가 등장하게 된다.
3. 상관계수
정의
두 변수 사이의 통계적 관계를 포현하기 위해 특정한 상관 관계의 정도를 수치적으로 나타낸 계수이다. 여러 유형의 상관계수가 존재하지만 제각기 자신들만의 정의와 특징이 있다. 이들은 모두 값의 범위가 -1에서 +1 사이에 속하며 여기서 ±1은 정도가 가장 센 잠재적 일치를 나타내고 0은 정도가 가장 센 불일치를 나타낸다. (출처: 위키피디아)
3-1. 선형성(linearity) vs 단조성(Monotonicity)
- 선형성: 말그대로 선형(직선)으로 표현되는 경향
- 단조성: 두 변수가 반드시 일정한 비율로 변화하는 것은 아니다. 이러한 경우 단조 관계라고 볼 수 있다.
따라서 선형 관계는 단조 관계에 포함되는 개념이다.
4. 피어슨 상관계수 (Pearson linear correlation coefficient)
PLCC는 두 변수 간에 선형성이 얼마나 강한지를 측정하기 위해 사용된다.
$$
r_{X Y}=\frac{\sum_{i}^{n}\left(X_{i}-\bar{X}\right)\left(Y_{i}-\bar{Y}\right)}{\sqrt{\sum_{i}^{n}\left(X_{i}-\bar{X}\right)^{2}} \sqrt{\sum_{i}^{n}\left(Y_{i}-\bar{Y}\right)^{2}}}
$$
필자는 다음과 같이 이해했다. 공분산으로는 상관관계의 정도를 알아낼 수 없다. 따라서 표준편차를 통해 -1과 1사이로 정규화를 하였고 이 덕분에 상관관계의 정도를 알 수 있게 된다. 이것이 피어슨 상관계수이다. (위 식을 자세히보면 두 변수의 공분산을 각각의 표준 편차의 곱으로 나눈 값임을 알 수 있다.)
4-1. 그렇다면 왜 표준편차인가?
Reference에도 언급했지만, 해당 글을 보면 알 수 있다.
위 글을 보면,
$$
|\operatorname{Cov}(X, y)| \leq \sqrt{\operatorname{Var}(X) \cdot \operatorname{Var}(y)}
$$
가 됨을 알 수 있고 따라서, -1부터 1사이의 값을 갖게 된다.
4-2. 코사인 유사도
한편, 코사인 유사도의 식을 보자.
$$
\text { similarity }=\cos (\theta)=\frac{A \cdot B}{\|A\|\|B\|}=\frac{\sum_{i=1}^{n} A_{i} \times B_{i}}{\sqrt{\sum_{i=1}^{n}\left(A_{i}\right)^{2}} \times \sqrt{\sum_{i=1}^{n}\left(B_{i}\right)^{2}}}
$$
피어슨 상관계수의 코사인 유사도의 식은 같다. 따라서, 추천 시스템이나 평점 시스템이 있는 컨텐츠의 유사도 측정 등에 많이 활용된다.
5. 스피어만 상관계수 & 켄달 상관계수
두 방법 모두 변숫값 대신 순위를 사용하고 비모수적 상관계수이다. (피어슨은 모수적 상관계수)
5-1. 스피어만 상관 계수
스피어만 상관 계수는 값에 순위를 매겨 그 순위에 대해 상관계수를 구하는 것이다. 이런 특성 때문에 연속형 변수가 아닌 순서형인 경우에도 상관계수를 구할 수 있다. 식은 다음과 같다.
$$
p=\frac{6 \sum d_{i}^{2}}{n\left(n^{2}-1\right)}
$$
여기서 $d_i$는 $x_i$의 순위 $-y_i$의 순위이다.
스피어만은 데이터 내 편차와 에러에 민감하며 일반적으로 켄달 상관계수보다 높은 값을 가진다.
5-2. 켄달 타우
켄달 타우는 두 변수들 간의 순위를 비교하여 연관성을 계산한다. 식은 다음과 같다.
$$
p = \frac{C-D}{C+D}
$$
여기서 $C$는 concordant pair의 수, $D$는 concordant pair가 아닌 수를 의미한다.
concordant pair?
각 변수의 비교 대상의 상하관계가 같은 경우
샘플 사이즈가 작거나 데이터의 동률이 많을 때 유용하다고 한다.
6. 마무리
공분산과 상관계수에 대해 가볍게 알아보았다. 유의할 점은 상관계수로는 두 변수의 인과관계는 알 수가 없다. 이를 확인하기 위해서는 회귀분석을 활용해야 한다.
7. Reference
- 선형, 비선형 및 단조 관계
- 피어슨 상관 계수
- 공분산(Covariance, Cor)과 상관계수(Correalation coefficient) 이란 - 2
- 공분산과 상관계수
- 켄달타우란? - 비모수적 상관계수에 대해서
'머신러닝 > 통계' 카테고리의 다른 글
[통계] 1종 오류와 2종 오류 & 오차행렬(confusion matrix) (0) | 2022.07.27 |
---|---|
[통계] 귀무가설과 대립가설 (0) | 2022.07.20 |