머신러닝: 공분산(Covariance) 완벽 이해
머신러닝과 통계학에서 공분산은 두 변수 간의 관계를 나타내는 중요한 지표다. 이 글에서는 공분산의 정의, 계산 방법, 그리고 실제 데이터 분석에서 어떻게 활용되는지를 자세히 설명한다. 공분산을 통해 데이터의 숨겨진 패턴을 발견하고, 더 나아가 예측 모델의 성능을 향상시키는 방법을 알아본다.
🤔 공분산(Covariance)이란?
공분산은 두 개의 확률변수가 함께 변하는 정도를 나타내는 통계적 척도다. 즉, 한 변수가 변할 때 다른 변수가 어떤 경향성을 보이는지를 측정한다. 공분산 값이 양수면 두 변수는 양의 상관관계를 가지며, 음수면 음의 상관관계를 가진다. 공분산이 0이면 두 변수 간에 선형적인 관계가 없음을 의미한다. 그러나 공분산은 변수들의 스케일에 따라 값이 달라지기 때문에 상관관계의 강도를 직접적으로 비교하기는 어렵다.
🧮 공분산 계산 방법
공분산은 다음과 같은 수식으로 계산한다.
- 모집단 공분산: cov(X, Y) = Σ [(Xi - μX)(Yi - μY)] / N
- 표본 공분산: cov(X, Y) = Σ [(Xi - X̄)(Yi - Ȳ)] / (n-1)
여기서,
- X, Y는 각각 확률변수를 나타낸다.
- Xi, Yi는 각 변수의 개별 데이터 포인트를 나타낸다.
- μX, μY는 각 변수의 모집단 평균을 나타낸다.
- X̄, Ȳ는 각 변수의 표본 평균을 나타낸다.
- N은 모집단 크기를 나타낸다.
- n은 표본 크기를 나타낸다.
표본 공분산을 계산할 때 분모를 (n-1)로 나누는 이유는 불편추정량을 구하기 위해서다.
📊 공분산의 활용 예시
공분산은 다양한 분야에서 활용된다. 예를 들어, 주식 시장에서 두 주식의 수익률 간의 공분산을 계산하여 투자 포트폴리오를 구성할 수 있다. 또한, 머신러닝에서는 특성(feature) 간의 관계를 파악하여 모델의 성능을 향상시키는 데 사용될 수 있다.
예를 들어, 광고 지출과 매출 간의 관계를 분석한다고 가정해보자. 광고 지출이 증가함에 따라 매출도 증가하는 경향이 있다면, 광고 지출과 매출 간의 공분산은 양수가 될 것이다. 반대로, 어떤 특정한 변수가 증가함에 따라 다른 변수가 감소하는 경향이 있다면 공분산은 음수가 될 것이다.
import numpy as np
# 예시 데이터
advertising_spend = np.array([100, 200, 300, 400, 500]) # 광고 지출
sales = np.array([500, 650, 800, 950, 1100]) # 매출
# 공분산 계산
covariance = np.cov(advertising_spend, sales)[0, 1]
print("공분산:", covariance)
위 코드는 광고 지출과 매출 간의 공분산을 계산하는 간단한 예제다. numpy
라이브러리의 cov
함수를 사용하여 공분산을 계산할 수 있다. 결과값은 두 변수 간의 관계를 나타내며, 양수인지 음수인지, 그리고 그 크기를 통해 관계의 강도를 파악할 수 있다.
📈 공분산의 한계와 보완
공분산은 변수 간의 관계를 파악하는 데 유용하지만, 몇 가지 한계점을 가지고 있다. 가장 큰 문제는 변수들의 스케일에 따라 값이 달라진다는 점이다. 따라서 공분산 값 자체로는 관계의 강도를 직접적으로 비교하기 어렵다.
이러한 문제를 해결하기 위해 상관계수(correlation coefficient)를 사용한다. 상관계수는 공분산을 각 변수의 표준편차로 나누어 정규화한 값으로, -1과 1 사이의 값을 가진다. 상관계수를 사용하면 변수들의 스케일에 영향을 받지 않고 관계의 강도를 비교할 수 있다.
상관계수는 다음과 같이 계산된다.
- 상관계수(r) = cov(X, Y) / (σX * σY)
여기서,
- σX, σY는 각 변수의 표준편차를 나타낸다.
🎯 핵심 용어 정리
- 공분산 (Covariance): 두 변수가 함께 변하는 정도를 나타내는 통계적 척도
- 상관계수 (Correlation Coefficient): 공분산을 정규화하여 변수 간의 관계 강도를 비교하기 쉽게 만든 값
- 표준편차 (Standard Deviation): 데이터가 평균으로부터 흩어진 정도
- 모집단 (Population): 연구 대상이 되는 전체 집단
- 표본 (Sample): 모집단에서 추출한 일부 데이터
- 불편추정량 (Unbiased Estimator): 추정량의 기대값이 실제 모수와 일치하는 추정량