Linear Regression(선형 회귀)란?

머신러닝은 지도학습과 비지도학습으로 나눠지고, 지도학습은 분류와 회귀(예측)으로 나눠진다. 우리는 이 글에서 회귀의 대표적인 알고리즘인 Linear Regression을 알아보고자 한다.

Q: 당신은 이 그림의 별을 보고 어떤 식으로 나눴으면 좋겠는지 말해보시오.

대부분 별 모양을 중심으로 어떠한 선을 그릴 것이다. 그게 직선일수도 원일수도 곡선일수도 있다.

하지만 여기서 설명할 Linear Regression(선형 회귀)는 말 그대로 '선형'이다. 직선 형태의 함수를 그어 예측하는 것을 말한다.

선형회귀(Linear Regression)

앞서도 말했듯이 별들 사이로 간단한 직선을 그어 '예측'하는 것이 선형 회귀이다.

이렇게 regression(회귀)의 가장 큰 목적은 실제 데이터를 바탕으로 모델을 생성해서, 다른 입력(input) 값을 넣으면 발생할 출력(ouput) 값을 예측하는 데 있다. 그리고 사람이 가장 직관적으로 생성할 수 있는 모델을 선(line)이다. 이런저런 선을 그어가며 가장 오차가 적은 모델을 찾는 것이 곧 'Linear Regression'이다.

수학적인 개념으로 비유하자면, 가장 일반적인 함수인 y = mx + b가 있다고 가정해보자. 선형회귀에서는 y가 곧 output이 될 것이고, x가 input이 될 것이다. 그리고 우린 x를 활용해 y를 예측하기 위해서 m과 b를 구할 것이다. 그리고 이 가장 적합한 m과 b를 구하는 것이 오차를 줄이는 방법이자 선형회귀 모델의 핵심이다.

 


 

데이터와 선 간의 차이, 오차(loss)

선형회귀의 오차(Loss)

먼저 오차는 손실과 비슷한 개념이고 loss라고도 부른다.

좋은 회귀분석 모델을 세우기 위해서는 오차를 최소화하는 것이 필요하다. 위 그림처럼 별과 직선사이에는 2, 3, 5, 7처럼 거리가 있다. 그리고 이 오차에는 양수, 음수의 영향을 받지 않도록 하기 위해 제곱을 해준다. (2, 3, 5, 7) -> (4, 9, 25, 49) 가 되는 것이다. 이런 방식으로 오차를 구하는 것이 평균 제곱 오차(mean squared error, mse)이다. 선형회귀에서 가장 일반적으로 많이 쓰이는 방법이 이 평균 제곱 오차(mse)이다. 그 이외에도 여러 방법들이 있지만 지식을 쌓고 다시 공부하도록 하자.

선형회귀 모델의 목표는?? -> 데이터들과 직선의 오차를 최소화는 것 -> 직선의 기울기(m)과 b(절편)값을 찾는 것이다.

 


 

손실을 최소화 하는 법, 경사하강법(Gradient Descent)

비용 함수 Cost(W)

앞서도 말했듯이 오차를 최적화하는 것이 핵심이라고 한다. 그리고 이 오차를 최적화하는 것을 Optimizer라고 하며, 최적화 알고리즘이라고도 부른다.

그리고 이 Optimizer를 통해 적절한 m과 b를 구하는 것이 학습(training)이라고 부른다. 여기서는 가장 기본적인 optimizer 방법인 경사 하강법(Gradient Descent)를 알아보고자 한다. 머신 러닝에서는 m(기울기)을 W라고 부르며 가중치라고도 부른다. 그래서 앞으로는 W라고 부르고, 기울기가 지나치게 높거나 낮을 때 오차는 위 그림과 같이 오차가 커지게 된다. 사실 b(절편, 편향) 또한 영향이 있으나 단순히 y = Wx라는 가설을 세우고 알아보고자 한다.

비용 함수의 값 cost(W)는 위 그림과 같이 볼록한 함수의 모양이다. W가 지나치게 크거나 같을 때 오차가 무한대로 커지는 형태고 적절한 W값을 통해 그 오차는 작아진다. 그리고 경사하강법은 이 적절한 W값을 찾아내는 것이다.

어떻게 찾아낼 수 있을까? 한 번 골똘히 생각해보자. 동그란 원이 함수를 타고 점점 내려가면서 Cost값이 가장 작은 지점으로 움직일 것이다. 그리고 그 과정속에서 무수히 많은 미분을 거치며 미분값을 줄여나갈 것이다. 그리고 기울기가 0인 지점에서 멈출 것이고, 그 때까지 무수히 많은 미분과정을 거칠 것이다.

 


 

최적의 학습속도와 학습의 질, learning late

learning late

경사 하강법 과정에서 동그란 원이 움직이는 거리를 조정할 수 있다. 그것이 곧 learning late이고 학습률이다. learning late가 왜 중요하냐면, 값을 지나치게 크거나 작게 조정하면 적당한 값을 찾아 내지 못하거나, 시간이 오래 걸린다. 그래서 효율적으로 learning late를 조정해서 최적의 모델을 구축해야 할 필요가 있다.

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기