귀퉁이 서재

DATA - 17. 최소자승법(OLS)을 활용한 단순 선형 회귀 (Simple Linear Regression) 본문

데이터 분석

DATA - 17. 최소자승법(OLS)을 활용한 단순 선형 회귀 (Simple Linear Regression)

데이터 파수꾼 Baek Kyun Shin 2019. 4. 28. 00:39

본 챕터에서는 선형 회귀에 대해 알아보겠습니다.

통계학에서, 선형 회귀(Linear regression)는 종속 변수(또는 응답 변수) y와 한 개 이상의 독립 변수 (또는 설명 변수) X와의 선형 상관관계를 모델링하는 회귀분석 기법이다. 한 개의 독립 변수에 기반한 경우에는 단순 선형 회귀, 둘 이상의 독립 변수에 기반한 경우에는 다중 선형 회귀라고 한다.

(Reference1)

선형 회귀 그래프로는 산점도(Scatter plots)를 많이 활용합니다. 그리고 독립 변수와 종속 변수 간의 상관관계를 나타내는 척도를 상관 계수(correlation coefficient)라고 합니다. 상관 계수는 보통 r로 표기합니다. 여러 상관 계수가 있지만 선형 회귀의 상관 계수로 가장 많이 쓰이는 것은 피어슨 상관 계수(Pearson correlation coefficient)입니다. (피어슨 상관 계수와 스피어만 상관 계수의 비교는 본 링크(Reference2)를 참고하시기 바랍니다.) 피어슨 상관 계수는 선형 관계의 강도(Strength)와 방향(Direction)을 나타내며, -1부터 1 사이의 값으로 표시합니다. 선형 계수가 -1일 수록 음의 상관관계를 가지고, 1일 수록 양의 상관관계를 가집니다.

강도 (Strength) 방향 (Direction)
Strong Moderate Weak Positive Negative
0.7 ≤ |r| ≤1.0 0.3 ≤ |r| < 0.7 0.0 ≤ |r| <0.3 r > 0 r < 0

피어슨 상관 계수는 선형 관계일때만 유의미하고, 아래 그래프처럼 2차식에서는 의미가 없습니다. 아래 2차식의 피어슨 상관 계수는 0입니다. r=0일 때는 상관관계가 없다고 보지만 아래 2차 식이 실제로 상관관계가 없는 것은 아닙니다. 따라서 피어슨 상관 계수는 선형 관계일 때만 씁니다.

최소자승법 (Least-squares Method)

산점도로 데이터의 분포 그래프를 그렸을 때, 이 데이터들의 경향을 알고 싶다면 추세선을 그릴 것입니다. 어떤 데이터가 주어졌을 때 최적의 추세선을 그리기 위한 방법 중 하나가 최소자승법 (Least-squares Method)입니다. 예시를 들어보겠습니다. 아래 그래프처럼 총 7개의 데이터가 있습니다. 이 7개 데이터의 추세선을 그리고 싶을 때 쓰는 방법이 최소자승법입니다.

7개 데이터의 경향을 나타내는 추세선을 아래와 같이 그렸습니다. 이때 실제 데이터의 y값(실제값)과 추세선의 y값(예측값)의 차를 잔차(Residual)라고 합니다. 아래 그래프에서 잔차는 점선으로 표시했습니다. 최소자승법은 이 잔차의 제곱의 합을 최소로 하는 방법입니다.

 

 

잔차 제곱의 합은 TOTAL AREA에 해당하는 넓이와 같습니다. 구하는 식은 아래와 같습니다.

파란색 추세선보다 보라색 추세선의 잔차제곱의 합이 더 작습니다. 따라서 파란색 추세선보다 보라색 추세선이 위 7개의 데이터를 더 잘 표현해주는 추세선입니다. 이렇게 잔자 제곱의 합을 최소로 하는 방법이 최소자승법이며, 최소자승법을 활용하여 데이터를 가장 잘 표현하는 선형 회귀선을 그릴 수 있습니다.

최소자승법을 활용한 회귀선(Regression line) Fitting

참고로, 선형 회귀식은 y = α + βX 입니다. (y=종속 변수, α=y절편(intercept), β=회귀계수) 이제, statmodels 라이브러리를 활용하여 최소자승법 실습을 해보겠습니다. statmodels를 사용하기 전에 먼저 설치를 합니다.

pip install statsmodels
import numpy as np 
import pandas as pd 
import statsmodels.api as sm; 

df = pd.read_csv('./house_price_area_only.csv') 

df는 집값(price), 집의 크기(area) 등의 column으로 이루어져있습니다.

statsmodels를 import 하면 warning message가 뜰 텐데 무시하셔도 됩니다. 집의 크기(area)와 집값(price)의 상관관계를 알아보겠습니다. 상관관계를 알아본다는 것은 선형 회귀식 y = α + βX에서 α와 β를 구한다는 말과 같습니다. α를 알면 area가 0일 때 price가 얼마인지 알 수 있고, β를 알면 area가 1커짐에 따라 price가 얼마나 변하는지 알 수 있습니다. 즉, area(X)와 price(y)의 상관관계를 알 수 있습니다. 집 크기가 커짐에 따라 집값이 어떻게 변하는지 파악해보는 것입니다. area가 독립 변수, price가 종속 변수입니다.

우선, intercept(절편) column을 추가해줘야 합니다. 거의 모든 회귀 모델에서 intercept column을 추가해야 합니다. (Reference3)

OLS는 ordinary least square의 약자로 최소자승법으로 회귀 모델을 구하는 메서드입니다. (Reference4)

df['intercept'] = 1

lm = sm.OLS(df['price'], df[['intercept', 'area']])
results = lm.fit()
results.summary()

summary에는 여러 정보가 나올 텐데, 우선 빨간 네모 박스 안의 정보부터 보겠습니다.

intercept의 coef는 9587.8878입니다. 이는 α=9587.8878라는 것입니다. area의 coef는 348.4664입니다. 즉, β=348.4664입니다. 따라서 선형 회귀식은 y = 9588 + 348X 입니다. (소수점 반올림함) y절편(intercept)이 9588이므로 area가 0일 때 price는 9588입니다. 또한, β=348이므로 area가 1 증가할 때마다 price가 348이 증가합니다.

intercept의 p-value는 0.209이고, area의 p-value는 0입니다. area에 대한 정보는 통계적으로 유의하고, intercept에 대한 정보는 통계적으로 유의하지 않다는 것을 알 수 있습니다.

R-squared는 결정 계수(coefficient of determination)를 의미합니다.

결정 계수 (coefficient of determination)는 추정한 선형 모형이 주어진 자료에 적합한 정도를 재는 척도이다. 종속 변수의 변동량 중에서 적용한 모형으로 설명 가능한 부분의 비율을 가리킨다. 결정계수의 통상적인 기호는 R²이다. 일반적으로 모형의 설명력으로 해석되지만 모형에 설명 변수가 들어갈수록 증가하기 때문에 해석에 주의해야 한다. 결정계수의 값은 0에서 1 사이에 있으며, 종속 변인과 독립변인 사이에 상관관계가 높을수록 1에 가까워진다. 즉, 결정계수가 0에 가까운 값을 가지는 회귀모형은 유용성이 낮은 반면, 결정계수의 값이 클수록 회귀모형의 유용성이 높다고 할 수 있다.

(Reference5)

즉, 회귀 모델에서 x가 설명할 수 있는 y의 변동량을 결정 계수라고 합니다. 결정 계수가 1에 가까울수록 회귀 모델이 데이터에 잘 들어맞는 것이고, 0에 가까울수록 회귀 모델이 데이터에 들어맞지 않습니다. 위 summary에서는 R-squared가 0.678이므로 'area가 price에 대해 67.8%만큼 설명한다'라고 해석하면 됩니다.

References

Reference1 : 위키피디아 (선형 회귀)

Reference2 : Pearson 및 Spearman 상관 방법의 비교

Reference3 : When is it ok to remove the intercept in a linear regression model?

Reference4 : statsmodels.regression.linear_model.OLS

Reference5 : 위키피디아 (결정계수)

0 Comments
댓글쓰기 폼