AI 공부 저장소

Linear Regression (선형 회귀)의 기본 개념(Loss, MSE)과 코드구현 본문

Artificial Intelligence/ML&DL

Linear Regression (선형 회귀)의 기본 개념(Loss, MSE)과 코드구현

aiclaudev 2022. 2. 3. 18:32

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw

 

 

① Linear Regression (선형 회귀)란?

Linear Regression은 Machine Learning 알고리즘 중, 가장 기초적이면서도 효과적으로 사용되는 알고리즘입니다.

Input과 Output이 수치형 데이터인, 즉 얻고자 하는 결과가 '숫자'일 때 사용됩니다.

 

What would be the grade if I study 4 hours?

위와 같은 것이 궁금할 때, Linear Regression을 사용할 수 있습니다. (즉, 공부한 시간에 따른 성적을 예측하고자 하는 것입니다.) Input 즉 x는 공부한 시간이 될 것이고, Output 즉 y는 그에 따른 성적이 되겠죠. 

 

그림 아래에 Training dataset, Test dataset 이라는 용어가 보이는데요, 어떠한 모델을 구축할 땐 자신이 가진 데이터를 미리 학습에 사용할 Training dataset, 평가에 사용할 Test dataset으로 나누어놓는 것이 중요합니다. 이렇게 미리 분리해놓지 않고, 학습에 사용한 데이터를 평가에 그대로 사용하게 되면 모델의 정확도가 높게 나올 수 밖에 없기에 객관적인 평가라고 할 수 없습니다.

 

 

 

② Linear Regression의 기본 형태

 위 수식이 Linear Regression의 기본 형태입니다. 알다시피, 일차 함수 즉 직선의 형태를 띠고 있네요. 

y 위에 hat이 붙어있는 것을 볼 수 있는데요, 일반적으로 통계학이나 ML 등에서 hat의 의미는 점 추정치를 의미합니다.

이때 중요한 키워드는 '추정' 입니다. 저희가 가지고있는 데이터를 통해 공부시간에 따른 성적의 Linear Regression 모델을 완성시켰다고 합시다. 4시간 공부했을 때의 성적이 궁금하므로 x에 4를 넣었을 때, 결과값이 나올텐데 이 결과값은 어디까지나 '추정값'이지, '무조건 이 성적이 나온다'는 것이 아닙니다. 따라서, 이처럼 '추정'이라는 개념을 수식에선 hat(^)으로 표현합니다.

 

모델을 구축할 때 가장 중요한 것은, 일차 함수의 기울기인 w를 추정하는 것입니다. (만약 x*w + b와 같이 y절편이 있는 형태라면 y절편 역시 추정해야겠죠.) w를 추정하기 위해 먼저 생각해보아야할 것은, '좋은 Linear Regression 모델이란 무엇인가' 겠죠? 이는 당연히 '가장 정확한 Linear Regression 모델'입니다. '정확한'은 추상적인 개념이므로, 이를 수학적으로 표현하기 위해 Training Loss(error)라는 개념이 등장합니다.

 

 

 

③ Training Loss (error) 란?

위 세개의 선 중 가운데 파란선이 저희가 알아내고자 하는 '가장' 정확한 Linear Regression입니다.

컴퓨터는 위 파란선을 알아내기 위해 랜덤한 w 값으로부터 출발하여 Training Loss(error)가 최소가 되는 w를 찾아갑니다. 이 때, Training Loss(error)는 위 수식과 같이 (추정값 - 실제값)의 제곱입니다. 통계학이나 ML 내 여러 이론에서 제곱을 하는 경우가 꽤나 많은데요, 첫 번째 이유는 항상 양수만을 고려하기 위해, 두 번째 이유는 차이가 작은것보다 큰것에 대해 더 가중치를 주기 위함입니다.  그리고, 이 error가 최소가될 때의 w를 기울기로 가지는 함수가 이전에 말씀드린 '가장 정확한 Linear Regression' 모델입니다.

 

위 표는 w=3으로 설정하였을 때의 Linear Regression 모델로부터 얻은 Loss입니다. Points, y는 실제값이고 Prediction, y(hat)은 w=3일때 x값에 따른 y의 추정치입니다. 위와 같은 표를 여러 w에 대해 작성하여 구한 Loss는 아래와 같습니다.

 

표의 맨 아래에 MSE라는 것을 보실 수 있는데요, 이는 모든 데이터에 대해 loss를 구한 후 더하고 평균을 낸 것입니다. Mean Square Error의 약자이고 자주 등장하는 용어이니 숙지해놓으면 좋을 것 같습니다.

w = 2 일때를 보시면 Loss가 모두 0이므로 MSE 또한 0이되네요. 따라서, Loss가 최소가 되는 w값은 2이므로 아래와 같은 수식이 최적의 Linear Regression 모델이라고 할 수 있습니다. (대부분의 경우, MSE=0인 경우는 거의 없습니다. 단지 MSE가 최소가 되는 w값을 찾는 것이 중요합니다.)

y(hat) = 2*x

 

 

 

④ Loss Graph

Linear Regression에서 Loss가 최소가 되는 w값을 찾는 것이 중요하다는 것을 아셨을겁니다.

지금 다루고 있는 예시는 손으로도 직접 최적의 w를 찾을 수 있을만큼 간단한데요, 대부분의 경우는 그렇지 않기에 

Loss Graph 라는 것을 통해 최적의 w를 구하게됩니다. 

위 그래프를 통해 직관적으로 'w = 2일 때, Loss가 최소겠구나!' 하고 아실 수 있을 겁니다.

 

 

 

⑤ 코드 구현

 

 

 

 

 

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw