오랑우탄의 반란
[ML] 선형회귀 기초 이론 및 수식 정리 (회귀 분석) 본문
선형회귀란?
선형적인 관계를 가진 두 변수 X, Y에 대해 모르는 데이터 값을 예측하는 것
선형회귀 이론
키(Y)와 몸무게(X) 분포가 아래와 같이 있다고 가정해봅시다.
이때 두 변수 사이에 일정하게 증가하는 패턴을 보고 우리는 몸무게를 알면 키를 예측할 수 있겠다고 생각할 수 있습니다.
하지만 실제로 각 값의 분포에 대해 예측 선을 무한하게 그릴 수 있는데요,
이때 데이터 분포를 가장 잘 설명해줄 수 있는 선을 그리는 것이 선형회귀입니다.
weights = [87,81,82,92,90,61,86,66,69,69]
heights = [187,174,179,192,188,160,179,168,168,174]
그러면 이 선을 어떻게 그리는 게 좋을까요?
바로 각각의 값에 대해 선과의 오차를 계산해서 최소의 오차를 가진 직선이 적절한 선이 됩니다.
위의 데이터로 오차 error 가 어떻게 계산되는지 살펴봅시다.
- ①번 실제 데이터:187, 예측 데이터: 187 → error: 0
- ②번 실제 데이터: 174, 예측 데이터: 181 → error: -7
- ③번 실제 데이터: 174, 예측 데이터 : 169 → error: +5
- ①, ②,③의 제곱 합 / 전체 데이터 수: 49 +25 = 71/3 → 최종 error: 23.7
왜 오차의 합으로 계산하지 않고 제곱을 하나요?
☞ error를 단순히 sum하게 되면 양수와 음수가 상쇄되어 정확한 계산이 안 되기 때문입니다.
왜 오차 제곱의 합을 다시 데이터의 개수로 나누나요?
☞ 데이터가 추가될 때마다 error가 자연스럽게 커지기 때문에 이를 방기하기 위함입니다.
선형회귀분석 조건
조건 | 설명 |
선형성 (Linearity) | 종속 변수(Y)와 독립 변수(X) 간에 선형 관계가 존재해야 함 |
등분산성 (Homoscedasticity) | 오차의 분산이 모든 수준의 독립 변수에 대해 일정해야함 즉, 오차가 특정 패턴을 보여서는 안 되며 독립 변수의 값에 상관없이 일정해야 함 |
정규성 (Normality) | 오차 항은 정규 분포를 따라야 함 |
독립성 (Independence) | X변수는 서로 독립적이어야함 (다중공선성 문제 발생) |
선형회귀 수식
앞서 키가 Y 몸무게가 X 라고 설명했습니다.
Y = 종속변수, 결과변수
X = 독립변수, 원인변수, 설명변수
β0: 편향 bias
β1: 회귀 계수
ε: 오차, 모델이 설명하지 못하는 Y의 변동성
b: 편향 bias
ω: 가중치
회귀분석 평가지표
선형회귀를 수립했으면 해당 모델이 좋은지 평가해야 합니다.
MSE (Mean Squared Error)
회귀의 공통 평가지표로 MSE 가 있는데요, 오차이기 때문에 작을수록 좋은 모델로 평가됩니다.
MSE 계산 방법은 아래와 같습니다.
- error = 실제 데이터 - 예측 데이터
- error 제곱의 합 / 데이터 개수
MSE 와 비슷한 평가지표로 RMSE와 MAE 가 있습니다.
RMSE: MSE 의 제곱근
MAE: 제곱 대신 절대값을 이용한 오차 계산
R Square
R Square 는 선형회귀에만 해당되는 평가지표인데요,
이는 전체 모형에서 회귀선으로 설명할 수 있는 정도로 클수록 좋은 모델로 평가됩니다.
yi: 실제 값
ȳ: 평균 값
ŷ: 예측, 추정값
SST (총합) : yi - ȳ
SSE (실제와 예측 차이) : yi = ŷ
SSR (예측과 평균 차이) : ŷ - ȳ
아래 예시로 3번의 데이터 값은 SST = 174^2, SSR = 169^2
해당 값에 대한 설명력 = 94% 이지만 실제 R Square는 모든 값에 대해 수행해줍니다.
선형회귀분석 정리
장점 | 단점 |
직관적이며 이해하기 쉬움 | X-Y간의 선형성 가정 필요 |
X-Y관계를 정량화 할 수 있음 | 평가지표가 평균(mean)을 포함해 이상치에 민감 |
모델이 빠르게 학습됨 (가중치 계산이 빠름) | 범주형 변수 인코딩시 정보 손실 발생 |
다음 포스트에서는 실제 파이썬으로 머신러닝 선형회기 실습을 진행하겠습니다.
'PYTHON > 머신러닝' 카테고리의 다른 글
[ML] (다중)로지스틱회귀 분류 분석 파이썬 실습 (VSCode) (0) | 2024.08.12 |
---|---|
[ML] 로지스틱회귀 기초 이론 및 수식 정리 (분류 분석) (0) | 2024.08.09 |
[ML] 머신러닝 다중선형회귀분석 파이썬 실습 (VSCode) (0) | 2024.08.09 |
[ML] 머신러닝 선형회귀분석 파이썬 실습 (VSCode) (0) | 2024.08.09 |
[ML] 머신러닝이란? (0) | 2024.08.08 |