이번 포스팅에서는

머신러닝으로 선형 회귀 문제를 푸는 과정에 대해 설명해보겠습니다.

 

그림1

 

그림1에서 좌측의 표가 주어진 데이터라고 생각을 해 봅시다.

앞서 머신러닝은 "데이터를 가장 잘 설명하는 모델(함수)을 찾는 것"이라고 정리했습니다.

이 정리를 선형 회귀 문제에 적용시켜 보면, 

X데이터와 Y데이터 간 관계를 정의할 수 있는 선형 함수

즉, 그림1의 우측 그래프에서 빨간 직선 (Y = aX + b)을 구하는 것이라고 할 수 있습니다.

따라서 이 함수의 기울기(a)와 절편(b)를 구하는 문제가 되는 것입니다.

 

그림2

 

함수(H)의 정보에 대해 아는 것이 없으므로

먼저 이 함수의 기울기가 -1, 가중치가 100이라고 가정해봅시다.

그러면 함수는 H(x) = -X + 100 꼴(그림2 그래프) 이 되고,

각 X입력에 대해 예측값을 계산해 볼수 있습니다.(그림2 테이블)

 

그림3

 

이때, 함수의 예측값(Prediction)과 실제 Y값(Truth)의 차이를 Loss라고 정의하며,

이 Loss의 크기를 통해 가정한 함수가 실제 데이터와

얼마나 괴리가 있는지파악 할 수 있습니다. (그림3)

즉, Loss가 클수록 실제 데이터 분포와 차이가 심한 것이다 라고 생각할 수 있습니다. 

 

모든 X값에 대해 Loss를 계산하고 값을 제곱하여 평균하여 전체 데이터에 대한

Mean Square Error Loss를 계산합니다.

 

그림4

 

이 Loss값이 클수록 가중치 (a, b)를 크게 변화시키고,

작으면 작게 변화시키는 방식으로 Loss가 작은 값으로 수렴할 때까지

이 과정을 반복 해나가는 것입니다.

함수의 기울기가 -2, 절편이 1이 되었을 때,

데이터를 매우 가깝에 추종하는 것을 볼 수 있습니다. (그림4)

 

그리고 이 과정을 '학습'이라고 합니다.

 

그림5

 

마지막으로, 찾아낸 함수 H(x) = -2x-1

학습 데이터가 아닌 테스트 데이터 "35"를 입력으로 주었을 때,

주어진 데이터들과 유사항 경향성을 갖는 

적절한 기대값을 구할 수 있게 됩니다. 

 

다음 포스팅에서는 가중치를 업데이트 하는 방법인

경사하강법(Gradient Descent Algorithm)과 응용 알고리즘들에 대해 

포스팅 하겠습니다.

+ Recent posts