R²
개요
R²(R-squared, 결정계수)는 통계학 및 기계학습에서 회귀 모델의 성능을가하는 대표 지표 중 하나입니다. R² 모델이 종속 변수(dependent variable)의 분산 중 얼마나 많은 부분을 설명할 수 있는지를 나타내는 값으로, 일반적으로 0에서 1 사이의 값을 가집니다. 이 값이 1에 가까울수록 모델이 데이터의 변동성을 잘 설명하고 있음을 의미하며, 0에 가까울수록 설명력이 낮음을 나타냅니다.
R²는 특히 선형 회귀(Linear Regression) 모델의 평가에서 널리 사용되며, 모델의 예측 정확도를 직관적으로 해석할 수 있게 해줍니다. 그러나 R²만으로 모델의 전반적인 성능을 판단하기에는 한계가 있으므로, 다른 평가 지표와 함께 종합적으로 활용하는 것이 바람직합니다.
R²의 정의와 계산 방식
수학적 정의
R²는 다음과 같은 공식으로 계산됩니다:
[
R^2 = 1 - \frac{\text{잔차제곱합 (RSS)}}{\text{총제곱합 (TSS)}}
]
여기서:
- RSS(Residual Sum of Squares):
[
\text{RSS} = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
]
실제 관측값 (y_i)와 모델의 예측값 (\hat{y}_i)의 차이(잔차)를 제곱한 후 모두 더한 값입니다.
- TSS(Total Sum of Squares):
[
\text{TSS} = \sum_{i=1}^{n} (y_i - \bar{y})^2
]
각 관측값과 종속 변수의 평균 (\bar{y})의 차이를 제곱한 후 모두 더한 값입니다.
해석
- (R^2 = 1): 모델이 모든 변동성을 완벽히 설명함 (잔차 없음).
- (R^2 = 0): 모델이 평균값 기준으로 더 나은 설명력을 제공하지 않음.
- (R^2 < 0): 모델의 성능이 평균값 예측보다 나쁨 (과적합 또는 잘못된 모델일 수 있음).
R²의 특성과 장단점
장점
- 직관적 해석: "모델이 데이터의 몇 %를 설명한다"는 식으로 쉽게 이해할 수 있음.
- 모델 비교 용이: 동일한 데이터셋에서 서로 다른 회귀 모델을 비교할 때 유용함.
- 스케일 불변성: 종속 변수의 단위에 영향을 받지 않음.
단점
- 항상 증가하는 경향: 독립 변수를 추가할수록 R²는 감소하지 않고 항상 같거나 증가함 (과적합 유도 가능).
- 비선형 모델에 대한 제한: 비선형 회귀 모델에 적용할 경우 해석이 왜곡될 수 있음.
- 이상치에 민감: 데이터에 이상치(outlier)가 많을 경우 R² 값이 왜곡될 수 있음.
수정된 R² (Adjusted R²)
R²의 단점을 보완하기 위해 고안된 지표로, 수정된 R²(Adjusted R²)가 있습니다. 이는 변수의 수를 고려하여 패널티를 부여함으로써 모델의 복잡성을 반영합니다.
[
\text{Adjusted } R^2 = 1 - \left( \frac{(1 - R^2)(n - 1)}{n - k - 1} \right)
]
여기서:
- (n): 샘플 수
- (k): 독립 변수의 수
수정된 R²는 변수를 추가해도 모델의 설명력 향상이 충분하지 않으면 감소할 수 있으므로, 변수 선택(feature selection) 시 유용합니다.
R²와 다른 평가 지표의 비교
| 지표 |
설명 |
장점 |
단점 |
| R² |
설명된 분산의 비율 |
해석 쉬움, 표준화됨 |
변수 추가 시 증가, 비음수 보장 안 됨 |
| RMSE |
예측 오차의 제곱근 |
절대 오차 크기 제공 |
스케일에 의존 |
| MAE |
절대 오차의 평균 |
이상치에 강함 |
비선형 반영 부족 |
| Adjusted R² |
변수 수 보정된 R² |
과적합 방지 |
여전히 회귀 전용 |
활용 예시 (Python 코드)
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import numpy as np
# 샘플 데이터 생성
X = np.random.rand(100, 3)
y = 3 * X[:, 0] + 2 * X[:, 1] - X[:, 2] + np.random.randn(100) * 0.1
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)
# 예측 및 평가
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
print(f"R² 점수: {r2:.4f}")
참고 자료 및 관련 문서
- Scikit-learn:
r2_score 문서
- James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). An Introduction to Statistical Learning. Springer.
- Kutner, M. H., et al. (2005). Applied Linear Statistical Models. McGraw-Hill.
관련 개념
- 회귀 분석(Regression Analysis)
- 잔차 분석(Residual Analysis)
- 과적합(Overfitting)
- 교차 검증(Cross-Validation)
R²는 단독으로 사용하기보다는, 모델의 전반적인 성능을 평가하기 위해 다양한 지표와 함께 종합적으로 활용되어야 합니다. 특히 실제 응용에서는 도메인 지식과 데이터의 특성을 고려한 평가가 중요합니다.
R²의 오해와 주의사항
R² 값이 높다고 해서 반드시 모델이 '옳다'거나 변수 간의 인과관계가 성립한다고 단정해서는 안 됩니다.
- 상관관계 vs 인과관계: R²는 변수 간의 선형적 연관성을 측정할 뿐, 독립 변수가 종속 변수를 직접적으로 변화시켰다는 인과관계를 증명하지 않습니다. 높은 R² 값은 단순히 두 변수가 함께 움직이는 경향이 강함을 의미할 수 있습니다.
- 낮은 R²의 해석: 사회과학이나 심리학과 같이 인간의 행동을 다루는 데이터의 경우, 변동성이 매우 크기 때문에 R² 값이 낮게 나타나는 경우가 많습니다. 이 경우 R²가 낮더라도 통계적 유의성(p-value)이 확보되었다면, 해당 변수가 종속 변수에 유의미한 영향을 미친다고 해석할 수 있습니다.
- 과적합(Overfitting)의 위험: 변수를 무분별하게 추가하면 R²는 기계적으로 상승하지만, 이는 모델이 데이터의 노이즈까지 학습한 결과일 수 있으며 실제 예측 성능은 하락할 수 있습니다.
상관계수(r)와의 관계
단순 선형 회귀(Simple Linear Regression)에서 결정계수 $R^2$는 피어슨 상관계수 $r$의 제곱과 정확히 일치합니다.
수학적 증명
상관계수 $r$의 정의는 다음과 같습니다:
[ r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} ]
단순 선형 회귀의 기울기 $\hat{\beta}_1$은 $\hat{\beta}_1 = r \frac{s_y}{s_x}$로 표현되며, 이를 $R^2$ 공식에 대입하여 정리하면 다음과 같은 관계가 성립합니다:
[ R^2 = r^2 ]
이 관계는 $R^2$가 두 변수 사이의 선형적 상관관계의 강도를 제곱하여 표현한 것임을 의미하며, $r$이 $\pm 1$에 가까울수록 $R^2$는 1에 수렴하게 됩니다.
모델 진단과 잔차 분석
R²는 모델의 전반적인 설명력을 보여주지만, 모델의 가정(선형성, 독립성, 등분산성, 정규성)이 충족되었는지는 알려주지 않습니다. 따라서 R² 확인 후에는 반드시 잔차 분석(Residual Analysis)을 수행해야 합니다.
잔차 분석의 필요성
R²가 매우 높더라도 잔차 그래프에서 특정한 패턴(예: 곡선 형태)이 나타난다면, 이는 선형 모델이 데이터의 비선형적 관계를 포착하지 못했음을 의미합니다. 또한 잔차가 퍼지는 모양이 깔때기 형태라면 등분산성 가정이 위배된 것입니다.
잔차 그래프 예시
(예시: x축에 예측값, y축에 잔차를 배치하여 패턴 유무를 확인하는 산점도)
적합도 지표의 종합적 비교
모델의 적합도(Goodness-of-fit) 관점에서 $R^2$와 상관계수의 차이점은 다음과 같습니다.
| 구분 |
상관계수 ($r$) |
결정계수 ($R^2$) |
| 측정 대상 |
두 변수 간의 선형적 연관성 강도 |
모델이 설명하는 전체 분산의 비율 |
| 값의 범위 |
$-1$ ~ $1$ (방향성 포함) |
$0$ ~ $1$ (설명력의 크기) |
| 관점 |
변수 $X$와 $Y$의 관계 중심 |
모델 $\hat{y}$가 실제 $y$를 얼마나 잘 모사하는가 중심 |
| 해석 |
"두 변수는 강한 양/음의 상관관계가 있다" |
"이 모델은 데이터 변동성의 $X\%$를 설명한다" |
# R²
## 개요
**R²**(R-squared, 결정계수)는 통계학 및 기계학습에서 회귀 모델의 성능을가하는 대표 지표 중 하나입니다. R² 모델이 종속 변수(dependent variable)의 분산 중 얼마나 많은 부분을 설명할 수 있는지를 나타내는 값으로, 일반적으로 0에서 1 사이의 값을 가집니다. 이 값이 1에 가까울수록 모델이 데이터의 변동성을 잘 설명하고 있음을 의미하며, 0에 가까울수록 설명력이 낮음을 나타냅니다.
R²는 특히 **선형 회귀**(Linear Regression) 모델의 평가에서 널리 사용되며, 모델의 예측 정확도를 직관적으로 해석할 수 있게 해줍니다. 그러나 R²만으로 모델의 전반적인 성능을 판단하기에는 한계가 있으므로, 다른 평가 지표와 함께 종합적으로 활용하는 것이 바람직합니다.
---
## R²의 정의와 계산 방식
### 수학적 정의
R²는 다음과 같은 공식으로 계산됩니다:
\[
R^2 = 1 - \frac{\text{잔차제곱합 (RSS)}}{\text{총제곱합 (TSS)}}
\]
여기서:
- **RSS**(Residual Sum of Squares):
\[
\text{RSS} = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
\]
실제 관측값 \(y_i\)와 모델의 예측값 \(\hat{y}_i\)의 차이(잔차)를 제곱한 후 모두 더한 값입니다.
- **TSS**(Total Sum of Squares):
\[
\text{TSS} = \sum_{i=1}^{n} (y_i - \bar{y})^2
\]
각 관측값과 종속 변수의 평균 \(\bar{y}\)의 차이를 제곱한 후 모두 더한 값입니다.
### 해석
- \(R^2 = 1\): 모델이 모든 변동성을 완벽히 설명함 (잔차 없음).
- \(R^2 = 0\): 모델이 평균값 기준으로 더 나은 설명력을 제공하지 않음.
- \(R^2 < 0\): 모델의 성능이 평균값 예측보다 나쁨 (과적합 또는 잘못된 모델일 수 있음).
---
## R²의 특성과 장단점
### 장점
- **직관적 해석**: "모델이 데이터의 몇 %를 설명한다"는 식으로 쉽게 이해할 수 있음.
- **모델 비교 용이**: 동일한 데이터셋에서 서로 다른 회귀 모델을 비교할 때 유용함.
- **스케일 불변성**: 종속 변수의 단위에 영향을 받지 않음.
### 단점
- **항상 증가하는 경향**: 독립 변수를 추가할수록 R²는 감소하지 않고 항상 같거나 증가함 (과적합 유도 가능).
- **비선형 모델에 대한 제한**: 비선형 회귀 모델에 적용할 경우 해석이 왜곡될 수 있음.
- **이상치에 민감**: 데이터에 이상치(outlier)가 많을 경우 R² 값이 왜곡될 수 있음.
---
## 수정된 R² (Adjusted R²)
R²의 단점을 보완하기 위해 고안된 지표로, **수정된 R²**(Adjusted R²)가 있습니다. 이는 변수의 수를 고려하여 패널티를 부여함으로써 모델의 복잡성을 반영합니다.
\[
\text{Adjusted } R^2 = 1 - \left( \frac{(1 - R^2)(n - 1)}{n - k - 1} \right)
\]
여기서:
- \(n\): 샘플 수
- \(k\): 독립 변수의 수
수정된 R²는 변수를 추가해도 모델의 설명력 향상이 충분하지 않으면 감소할 수 있으므로, **변수 선택**(feature selection) 시 유용합니다.
---
## R²와 다른 평가 지표의 비교
| 지표 | 설명 | 장점 | 단점 |
|------|------|------|------|
| **R²** | 설명된 분산의 비율 | 해석 쉬움, 표준화됨 | 변수 추가 시 증가, 비음수 보장 안 됨 |
| **RMSE** | 예측 오차의 제곱근 | 절대 오차 크기 제공 | 스케일에 의존 |
| **MAE** | 절대 오차의 평균 | 이상치에 강함 | 비선형 반영 부족 |
| **Adjusted R²** | 변수 수 보정된 R² | 과적합 방지 | 여전히 회귀 전용 |
---
## 활용 예시 (Python 코드)
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.model_selection import train_test_split
import numpy as np
# 샘플 데이터 생성
X = np.random.rand(100, 3)
y = 3 * X[:, 0] + 2 * X[:, 1] - X[:, 2] + np.random.randn(100) * 0.1
# 데이터 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 모델 학습
model = LinearRegression()
model.fit(X_train, y_train)
# 예측 및 평가
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
print(f"R² 점수: {r2:.4f}")
```
---
## 참고 자료 및 관련 문서
- [Scikit-learn: `r2_score` 문서](https://scikit-learn.org/stable/modules/generated/sklearn.metrics.r2_score.html)
- James, G., Witten, D., Hastie, T., & Tibshirani, R. (2013). *An Introduction to Statistical Learning*. Springer.
- Kutner, M. H., et al. (2005). *Applied Linear Statistical Models*. McGraw-Hill.
---
## 관련 개념
- **회귀 분석**(Regression Analysis)
- **잔차 분석**(Residual Analysis)
- **과적합**(Overfitting)
- **교차 검증**(Cross-Validation)
R²는 단독으로 사용하기보다는, 모델의 전반적인 성능을 평가하기 위해 다양한 지표와 함께 종합적으로 활용되어야 합니다. 특히 실제 응용에서는 도메인 지식과 데이터의 특성을 고려한 평가가 중요합니다.
## R²의 오해와 주의사항
R² 값이 높다고 해서 반드시 모델이 '옳다'거나 변수 간의 인과관계가 성립한다고 단정해서는 안 됩니다.
* **상관관계 vs 인과관계**: R²는 변수 간의 선형적 연관성을 측정할 뿐, 독립 변수가 종속 변수를 직접적으로 변화시켰다는 인과관계를 증명하지 않습니다. 높은 R² 값은 단순히 두 변수가 함께 움직이는 경향이 강함을 의미할 수 있습니다.
* **낮은 R²의 해석**: 사회과학이나 심리학과 같이 인간의 행동을 다루는 데이터의 경우, 변동성이 매우 크기 때문에 R² 값이 낮게 나타나는 경우가 많습니다. 이 경우 R²가 낮더라도 통계적 유의성(p-value)이 확보되었다면, 해당 변수가 종속 변수에 유의미한 영향을 미친다고 해석할 수 있습니다.
* **과적합(Overfitting)의 위험**: 변수를 무분별하게 추가하면 R²는 기계적으로 상승하지만, 이는 모델이 데이터의 노이즈까지 학습한 결과일 수 있으며 실제 예측 성능은 하락할 수 있습니다.
## 상관계수(r)와의 관계
단순 선형 회귀(Simple Linear Regression)에서 결정계수 $R^2$는 피어슨 상관계수 $r$의 제곱과 정확히 일치합니다.
### 수학적 증명
상관계수 $r$의 정의는 다음과 같습니다:
\[ r = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sqrt{\sum (x_i - \bar{x})^2 \sum (y_i - \bar{y})^2}} \]
단순 선형 회귀의 기울기 $\hat{\beta}_1$은 $\hat{\beta}_1 = r \frac{s_y}{s_x}$로 표현되며, 이를 $R^2$ 공식에 대입하여 정리하면 다음과 같은 관계가 성립합니다:
\[ R^2 = r^2 \]
이 관계는 $R^2$가 두 변수 사이의 선형적 상관관계의 강도를 제곱하여 표현한 것임을 의미하며, $r$이 $\pm 1$에 가까울수록 $R^2$는 1에 수렴하게 됩니다.
## 모델 진단과 잔차 분석
R²는 모델의 전반적인 설명력을 보여주지만, 모델의 가정(선형성, 독립성, 등분산성, 정규성)이 충족되었는지는 알려주지 않습니다. 따라서 R² 확인 후에는 반드시 **잔차 분석(Residual Analysis)**을 수행해야 합니다.
### 잔차 분석의 필요성
R²가 매우 높더라도 잔차 그래프에서 특정한 패턴(예: 곡선 형태)이 나타난다면, 이는 선형 모델이 데이터의 비선형적 관계를 포착하지 못했음을 의미합니다. 또한 잔차가 퍼지는 모양이 깔때기 형태라면 등분산성 가정이 위배된 것입니다.
### 잔차 그래프 예시

*(예시: x축에 예측값, y축에 잔차를 배치하여 패턴 유무를 확인하는 산점도)*
## 적합도 지표의 종합적 비교
모델의 적합도(Goodness-of-fit) 관점에서 $R^2$와 상관계수의 차이점은 다음과 같습니다.
| 구분 | 상관계수 ($r$) | 결정계수 ($R^2$) |
| :--- | :--- | :--- |
| **측정 대상** | 두 변수 간의 선형적 연관성 강도 | 모델이 설명하는 전체 분산의 비율 |
| **값의 범위** | $-1$ ~ $1$ (방향성 포함) | $0$ ~ $1$ (설명력의 크기) |
| **관점** | 변수 $X$와 $Y$의 관계 중심 | 모델 $\hat{y}$가 실제 $y$를 얼마나 잘 모사하는가 중심 |
| **해석** | "두 변수는 강한 양/음의 상관관계가 있다" | "이 모델은 데이터 변동성의 $X\%$를 설명한다" |