move84

머신러닝에서의 상관계수 이해 본문

머신러닝

머신러닝에서의 상관계수 이해

move84 2025. 4. 16. 07:10
반응형

머신러닝 모델을 개발하고 평가할 때, 데이터 내 변수들 간의 관계를 파악하는 것은 매우 중요합니다. 그 중에서도 상관계수는 두 변수 간의 선형적 관계의 강도와 방향을 나타내는 지표로 널리 활용됩니다. 이 글에서는 상관계수의 개념, 종류, 활용 방법, 그리고 해석 시 주의사항에 대해 자세히 알아보겠습니다.


📌 상관계수란? (What is Correlation Coefficient?)
상관계수(Correlation Coefficient)는 두 변수 사이의 선형적인 관계의 정도를 나타내는 통계적 척도입니다. 상관계수의 값은 -1부터 +1 사이의 값을 가지며, +1은 완벽한 양의 선형 상관관계, -1은 완벽한 음의 선형 상관관계, 0은 선형 상관관계가 없음을 의미합니다. 여기서 '선형적'이라는 단어가 중요한데, 상관계수는 변수 간의 비선형적인 관계는 잘 나타내지 못합니다.


📌 상관계수의 종류 (Types of Correlation Coefficients)
다양한 종류의 상관계수가 존재하며, 각 상관계수는 데이터의 특성과 측정하고자 하는 관계에 따라 선택됩니다. 대표적인 상관계수는 다음과 같습니다.

  • 피어슨 상관계수 (Pearson Correlation Coefficient): 두 변수가 모두 연속형 변수일 때 사용되며, 변수 간의 선형적인 관계의 강도를 측정합니다. 이는 공분산을 각 변수의 표준편차의 곱으로 나눈 값입니다.
  • 스피어만 상관계수 (Spearman Correlation Coefficient): 두 변수가 순위 척도(ordinal scale)일 때 또는 연속형 변수이지만 선형성이 가정되지 않을 때 사용됩니다. 각 변수의 실제 값 대신 순위를 사용하여 상관관계를 계산합니다.
  • 켄달의 타우 (Kendall's Tau): 스피어만 상관계수와 유사하게 순위 척도 변수 간의 상관관계를 측정하지만, 계산 방식이 다릅니다. 켄달의 타우는 데이터 쌍의 일치성(concordance)과 불일치성(discordance)을 기반으로 합니다.

📌 상관계수의 계산 (Calculating Correlation Coefficient)
피어슨 상관계수는 다음과 같은 수식으로 계산됩니다.

r = Σ((xi - x̄)(yi - ȳ)) / (√(Σ(xi - x̄)²) * √(Σ(yi - ȳ)²))

여기서 xi와 yi는 각각 i번째 데이터 포인트의 x값과 y값이며, x̄와 ȳ는 각각 x와 y의 평균입니다.

다음은 파이썬을 사용하여 피어슨 상관계수를 계산하는 간단한 예제입니다.

import numpy as np

# 예시 데이터
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])

# 평균 계산
x_mean = np.mean(x)
y_mean = np.mean(y)

# 분자와 분모 계산
numerator = np.sum((x - x_mean) * (y - y_mean))
denominator_x = np.sqrt(np.sum((x - x_mean)**2))
denominator_y = np.sqrt(np.sum((y - y_mean)**2))
denominator = denominator_x * denominator_y

# 상관계수 계산
correlation_coefficient = numerator / denominator

print(f"피어슨 상관계수: {correlation_coefficient}")

위 코드는 두 변수 x와 y 사이의 피어슨 상관계수를 계산하는 방법을 보여줍니다. numpy 라이브러리를 사용하여 평균을 계산하고, 분자와 분모를 계산한 다음, 상관계수를 계산합니다.


📌 상관계수의 활용 (Using Correlation Coefficient)
상관계수는 다양한 머신러닝 및 통계 분석에서 유용하게 활용됩니다.

  • 특성 선택 (Feature Selection): 머신러닝 모델을 학습하기 전에, 목표 변수와 높은 상관관계를 가지는 특성을 선택하여 모델의 성능을 향상시킬 수 있습니다.
  • 다중공선성 (Multicollinearity) 탐지: 독립 변수들 간에 높은 상관관계가 존재하면 다중공선성 문제가 발생할 수 있습니다. 상관계수를 사용하여 다중공선성을 탐지하고, 이를 해결하기 위한 조치를 취할 수 있습니다.
  • 데이터 탐색 (Data Exploration): 데이터 분석 초기 단계에서 변수들 간의 관계를 파악하여 데이터에 대한 이해도를 높일 수 있습니다.

📌 상관계수 해석 시 주의사항 (Cautions when Interpreting Correlation Coefficient)
상관계수를 해석할 때는 몇 가지 주의해야 할 점이 있습니다.

  • 인과관계 (Causation) 혼동 금지: 상관관계는 인과관계를 의미하지 않습니다. 두 변수 사이에 높은 상관관계가 있다고 해서 한 변수가 다른 변수를 유발한다고 단정할 수 없습니다.
  • 비선형 관계 무시: 상관계수는 선형적인 관계만 측정할 수 있습니다. 변수 간의 비선형적인 관계는 상관계수로 파악하기 어렵습니다.
  • 이상치 (Outlier) 영향: 이상치는 상관계수에 큰 영향을 미칠 수 있습니다. 이상치를 제거하거나, 로버스트한 상관계수(예: 스피어만 상관계수)를 사용하는 것을 고려해야 합니다.
  • 데이터 범위 고려: 상관계수는 데이터의 특정 범위 내에서만 유효할 수 있습니다. 데이터 범위를 벗어나는 경우 상관관계가 달라질 수 있습니다.

📌 예시 (Example)

두 변수 x와 y가 있다고 가정해 봅시다. x는 학생의 공부 시간이고, y는 시험 점수입니다. 만약 x와 y의 피어슨 상관계수가 0.8이라면, 공부 시간이 늘어날수록 시험 점수가 높아지는 경향이 있다는 것을 의미합니다. 하지만 이것이 공부 시간을 늘리면 반드시 시험 점수가 높아진다는 인과관계를 의미하는 것은 아닙니다. 다른 요인(예: 학생의 지능, 학습 방법 등)도 시험 점수에 영향을 미칠 수 있습니다.


상관계수는 머신러닝 모델 개발 및 데이터 분석에서 중요한 도구입니다. 하지만 상관계수를 사용할 때는 그 의미와 한계를 정확히 이해하고, 해석 시 주의사항을 고려해야 합니다.


주요 용어 정리:

  • 상관계수 (Correlation Coefficient): 변수 간의 선형적 관계의 강도와 방향을 나타내는 지표
  • 피어슨 상관계수 (Pearson Correlation Coefficient): 연속형 변수 간의 선형적 관계 측정
  • 스피어만 상관계수 (Spearman Correlation Coefficient): 순위 척도 변수 간의 상관관계 측정
  • 켄달의 타우 (Kendall's Tau): 순위 척도 변수 간의 상관관계 측정 (데이터 쌍의 일치성/불일치성 기반)
  • 다중공선성 (Multicollinearity): 독립 변수들 간의 높은 상관관계
  • 특성 선택 (Feature Selection): 목표 변수와 높은 상관관계를 가지는 특성 선택
반응형