[머신러닝] 단변수 선형 회귀와 R² 결정계수 완전 정리

2025. 7. 6. 11:01·머신러닝&딥러닝

 

단변수 선형 회귀와 R² (결정계수) 완전 정리

단변수 선형 회귀는 하나의 입력값($\mathbf{x}$)만으로 하나의 출력값($\mathbf{y}$)을 예측하는 가장 기본적인 머신러닝 모델입니다. 예를 들어, 키($\mathbf{x}$)로 몸무게($\mathbf{y}$)를 예측하는 것과 같은 구조죠. 지금부터 단변수 선형 회귀를 공부할 때 꼭 알아야 할 핵심 개념들을 살펴보겠습니다.


일반 함수 vs 머신러닝에서의 함수

구분 일반 수학 함수 머신러닝 함수
목적 $\mathbf{y}$ 계산 $\mathbf{W}$, $\mathbf{b}$ 학습
입력 $\mathbf{x}$ $\mathbf{x}$ (입력 데이터)
출력 $\mathbf{y}$ $\mathbf{y}$ (정답 레이블)
미지수 $\mathbf{x}$, $\mathbf{y}$ $\mathbf{W}$ (기울기), $\mathbf{b}$ (절편)

일반 수학에서는 $\mathbf{y=ax+b}$ 형태에서 $\mathbf{x}$를 넣으면 $\mathbf{y}$가 무엇인지 계산합니다. 하지만 머신러닝에서는 이미 주어진 ($\mathbf{x,y}$) 데이터를 바탕으로 **$\mathbf{W}$ (가중치)**와 $\mathbf{b}$ (편향) 값을 찾아내는 것이 목표입니다. 이 $\mathbf{W}$와 $\mathbf{b}$가 바로 모델의 "학습된 지식"이 됩니다.


단변수 선형 회귀 모델 구조

머신러닝에서의 단변수 선형 회귀 모델은 다음과 같은 형태를 가집니다:

$$\mathbf{\hat{y} = Wx + b}$$

  • $\mathbf{x}$: 모델에 주어지는 단일 입력 데이터입니다. 우리가 예측하려는 출력값($\mathbf{\hat{y}}$)에 영향을 미치는 **독립 변수 또는 특성(feature)**을 나타냅니다. 예를 들어, 키로 몸무게를 예측할 때 $\mathbf{x}$는 '키'가 됩니다.
  • $\mathbf{\hat{y}}$: 모델이 $\mathbf{x}$를 바탕으로 예측한 출력값입니다. 실제 정답 $\mathbf{y}$와 구분하기 위해 $\mathbf{\hat{y}}$로 표기합니다.
  • $\mathbf{W}$: **가중치(Weight)**입니다. 입력 $\mathbf{x}$가 출력 $\mathbf{\hat{y}}$에 미치는 영향력의 크기와 방향을 나타냅니다. $\mathbf{x}$가 한 단위 변할 때 $\mathbf{\hat{y}}$가 얼마나 변하는지를 의미합니다.
  • $\mathbf{b}$: **편향(Bias)**입니다. 입력 $\mathbf{x}$가 0일 때의 $\mathbf{\hat{y}}$ 값, 즉 기본적인 출력값을 나타냅니다.

손실 함수 (비용 함수)

선형 회귀에서 예측값과 실제값의 차이를 측정하는 기준은 **MSE (Mean Squared Error, 평균 제곱 오차)**를 사용합니다.

MSE 공식:

$$\mathbf{MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}$$

  • $\mathbf{y_i}$: i번째 실제 값
  • $\mathbf{\hat{y}_i}$: i번째 예측 값
  • $\mathbf{n}$: 데이터 개수

MSE 값이 작을수록 예측이 실제값에 가깝다는 의미입니다. 머신러닝 모델은 이 손실 함수의 값을 최소화하기 위해 $\mathbf{W}$와 $\mathbf{b}$를 반복적으로 업데이트(학습)합니다. 이는 예측선이 실제 데이터 포인트에 가장 잘 맞도록 $\mathbf{W}$와 $\mathbf{b}$를 조정하는 과정입니다.


정확도 평가 지표: 결정계수 (R² Score)

머신러닝 모델이 얼마나 정확하게 예측하는지를 평가하기 위해 **결정계수($\mathbf{R^2}$)**를 사용합니다. $\mathbf{R^2}$ 점수는 모델이 데이터의 분산을 얼마나 잘 설명하는지를 나타내는 지표입니다.

$\mathbf{R^2}$ Score 공식:

$$\mathbf{R^2 = 1 - \frac{SSE}{SST}}$$

  • SSE (Sum of Squares for Error): 예측값과 실제값 사이의 오차 제곱합
    $$\mathbf{SSE = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2}$$
    이 값은 모델이 실제값을 얼마나 잘 예측하지 못했는지를 나타냅니다. 모델의 오차가 클수록 SSE가 커집니다. SSE가 0에 가까울수록 모델의 예측이 완벽하다는 의미입니다.
  • SST (Sum of Squares Total): 실제값과 평균값 사이의 오차 제곱합
    $$\mathbf{SST = \sum_{i=1}^{n} (y_i - \bar{y})^2}$$
    ($\mathbf{\bar{y}}$는 실제값들의 평균)
  • 이는 데이터 자체의 총 변동성, 즉 분산 정도를 나타냅니다. 모델이 없다고 가정했을 때(단순히 평균으로 예측할 때)의 오차라고 볼 수 있습니다.

요약하면, $\mathbf{R^2}$는 이렇게 표현할 수 있습니다:

$$\mathbf{R^2 = 1 - \frac{예측값에\ 대한\ 오차\ 제곱합}{데이터\ 자체의\ 분산\ 합}}$$


$\mathbf{R^2}$ Score 해석 및 중요 특징

$\mathbf{R^2}$ 값은 모델이 설명할 수 있는 분산의 비율을 의미합니다.

  • $\mathbf{R^2 = 1}$: 모델이 데이터를 완벽하게 예측합니다. 예측 오차(SSE)가 0에 가까워 모든 실제 데이터 포인트가 예측 직선 위에 놓인 경우입니다. 이는 모델이 데이터의 모든 변동성을 설명한다는 의미입니다.
  • $\mathbf{R^2 = 0}$: 모델의 예측이 실제값의 평균을 예측하는 것과 같은 수준입니다. 모델을 학습시키지 않은 상태와 유사하며, SSE가 SST와 거의 같아 모델이 데이터의 변동성을 전혀 설명하지 못하는 경우입니다.
  • $\mathbf{0 < R^2 < 1}$: 모델의 예측이 평균보다는 낫지만 완벽하진 않습니다. $\mathbf{R^2}$ 값이 1에 가까울수록 모델의 예측력이 좋다고 판단합니다. 이는 모델이 데이터 변동성 중 상당 부분을 설명하고 있음을 의미합니다.
  • $\mathbf{R^2}$는 음수 값이 될 수도 있습니다. 만약 모델의 예측 성능이 평균으로 예측하는 것보다도 더 나쁜 경우 (즉, SSE가 SST보다 훨씬 큰 경우), $\mathbf{R^2}$ 값은 음수가 나올 수 있습니다. 이는 모델이 데이터에 전혀 맞지 않거나 잘못 학습되었을 가능성이 매우 크다는 것을 나타냅니다. 따라서 $\mathbf{R^2}$는 항상 0과 1 사이의 값만 가지는 것이 아니며, 음수 값은 매우 좋지 않은 모델 성능을 의미합니다.

중요한 특징:

  • SST는 학습 전후로 동일합니다. SST는 원래 데이터들의 평균을 기준으로 계산되므로, 모델이 학습되면서 예측값이 달라져도 실제 데이터와 그 평균은 변하지 않기 때문입니다.
  • SSE는 학습이 잘 될수록 줄어듭니다. 예측 직선이 실제 데이터 포인트에 가까워질수록 예측 오차가 줄어들고, 그에 따라 SSE는 0에 가까워집니다.

$\mathbf{R^2}$ 계산 방법 (Python)

Python의 sklearn 라이브러리를 사용하면 $\mathbf{R^2}$ 값을 쉽게 계산할 수 있습니다.

from sklearn.metrics import r2_score

# 예시 데이터 (실제 값과 모델의 예측 값)
y_true = [3, 5, 7, 9, 11]   # 실제 값 리스트
y_pred = [3.2, 4.8, 7.1, 9.3, 10.9] # 모델이 예측한 값 리스트

r2 = r2_score(y_true, y_pred)
print(f"R-squared Score: {r2}")
  • y_true: 실제 값(정답 레이블) 리스트
  • y_pred: 모델이 예측한 값 리스트
  • 반환값: 일반적으로 0에서 1 사이의 float 값(결정계수)이 반환되지만, 모델 성능이 매우 나쁠 경우 음수가 반환될 수도 있습니다.

요약

머신러닝에서 함수는 주어진 데이터를 기반으로 $\mathbf{W}$ (가중치)와 $\mathbf{b}$ (편향)를 학습하는 것이 목표입니다. 단변수 선형 회귀는 하나의 입력 $\mathbf{x}$로 하나의 출력 $\mathbf{\hat{y}}$를 예측하는 가장 기본적인 모델입니다. 모델의 오차 측정에는 MSE(평균 제곱 오차)를, 모델 평가에는 $\mathbf{R^2}$ 결정계수를 사용합니다. $\mathbf{R^2}$ 값은 모델의 예측력이 얼마나 좋은지를 수치로 보여주는 지표입니다. $\mathbf{R^2=1}$에 가까울수록 잘 학습된 모델이며, 이는 모델이 데이터의 변동성을 잘 설명하고 예측 오차가 적음을 의미합니다.

 

'머신러닝&딥러닝' 카테고리의 다른 글

KNN (K-최근접 이웃) 완벽 정리: 개념부터 코드, 시각화까지 한 번에 이해하기  (2) 2025.07.07
[머신러닝] 간단한 당뇨병 예측: 단변수·다변수 선형 회귀 실습부터 시각화·정확도 평가까지  (0) 2025.07.06
[딥러닝] 오차 역전파의 구조와 수학적 해석: Forward 계산부터 Chain Rule, 시그모이드 미분까지  (3) 2025.07.03
[딥러닝] 딥러닝 학습의 핵심 개념 총정리: 경사하강법부터 손실 함수까지  (0) 2025.07.02
[딥러닝] 신경망 뉴런 구조와 Activation Function 정리  (0) 2025.07.02
'머신러닝&딥러닝' 카테고리의 다른 글
  • KNN (K-최근접 이웃) 완벽 정리: 개념부터 코드, 시각화까지 한 번에 이해하기
  • [머신러닝] 간단한 당뇨병 예측: 단변수·다변수 선형 회귀 실습부터 시각화·정확도 평가까지
  • [딥러닝] 오차 역전파의 구조와 수학적 해석: Forward 계산부터 Chain Rule, 시그모이드 미분까지
  • [딥러닝] 딥러닝 학습의 핵심 개념 총정리: 경사하강법부터 손실 함수까지
jh_devnote
jh_devnote
Spring Boot, React, MySQL, JSP, Servlet, Docker, AWS 기반의 풀스택 웹 개발 프로젝트를 기록하는 기술 블로그입니다.
  • jh_devnote
    JH Devlog
    jh_devnote
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 🐱 Github
    • 🌐 My Site
    • 🗂 Portfolio
  • 전체 카테고리

    • 💻 개발
      • 네트워크
      • MYSQL
      • JAVA
      • SPRINGBOOT
      • Node.JS
      • React
      • LINUX
      • AWS
      • Docker
    • 📘 코딩테스트
      • 백준(Baekjoon)
      • 프로그래머스
    • 🧑‍💻 머신러닝&딥러닝
    • 📁 프로젝트
      • 📂 HealthMe
        • HealthMe_프론트엔드
        • HealthMe_백엔드
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
jh_devnote
[머신러닝] 단변수 선형 회귀와 R² 결정계수 완전 정리
상단으로

티스토리툴바