회귀분석-선형 회귀(Linear Regression)
선형 회귀(Linear Regression)
독립 변수(입력 값)와 종속 변수(출력 값) 사이의 선형 관계를 기반으로 예측 모델을 생성하는 알고리즘으로 데이터를 직선으로 설명하며, 예측 대상이 연속적인 값일 때 주로 사용함
1. 선형 회귀의 기본 개념
- 선형 회귀를 이용하는 목적은 입력 변수와 출력 변수 사이의 선형 관계를 찾는 것
- 주어진 데이터를 통해 회귀 계수를 학습하고, 이를 바탕으로 새로운 데이터를 예측
![]() y: 종속 변수 (예측하고자 하는 값) xi: 독립 변수 (입력 값) βi: 회귀 계수 (모델이 학습하는 가중치) ϵ: 오차 항 (모델이 설명하지 못하는 부분) |
2. 선형 회귀의 유형
변수의 수에 따라 단순 선형 회귀(Simple Linear Regression)와 다중 선형 회귀(Multiple Linear Regression)로 나눔
1) 단순 선형 회귀 (Simple Linear Regression)
- 하나의 독립 변수와 하나의 종속 변수를 다루며 두 변수 사이의 관계를 직선으로 표현함
![]() |
ex) 집의 면적(독립 변수)에 따라 집값(종속 변수)을 예측하는 경우 회귀 계수 β1는 면적이 1 단위 증가할 때 집값이 얼마나 증가하는지를 나타냄
2) 다중 선형 회귀 (Multiple Linear Regression)
- 여러 개의 독립 변수를 다루며 여러 변수가 종속 변수에 어떻게 영향을 미치는지를 분석하는 데 유용함
![]() |
ex) 집의 면적, 위치, 방의 개수 등(다중 변수)에 따라 집값을 예측하는 경우에 다중 회귀 분석을 사용
3. 선형 회귀의 학습 방법: 최소 제곱법
선형 회귀는 주어진 데이터를 기반으로 회귀 계수 β를 학습하며 이를 위해 최소 제곱법(Ordinary Least Squares, OLS)을 사용
* 최소 제곱법은 실제 값 yi와 예측 값 y^i 간의 차이(잔차, residual)의 제곱합을 최소화하는 방식
![]() 는 모델이 예측한 값이고 yi는 실제 값 |
RSS(Residual Sum of Squares)를 최소화하는 방향으로 회귀 계수를 업데이트하여 데이터를 가장 잘 설명하는 직선을 찾음
4. 선형 회귀의 조건
선형 회귀 모델이 정확하게 작동하려면 몇 가지 조건이 충족해야 함
1) 선형성 (Linearity)
- 독립 변수와 종속 변수 사이의 관계가 선형적이어야 함
- 데이터가 직선으로 설명될 수 있어야 함
- 선형성이 없다면 모델의 예측 정확도가 떨어짐
2) 독립성 (Independence)
- 각 데이터 포인트의 오차는 독립적이어야 함
- 한 데이터 포인트의 오차가 다른 데이터 포인트의 오차에 영향을 주지 않아야 함
3) 등분산성 (Homoscedasticity)
- 오차의 분산이 일정해야 함
- 오차의 분산이 달라지면(이분산성), 선형 회귀 모델의 예측 신뢰도가 떨어질 수 있음
4) 정규성 (Normality)
- 오차가 정규 분포를 따라야 함
- 이 조건은 주로 회귀 계수의 신뢰 구간이나 p-값 계산에 영향을 미침
5. 선형 회귀 모델 평가
선형 회귀 모델 평가의 주요 지표
1) R² (결정 계수)
- 결정 계수는 모델이 주어진 데이터를 얼마나 잘 설명하는지 나타내는 지표
- 값이 0에서 1 사이로 1에 가까울수록 데이터가 모델에 의해 잘 설명된다는 의미
![]() yˉ는 실제 값의 평균 |
2) MSE (Mean Squared Error)
- 예측 값과 실제 값의 차이를 제곱한 후 평균을 구하는 방식으로 정확도를 평가
- 값이 작을수록 좋은 모델을 의미
![]() |
3) MAE (Mean Absolute Error)
- 예측 값과 실제 값의 차이를 제곱하지 않고 절대값을 취한 후 평균을 구하는 방법
- MSE는 큰 오차에 민감하지만, MAE는 그 영향을 덜 받음
![]() |
6. 선형 회귀의 한계
1) 선형성 가정
- 선형 회귀는 데이터가 선형적이라는 가정이 필요
- 비선형적인 데이터에서는 성능이 저하됨
2) 이상치에 민감
- 이상치가 있으면 모델의 회귀 계수가 왜곡될 수 있어 성능이 떨어짐
3) 다중공선성 문제
- 독립 변수들 사이에 높은 상관관계가 있으면 회귀 계수가 불안정해지는 문제가 발생할 수 있음
- 릿지 회귀나 라쏘 회귀 같은 규제 방법을 통해 해결할 수 있음
Python에서 Scikit-learn 라이브러리를 사용하여 간단하게 선형 회귀 모델을 구현방법
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 데이터셋 로드 및 분할
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)
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)