본문 바로가기

머신러닝/지도학습

선형회귀 ep2. 결정계수에 관하여

320x100

 

지난 글에서와 같이, 선형회귀에서는 예측값과 실제값 사이의 차이,

즉 오차들을 보고 모델의 성능을 결정한다고 언급했습니다.

 

이번에는 이 오차들에 대한 부분입니다.

SSR과 SST에 대한 용어는 공식이 들어있지 않는한,

용어 자체에 대한 정의가 쟁점인 것 같습니다.

 

용어에 대해서 탐구하는 것이 머신러닝이나 회귀분석에서

없어선 안될 요소는 아니기 때문에, 이런 것이 존재한다는 것만

이해하고 넘어가겠습니다.

 

필자는 아래 티스토리(씩씩한 IT 블로그)님의 글을 참고했습니다.

https://sosoeasy.tistory.com/371

 

R² 의 공식에 대하여

 

먼저 SSE부터 볼까요

 

천천히 설명해보겠습니다.

SSE는 Sum of Squares estimate of Error 입니다.

 

일반적으로 설명이 안되는 변동이라고 합니다.

 

SSR은 Sum of Squares Regression 입니다.

 

 

일반적으로 설명할 수 있는 변동 이라고 합니다.

 

SST는 Sum of Squares Total 입니다.

 

 

같은 의미로, SSE와 SST의 합 입니다.

총변동 입니다.

 

 

 

결정계수 R²는 이러한 SSR을 SST로 나눈 것입니다.

분산 기반으로 예측의 성능을 평가하는 것으로, 1에 가까울 수록

예측 정확성이 높은 것이라고 했죠?

 

첫번째 시간의 보험액수 표 분석으로 돌아가,

이제 독립변수별 계수를 확인해보겠습니다.

 

독립변수별 계수 확인 .coef_

 

이전 시간에 모델을 생성했었습니다.

(지난번 정의를 다시 소환합니다)

 

model = LinearRegression()

 

numpy를 임포트하고, 독립변수별 계수를 확인합니다.

 

model.coef_
array([  261.93862039,   339.53866692,   607.57516772, 23878.00428688,
          42.41751384,  -394.0166685 , -1073.15482164,  -973.01969646])

 

이것을 독립변수별로 시리즈(series)를 통해 나눠보겠습니다.

 

pd.Series(model.coef_, index = X.columns)
age                  261.94
bmi                  339.54
children             607.58
smoker             23878.00
sex_male              42.42
region_northwest    -394.02
region_southeast   -1073.15
region_southwest    -973.02
dtype: float64

 

y절편을 구합니다.

 

model.intercept_
-12258.305052625143

 

자 이것을 공식으로 표현해 보겠습니다.

 

 

261.94 × age + 339.54 × bmi + 607.58 × children + 23878.00 × smoker + 42.42 × sexmale + (−394.02) × regionnorthwest + (−1073.15) × regionsoutheast + (−973.02) × regionsouthwest − 12258.305052625143

 

 

모델의 계수를 해석할 때 '부호'의 영향에 유의하셔야 합니다.

부호와 상관없이, 계수의 절대값이 클수록 영향이 크다고 할 수 있고

절대값이 0에 가까울 수록 영향력이 거의 없다고 할 수 있습니다.

 

여러 계수들을 서로 비교할 때, 단순히 절대값이 더 크면 영향이 더 크다고

볼 수 없습니다. 변수마다 스케일이 다르기 때문입니다.

 

아무튼, 이 부분을 명료하게 해주는 작업이 스케일링 작업입니다.

 

모델 배포

실 상황에서 선형회귀 분석은 모델배포 까지 완성되야 합니다만

필자의 실력이 그렇게 까지 우수하지 못한 관계로 간단하게 바꾸겠습니다.

 

streamlit으로 구현하여
머신러닝을 구현한 사이트를 게재합니다.
자세한 과정은 지면이 너무 길어져서 생략하겠습니다.

 

Streamlit

 

app · Streamlit

[링크 전문]

dla9944-streamlit-test-ml-modelapp-x9rwf6.streamlit.app

 

다음번에는 선형회귀의 직선인 회귀분석을 곡선형태로 바꿔주는

로지스틱 회귀(Logistic Regression)을 보겠습니다.

 

 

728x90