Data Science/Data Analysis

[Python] 결정계수 R2 score(R-squared)와 조정된 결정계수(Adjusted R-squared)의 이해

AlienCoder 2022. 2. 15. 17:05
반응형

결정계수 - R2 score(R-squared)

결정계수상관계수를 제곱한 값으로 보면 된다. 하지만 결정계수는 상관계수와 달리 변수간 영향을 주는 정도 또는 인과 관계의 정도를 정량화해서 나타낸 수치라는 것이다. 따라서, 결정계수는 상관 분석이 아닌 회귀 분석에서 사용하는 수치라고 할 수 있다.

 

결정 계수를 나타내는 R2 score(R-squared)는 회귀 모델의 성능에 대한 평가 지표이다.

결정계수(R-squared)란 일반적으로 \( R^2 \)으로 표기된다. 회귀모델에서 독립 변수종속 변수를 얼마나 잘 설명해주는지 보여주는 지표이다. 결정계수가 높을수록 독립 변수가 종속 변수를 잘 설명한다는 뜻인데, 이때 독립 변수의 개수가 증가하면 함께 증가한다. 그러므로 결정계수에만 의존하여 회귀 모델을 평가하기에는 무리가 있다. 따라서 조정된 결정계수(Adjusted R-squared)가 제시되었다.

 

우선 결정계수의 의미를 살펴보자. 적합도 평가를 위한 결정계수의 R2 score는 0~1 사이의 범위를 가지고 1에 가까울수록 해당 선형 회귀 모델이 해당 데이터에 대한 높은 연관성을 가지고 있다 해석할 수 있다. R2 score의 수식은 아래와 같다.

$$ R^2 score = \frac{SSR(회귀제곱합)}{SST(총제곱합)} = 1- \frac{SSE(잔차제곱합)}{SST(총제곱합)} $$

SST총 제곱합, SSR은 회귀식 추정값과 관측값의 평균 간 차이인 회귀 제곱합을 나타낸다. SSE잔차 제곱합이다. 용어가 혼동되면 여기를 참조하면 된다.

$$ SST\ =\ \sum _{i=1}^n{\left({y}_i-\overline {y}\right)}^2 $$

$$ SSR\ =\ \sum _{i=1}^n{\left(\hat{{y}_i}-\overline {y}\right)}^2​ $$

$$ SSE\ =\ \sum _{i=1}^n{\left({y}_i-\hat{{y}_i}\right)}^2​ $$

\( y_i \)는 관측값, \( \bar{y_i} \)은 관측값의 평균, \( \hat{y_i} \)은 회귀 추정 값이다.

 

python으로는 아래와 같이 구할 수 있다.

 

from sklearn.metrics import r2_score
r2 = r2_score(y, lr.predict(x_2))

 

y는 실제 original 데이터이고, lr.predict는 fitting된 선형 회귀 모델을 통해 도출된 예측 값이다. 물론 lr은 따로 fitting 하여 사용하여야 한다. 해당 코드에서는 제외되었다.

위의 결과에서 r2의 값이 0.4라면 40%의 설명력을 가진다고 해석하면 된다. 분야와 연구자에 따라 결정계수의 수치가 어디부터 실질적으로 적용 가능한지는 다르지만 일반적으로 20%는 넘어야 한다. 만약 r2값이 음수가 나온다면 데이터가 arbitrarily한 경우이거나, 독립 변수의 일괄 평균으로 예측하는 것보다 성능이 떨어진다는 것을 의미한다.

 

내용들은 정리해보자면

결정계수='회귀 모델의 성능 지표'

  • r2 ≈ 1, 좋은 회귀 모델
  • r2 ≈ 0, 나쁜 모델
  • r2 < 0(음수), 쓰레기 모델 or 임의의 데이터를 이용한 경우

라고 볼 수 있다.

조정된 결정계수(Adjusted R-squared)

하지만 결정계수는 독립 변수 개수가 증가하면 함께 증가하므로 독립 변수 개수가 2개 이상일 경우 조정된 결정계수(Adjusted R-squared)를 사용해야 한다. 조정된 결정계수의 수식은 아래와 같다

$$ Adjusted\ R^2\ =\ 1-\frac{SSE\div \left(n-k-1\right)}{SST\div \left(n-1\right)} $$

위 수식에서 n은 표본의 수, k는 독립 변수의 개수이다.

 

상관계수독립 변수-독립 변수 또는 독립 변수-종속 변수들 간의 상관도를 나타내고 결정계수는 (회귀 모델+독립 변수)-종속변수상관도를 설명하는 것으로 이해하면 구별하기 쉽다.

 

관련 포스트

2022.02.18 - [Data Science/Data Analysis] - 회귀 분석에서 SST(Total Sum of Squares), SSE(Explained Sum of Squares), SSR(Residual Sum of Squares)의 이해

 

2021.12.27 - [Data Science/Data Analysis] - [Python] 상관 분석(Correlation Analysis)과 상관계수(Correlation Coefficient), 자기상관계수(Autocorrelation Coefficient)

 


참고 자료

 

https://m.blog.naver.com/tlrror9496/222055889079

 

https://ltlkodae.tistory.com/19

 

https://m.blog.naver.com/istech7/50153288534

 

반응형