[Regression] 머신러닝 회귀분석 개요

회귀 분석은 결과 또는 반응 변수가 다른 변수에 의해 예측될 수 있도록 두 개 혹은 그 이상의 양적변수의 관계를 분석하는 통계학적 방법론이다. 아주 쉽게, 두 양적 변수 사이에 어떤 관계가 있는지를 통계학적으로 알아보는 것이다.

 

간단히 두 개의 변수 사이에는 함수적 관계와 통계적 관계가 존재한다. 함수적 관계란 주어진 X값에서 어떤 함수가 이에 상응하는 Y 값을 가져오는 것을 말한다. 가장 단순한 일차함수의 경우이다. 이 때, 주어진 X값에서 상응하는 Y값은 직선상에의 한 점으로 나타난다. 

그러나 통계적 관계란 함수적 관계와 달리 완벽한 것이 아니다. 일반적으로 통계적 관계의 관측치는 정확히 도출한 직선 상에 위치하지 않는다. 여기서 실제치와 예측치의 차이인 오차가 발생하는 것이다. 

 

데이터 사이언스 분야에서는 결과값을 알고있는 (정답이 정해진) 기존의 데이터를 학습하여 이를 토대로 결과값을 모르는 새로운 데이터의 결과값을 예측하는 지도학습의 한 분야로 자리 잡고 있다. 

 

ML 지도학습의 종류 : 분류와 회귀

  • 분류(Classification) : Catogory값(이산값) → 클래스 레이블 예측 : 결정 경계의 설정
  • 회귀(Regression) : 숫자값(연속값) → 연속적인 출력 값 예측 : 회귀 계수의 설정

회귀 개요

$Y =\beta_0+\beta_1X_1+\beta_2X_2+\cdot\cdot\cdot+\beta_nX_n+\epsilon $

$Y$: 종속변수 / $\beta_0$ : 절편 / $\beta_i$ : 독립변수의 값에 영향을 미치는 회귀계수(기울기) / $X_i$ : 독립변수(피처) 

머신러닝 회귀 예측의 핵심 : 주어진 피처와 결정 값 데이터 기반에서 학습을 통해 최적의 회귀계수를 찾는 것

 

단순 선형 회귀 (Simple linear regression)

simple regression

위의 그래프는 하나의 특성(설명변수, feature)과 연속적인 변수인 target(반응변수) 사이의 관계를 모델링한 것이다. 

단순 선형 회귀로 $ y = w_0 + w_1x $ 식에서 $w_1$는 특성 $x$의 가중치를 나타낸다. 이 때, 특성과 타깃 사이의 관계를 나타내는 선형 회귀식의 가중치를 학습하는 것이 머신 러닝 회귀의 목적이다. 

통계학에서는 회귀 계수라고 하며 회귀 방정식의 기울기를 나타낸다. 직관적으로 X값이 한단위 변화할 때 Y값이 변화하는 정도라고 받아들이면 된다. 특성의 변화에 따라 가중치로 얼마로 줄 것인지 학습하여 추정하는 것이다. 

도출한 회귀식으로 얻은 예측값과 실제값의 차이는 오차, 잔차(residual), 오프셋(offset)이라 하며 앞으로 ML에서의 모델 성능 지표에서 다양하게 사용될 것이다. 

 

다중 선형 회귀 (Multiple lienar regression)

다중 선형 회귀는 단순 선형 회귀에서 특성들이 추가된 형태이다. 특성이 많은 다중 선형 회귀의 경우 3차원 이상이므로 시각화하기 어렵다. 특성의 갯수 많큼 가중치의 갯수를 가지며 이 때의 가중치를 학습하여 도출한다.

 

회귀의 유형

회귀 계수의 결합 :  주로 선형회귀

 

  • 선형 회귀 : 일차 함수
  • 비선형 회귀 : 일차 함수 외의 형태

독립 변수의 개수 :주로 다중 선형회귀

 

  • 1개 : 일반 선형 회귀 (simple linear regression)
  • n개 : 다중 선형 회귀 (multiple linear regression)

선형 회귀의 종류

일반 선형 회귀 : 예측 값과 실제 값의 RSS(Residual Sum of Squares)를 최소화 하는 회귀계수를 최적화, 규제는 적용 X

릿지(Ridge) : 선형 회귀에 L2 규제를 추가한 모델

라쏘(Lasso) : 선형 회귀에 L1 규제를 적용한 방식

엘라스틱넷(ElasticNet) : L2, L1 규제를 함께 결합한 모델

로지스틱 회귀 : 분류에 사용되는 선형 모델 ex) 감성분석, 생존분석 등

과적합 : 특정 데이터에만 지나치게 fit 됨으로써 다른 데이터의 예측 성능이 떨어지는 문제

규제 : 과적합을 방지하기 위해 일부러 주는 noise → 회귀 모델을 보다 유연하게 만들어 주는 것

 

RSS와 비용함수

RSS(sum of squres residual)

 

  • 오류 값의 제곱을 구해서 더함
  • 회귀 머신러닝의 핵심 : RSS를 최소로 하는 회귀 계수를 학습을 통해서 찾는 것 
  • 비용함수(손실함수)의 최소화 하는 회귀 계수를 구하는 것 → 회귀의 비용함수 : RSS

$ RSS(w_0,w_1) =\frac{1}{N}\sum_{i=1}^n(y_i-(w_0+w_1x_i))^2 $

 

경사하강법 : 비용의 최소화

많은 회귀계수를 추정하는 다중 회귀의 경우 경사하강법의 점진적인 반복 계산을 통해 회귀계수 w를 업데이트 하면서 손실함수가 최소값이 되는  최적의 w를 도출한다.

→ 어떻게 하면 오류가 작아지는 방향으로 w 값을 보정하는가?

 

비용함수의 편미분   $R(w_0,w_1)$

 

$\frac{\partial R(w)}{\partial w_1}=-\frac{2}{N}\sum_{i=1}^Nxi*(실제값_i-예측값_i)$

$\frac{\partial R(w)}{\partial w_0}=-\frac{2}{N}\sum_{i=1}^N(실제값_i-예측값_i)$

 

학습률($\eta$) : 위의 편미분 값이 너무 클 경우에 보정계수 $\eta$를 곱함

 

새로운 $w_1$ = 이전 $w_1-\eta\frac{2}{N}\sum_{i=1}^Nxi*(실제값_i-예측값_i)$

새로운 $w_0$ = 이전 $w_0-\eta\frac{2}{N}\sum_{i=1}^N(실제값_i-예측값_i)$

 

경사 하강법 정리 

1. $w_0, w_1$를 임의의 초기값으로 설정하고 첫 비용 함수의 값 계산

2. 회귀계수 $w_0,w_1$를 위의 과정에 따라 새로운 값으로 업데이트 한 뒤 비용 함수값 다시 계산

3. 더 이상 비용함수의 값이 감소하지 않을 때 까지 반복