본문 바로가기
머신러닝과 딥러닝/기초 이론

선형 회귀(Linear Regression)란?

by Bentist 2020. 1. 30.

* 김성훈 교수님의 유튜브강의를 토대로 작성되었습니다.

 

Linear regression

선형 분석은 영국의 유전학자 Francis Galton이 유전의 법칙을 연구하다 나온 것에 기인하게 된다. 연구의 내용은 부모와 자녀의 키 사이의 관계였는데 아버지와 어머니의 키의 평균을 조사하여 표로 나타낸 결과 부모의 키가 작든 크든 자녀들의 키는 그 세대의 평균으로 돌아가려는 경향(회귀)이 있다는 것을 발견하였다. 

이후 다른 통계학자들에 의해 독립변수와 종속변수가 선형적인 관련성이 있다는 전제하에, 주어진 데이터들을 대표하는 하나의 적합한 선을 찾는 것이 회귀분석의 목적이 되었다.

 

이 선형 회귀 분석을 머신러닝에서는 어떻게 사용할까?

ex. 다른 학생들의 공부시간과 시험 점수를 학습시키고 나서, 과연 7시간 공부한 학생은 몇점이 나올 지를 예측

    이것을 Linear regression 모델로 예측한다는 것이다.

Linear regression 모델로 linear하게 Hypothesis(가설)을 세운다는 것은 데이터들에 잘맞는 linear(선)을 찾는다는 것.

Hypothesis

H(x) = Wx + b 에서 H(x)는 가설이고, W는 기울기, b(bias)는 절편에 해당한다.

 

그럼 어떤 선이 가장 잘 맞는 선인지 알아낼 수 있을까?

가설이 나타내는 linear의 점과 실제 데이터 점과의 거리를 비교해서 둘의 거리 차이가 가까우면 좋은거다.

여기서 실제 데이터가 우리가 추정한 모델(linear 회귀식)로부터 떨어진 차이를 잔차(Residual)라고 하는데, 이 잔차를 최소화하는 회귀선을 추정해 기울기와 절편을 찾게 된다.

 

# 오차: 모집단에서 얻은 회귀식을 통해서 얻은 예측값과 실제 관측값의 차이

# 잔차: 표본집단에서 얻은 회귀식을 통해서 얻은 예측값과 실제 관측값의 차이

cf. 최소자승법(LSM)

: 오차를 수정하는 가장 단순한 모델로, 예측값과 실제 데이터의 오차의 제곱의 합이 최소가 되는 해를 구하는 방법

여기에서 오차의 평균을 구하면 이것을 평균제곱오차(Mean Square Error)라고 하며 cost function이 되는 것이다.

 

아래는 이 거리(잔차)를 측정하는 cost(loss) function이다.


여기서 cost가 가장 작은 값을 갖는 W와 b를 찾는 것이 linear regression 모델이다. 
minimize cost을 찾으려면 그럼 어떻게 할까?


-> Gradient decent algorithm을 이용 

 

계산 편의상 절편 b를 없애고, Simplified hypothesis를 사용해서 cost를 최소화하는 값을 찾을 것이다.

 

ex. 최소의 cost가 되는 W는?

위의 x, y 데이터에서 W=1일 때, cost는 0이 되고 x에 대한 y좌표가 정확하게 일치한다는 것이다. (y = x)

이것을 그림으로 그려보면 아래와 같다.

위 그래프는 W값에 따라 Cost를 나타낸 그래프이다. 밥그릇을 엎어놓은 그림 같다고해서 Convex하다고 말한다.

그럼 기계적으로(컴퓨터가 스스로) 어떻게 최소가 되는 W를 구할 수 있을까?

-> Cost함수를 미분하여 구한다. 그럼 수식은 다음과 같다.

  1. W : 첫번째 W로서, 우리가 맨처음 초기화한 상수이다. 초기값으로 아무 값이나 넣어도 상관없다. Gradient를 태워서 비용을 최소로 만드는 W로 점점 업데이트 될 것이다.
  2.  : 학습계수(Learning Rate)로서, 학습속도를 조절하는 상수 (우리가 설정)

현재의 W에서 미분한 cost함수빼면 업데이트 된 W의 위치가 나오게 된다. 

미분한 cost함수가 플러스 값이면 W - ( + )가 되어 그래프의 왼쪽 방향으로 이동시켜 경사 아래로 내려가게 하고,

미분한 cost함수가 마이너스 값이면 W - ( - )가 되어 그래프의 오른쪽 방향(+)로 이동시키게 된다.

이처럼  Gradient Descent Algorithm은 임의의 점에서 W와 b값을 조금씩 변화시켜서 계산할 수 있는 지점들 중에서 Gradient(기울기)가 가장 많이 감소된 지점을 찾아서 움직인 후 같은 과정을 계속 반복해서 최종적으로 Cost Function(비용 함수)의 최소값이 위치한 지점으로 움직이게 하는 것이다.

 

https://dailyworker.github.io/Linear_regression/

댓글