결정 계수
결정 계수 (R-squared)
개요
결정 계수(R-squared)는 통계학에서 회귀 모델의 설명력(예측 능력)을 측정하는 주요 지표로, 종속 변수의 변동성 중 독립 변수에 의해 설명되는 비율을 나타냅니다. 0~1 사이의 값을 가지며, 값이 클수록 모델이 데이터를 더 잘 설명한다고 해석됩니다. 결정 계수는 회귀 분석에서 모델 적합도 평가에 널리 사용되며, 다양한 분야(경제학, 사회과학, 공학 등)에서 활용됩니다.
정의 및 개념
1. 기본 정의
결정 계수는 회귀 모델이 데이터의 변동성을 얼마나 잘 설명하는지를 수치화한 지표입니다. 수식으로는 다음과 같이 표현됩니다:
$$ R^2 = 1 - \frac{SS_{\text{res}}}{SS_{\text{tot}}} $$
- $ SS_{\text{res}} $: 잔차 제곱합 (Residual Sum of Squares, RSS)
→ 예측값과 실제값의 차이를 제곱한 합 - $ SS_{\text{tot}} $: 총 제곱합 (Total Sum of Squares, TSS)
→ 실제값과 평균값의 차이를 제곱한 합
2. 의미 해석
- R² = 1: 모델이 모든 데이터 포인트를 완벽하게 설명함.
- R² = 0: 모델이 독립 변수와 종속 변수 간 관계를 전혀 설명하지 않음.
- 일반적으로 R²가 높을수록 모델의 예측력이 우수하다고 판단되지만, 과적합(overfitting)이나 비선형 관계 등에서 한계가 있습니다.
계산 방법
1. 단순 선형 회귀에서의 계산
단순 선형 회귀 모델 $ y = a + bx $에서 결정 계수는 다음과 같이 계산됩니다:
$$ R^2 = \left( \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} \right)^2 $$
- $ x_i, y_i $: 데이터 포인트
- $ \bar{x}, \bar{y} $: 평균값
2. 다중 회귀에서의 계산
다중 회귀 모델 $ y = a + b_1x_1 + b_2x_2 + ... + b_nx_n $에서는 선형 대수를 활용한 행렬 계산이 필요합니다. 일반적으로 통계 소프트웨어(예: Python의 [sklearn](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%B6%84%EC%84%9D/sklearn)
, R)에서 자동으로 계산됩니다.
해석 및 한계
1. 장점
- 모델의 설명력에 대한 직관적인 이해 가능.
- 비교 분석 시 유용 (예: 두 모델 간 성능 비교).
2. 단점
- 과적합을 감지하지 못함 (데이터가 많을수록 R²가 증가할 수 있음).
- 비선형 관계를 설명하지 못함 (예: 다항 회귀 모델에서 R²가 높아도 실제 패턴이 비선형일 수 있음).
- 샘플 크기에 민감 (작은 샘플에서는 과대평가 가능성).
응용 분야
1. 경제학
- GDP 성장률 예측 모델에서 독립 변수(예: 투자, 소비)의 설명력 평가.
- 시장 수요 예측.
2. 의료 연구
- 질병 발생 확률을 예측하는 모델에서 요인별 기여도 분석.
3. 공학
- 설계 변수와 성능 간 관계 분석 (예: 자동차 연비 예측).
관련 개념
개념 | 설명 |
---|---|
조정 결정 계수 (Adjusted R²) | 독립 변수 수를 고려한 수정된 결정 계수. 과적합을 방지하기 위해 사용됨. |
RMSE (Root Mean Squared Error) | 예측 오차의 평균 제곱근. R²와 함께 모델 성능 평가에 활용. |
MAPE (Mean Absolute Percentage Error) | 상대적인 오차 비율을 나타내며, R²와 보완적 사용 가능. |
참고 자료
- Wikipedia: Coefficient of determination
- StatQuest: R-squared, Adjusted R-squared & Predicted R-squared
- Python
sklearn.metrics.r2_score
문서: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.r2_score.html
예시 코드
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
# 데이터 생성 (예: 단순 선형 관계)
X = [[1], [2], [3], [4], [5]]
y = [2, 4, 6, 8, 10]
model = LinearRegression()
model.fit(X, y)
y_pred = model.predict(X)
r2 = r2_score(y, y_pred)
print(f"결정 계수 (R²): {r2:.2f}") # 출력: R² = 1.00
결론
결정 계수는 회귀 모델의 설명력을 평가하는 데 유용한 지표이지만, 단독으로 사용할 경우 오해를 줄 수 있습니다. 실제 분석에서는 R²와 함께 RMSE, MAPE 등 다른 지표를 종합적으로 고려해야 합니다. 또한, 모델의 과적합 여부나 비선형 관계를 확인하기 위해 추가적인 검증이 필요합니다.
이 문서는 AI 모델(qwen3-30b-a3b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.