요번 회사에서 예측 데이터를 계산하기 위해 사용하는 것 중 하나인데 개발하면서 회귀 분석에 대해 공부한 것들을 정리해볼겸 글을 쓰게 되었습니다.
회귀 분석 (Regression Analysis)?
회귀 분석(Regression Analysis)은 통계학과 데이터 분석에서 가장 기본적인 도구 중 하나로 독립 변수(설명 변수)와 종속 변수(반응 변수) 간의 관계를 수학적으로 표현하는 방법을 사용하고 있습니다.
두 개 이상의 변수 간의 관계를 모델링하고, 이를 바탕으로 특정 변수를 예측하는 데 사용되는데 과거의 판매량의 데이터를 바탕으로 다음 달 매출을 예측하거나, 기온과 에너지 사용량 간의 관계를 분석하는 등에 사용됩니다.
실 예를 들어 공부 시간(독립 변수)과 시험 점수(종속 변수)의 관계를 나타낼 때 이 관계를 선형으로 가정하면 단순 회귀 분석은 아래와 같은 형태로 표현 할 수 있습니다.
y=β0+β1x+ϵ
- : 예측하려는 값 (종속 변수)
- x: 입력 변수 (독립 변수)
- β0: 절편 (Intercept)
- β1 : 기울기 (Slope)
- ϵ: 오차 (Error)
이를 다양한 형태의 회귀 분석에 따라 분석 방법이 달라집니다.
단순 회귀 분석 - 독립 변수가 하나인 경우
예측하려는 목표값(종속 변수)이 단 하나의 원인(독립 변수)에 의해 영향을 받는다고 가정하는 분석 방법을 의미합니다.
"공부 시간"이 "시험 점수"에 영향을 미친다고 생각을 할 때 독립 변수(원인)은 공부시간, 종속 변수(결과)는 시험 점수가 됩니다.
따라서 이 때는 공부 시간을 바탕으로 시험 점수를 예측하는 형태가 돼죠.
점들이 찍혀 있는 그래프에서 데이터를 가장 잘 설명하는 직선을 찾는 것이라고 이해하면 됩니다.
이 직선의 방정식은 𝑦 = 𝛽0 + 𝛽1𝑥 +β1x가 됩니다.
다중 회귀 분석 - 독립 변수가 여러 개인 경우
여러 요인이 종속 변수에 영향을 미칠 수 있다면, 각각의 요인을 독립 변수로 추가해서 분석하는 방식으로 현실적인 경우를 더 잘 반영할 수 있는 방식입니다.
공부 시간" 뿐만 아니라 "수면 시간"도 "시험 점수"에 영향을 미친다고 가정해볼 때, 독립 변수(원인)은 공부 시간, 수면 시간(2개 이상의 변수)가 되고, 종속 변수(결과)는 시험 점수가 됩니다.
공부 시간과 수면 시간을 바탕으로 시험 점수를 예측하는 형태가 됩니다.
y=β0+β1x1+β2x2+⋯+βnxn
으로 표현 할 수 이으며, 여기서 x1,x2,…,xn은 독립 변수들(공부 시간, 수면 시간 등)을 의미합니다.
로지스틱 회귀 분석 - 종속 변수가 범주형인 경우
이 방법은 종속 변수가 숫자(점수처럼)로 측정되는 것이 아니라 범주(예: 성공/실패, 합격/불합격)로 나뉘는 경우에 사용됩니다.
합격/불합격 여부를 예측합니다. 여기서 독립 변수(원인)은 공부시간, 수면 시간 등이 되고, 종속 변수(결과)는 합격(1), 불합격(0) → 결과가 두 가지로 나뉩니다.
따라서 공부 시간과 수면 시간을 바탕으로 합격 확률(0 ~ 100%)을 예측합니다.
데이터와 목표가 다르기 때문에 이렇게 종류가 나뉘게 되는 것이죠.
회사에서는 다중 회귀 분석 방법을 사용하여 데이터를 예측하고 있습니다. 이 글을 읽고 있으신 분들 중 누군가는
'요즘 AI로 예측하는 게 얼마나 좋은데 이걸 왜 써?' 라고 생각하실겁니다.
예측 모델링에서 머신러닝이 정말 좋은 도구 중 하나인데 머신러닝은 데이터가 풍부할수록 강력한 성능을 발휘합니다. 하지만 실제론 머신러닝이 데이터를 정확하게 예측할만큼의 데이터가 많지 않은 경우가 많죠.
이런 경우엔 회귀 분석이 좋은 대안이 될 수 있습니다. 따라서 데이터가 적거나, 변수 간 관계 해석이 필요하거나, 적은 데이터로 초기에 간단한 모델을 구축하여 머신러닝의 기반을 다질 때 매우 유용합니다.
결론
회귀 분석은 데이터가 부족하거나 변수 간 관계를 명확히 해석해야 하는 상황에서 정말 좋은 도구지만 머신러닝은 복잡한 패턴을 학습하고 방대한 데이터를 처리하는 데 강점을 가지고 있습니다.
예측 모델을 고민할 때 이 글이 도움되었으면 좋겠습니다!
'프로그래밍(Web) > 업무관련' 카테고리의 다른 글
[바미] 선형 보간법 (0) | 2024.06.08 |
---|---|
Git의 다양한 브랜치 병합 방법들 (0) | 2023.11.02 |
OpenVPN Options error: --up script fails with './update-resolv-conf': 지정된 파일을 찾을 수 없습니다. (errno=2) 해결방법 (0) | 2023.10.11 |
VisualVM 실행 시 Cannot find java 1.8 or higher 에러 뜰 때 (0) | 2023.07.13 |
Eclipse Memory Analyzer를 사용하여 메모리 누수 파악하기. (0) | 2023.06.15 |