파이썬을 이용하여 가장 기본적인 선형회귀분석을 해보도록 한다.
- 다음의 표는 어떤 공장의 월별 생산 금액과 전기 사용량을 나타낸다.
- 월별 생산 금액을 변수 \(x\)로 하여 벡터로 표시하면 \(\mathbf{x}=[x_1, x_2, \ldots, x_{12}]\), 이 때의 전기 사용량을 \(y\)로 하여 벡터로 나타내면 \(\mathbf{y}=[y_1, y_2, \ldots, y_{12}]\)가 되며, 위의 데이터는 다음과 같이 \(x\) \(y\)로 구성된 쌍으로 표현할 수 있다. $$(\mathbf{x},\mathbf{y})=\{(3.52,2.48), (2.58,2.27), \ldots, (3.20, 2.53)\}$$
- 이 때 두 변수간에 어떤 상관관계가 있는지 알아보자. 이 때 두 변수 사이의 상관관계가 존재한다면 통계적으로 모델을 작성할 수 있으며, 1차원의 선형모델로 표현할 수 있다면 다음과 같은 수식형태로 쓸 수 있다. $$y_i = \beta_0 + \beta_1\cdot x_i + \epsilon_i$$
- 위의 식에서 \(y_i\)는 종속변수(dependent variable), \(x_i\)를 독립변수(independent variable)라고한다. \(\beta_0\)와 \(\beta_1\)의 값은 데이터 \(\mathbf{x}\)와 \(\mathbf{y}\)벡터로 부터 구할 수 있는데, 잘 알고 있다시피 \(\beta_0\)는 \(Y\)축 절편(intercept), \(\beta_1\)는 기울기(slope)라고 한다. 여기서 \(\epsilon_i\)는 오차항으로 실제 데이터와 선형회귀분석의 결과로 나온 1차함수 값과의 오차를 의미한다.
- 파이썬에서는 scipy 모듈의 linregress() 함수를 사용하면 쉽게 선형회귀분석 결과값을 얻을 수 있다.
|
생산 금액(억 원) |
전기 사용량(백만 kWh) |
1월 |
3.52 |
2.48 |
2월 |
2.58 |
2.27 |
3월 |
3.31 |
2.47 |
4월 |
4.07 |
2.77 |
5월 |
4.62 |
2.98 |
6월 |
3.98 |
3.05 |
7월 |
4.29 |
3.18 |
8월 |
4.83 |
3.46 |
9월 |
3.71 |
3.03 |
10월 |
4.61 |
3.25 |
11월 |
3.90 |
2.67 |
12월 |
3.20 |
2.53 |
위의 소스코드를 실행하면 다음과 같다. 매출이 4억 원에 근접했던 달은 4월(4.07억 원)과 6월(3.90억 원)로 전기 사용량은 각각 2.77kWh와 3.05kWh였다. 선형회귀분석의 결과값은 2.902kWh로 실제 4억 원의 전기 사용량은 2.77~3.05kWh 범위 안에 있다. 회귀분석을 통한 예측값은 실제 데이터와 오차가 발생할 수 밖에 없다. 이 오차를 줄이기 위해서 정확한 회귀모델을 구해야만 하는 것이다.
'Predictive Analytics' 카테고리의 다른 글
단순선형회귀 (0) | 2019.09.19 |
---|---|
대표적인 예측 분석 사례 (0) | 2018.04.20 |
Predictive Analytics (0) | 2018.04.16 |
Python 준비 (0) | 2017.03.31 |
Linear Regression Analysis with Python #2 (0) | 2017.03.31 |