선형회귀 (Linear Regression)
이번 글에서는, 선형회귀 (Linear Regression)에 대한 개념을 알아보려고 한다.
선형회귀란, 위 그래프를 보면 알 수 있듯이, x와 y의 선형적인 관계를 구해 값을 예측하는 것이다.
x는 변수이므로 어떠한 값이든 적용될 수 있지만, 기울기 a와 절편 b는 모르는 상태이다.
그 말은 즉, 기울기와 절편의 값을 알게 된다면, 원하는 x값을 대입했을 때 y값을 얻을 수 있다는 말과 동일하다.
중학교 수학 과정에서 배운 방정식 (y = ax+b) 개념을 적용하여 이해하면 쉽다.
인공지능에서는 방정식에서의 기울기 a를 w(weight)라는 변수로 표현하며, 가중치 또는 계수라고 부르고,
b(bias)는 수학에서와 동일하게 절편이라고 부른다.
그렇다면 가중치와 계수를 어떻게 구할 수 있을까?
선형회귀에서는 가중치와 절편을 평균제곱오차 (Mean Squared Error - MSE)를 최소화하는 방법으로 구할 수 있다.
평균제곱오차란, 데이터의 오차를 제곱하여 데이터의 개수만큼 나눈 값을 의미한다.
조금 더 쉽게 이해할 수 있도록, 그래프에서 오차가 5인 점(dot)을 살펴보자.
실제 데이터의 값은 9이지만, 방정식은 4라고 인지하고 있다. 이럴 경우, 오차는 +5가 된다.
그 다음으로 오차가 -2인 점을 살펴보면, 실제 값은 3인데 방정식에서는 5라고 인지하고 있다.
이렇게 오차는 음수가 될 수도 있고, 양수가 될 수도 있기 때문에 오차에 제곱을 해주는 것이며,
오차의 평균치를 구하기 위해 데이터의 개수로 나누어 주는 것이다.
따라서, 이 오차를 최소화하는 방정식을 구한다면, 우리는 y값을 예측할 수 있는 최적의 모델을 만들어낼 수 있다.
어느정도, 이해가 됐다면 예시를 통해 선형회귀를 더 확실히 알아보도록 하자!
예를 들어, 많은 양의 생선 무게와 길이 *데이터셋(Data Set)을 가지고 있는 상태에서,
특정 생선의 길이만으로 이 생선의 무게가 몇g 인지 알아보고 싶다고 가정해보자.
*(데이터 모음을 데이터셋 (Data Set)이라고 한다.)
일반적으로 생선의 길이가 길 수록 무게는 많이 나갈 것이다.
즉, 비례관계라는 것이다.
그렇다면 생선의 길이를 구하는 임의의 방정식 (길이 = w * 무게 + b) 을 세울 수 있게 된다.
생선의 데이터도 있을 뿐더러, 방정식 (길이 = w * 무게 + b) 까지 알고 있으니, 이제 인공지능에게 학습을 시켜 평균제곱오차를 최소화하는 최적의 w(가중치)와 b(절편)를 찾아내기만 하면 된다.
그럼 자연스럽게 생선의 무게만으로 길이까지 예측할 수 있을 것이다.
파이썬의 케라스 라이브러리에서는 데이터셋을 입력값으로 주면, 학습을 통해 최적의 가중치와 절편을 찾아주는 함수를 제공한다.
다음 글에서는, 생선의 데이터를 통해 직접 생선의 무게를 예측할 수 있는 모델을 만들어보도록 하자.
(이해가 다소 힘들거나, 틀린 부분이 있다면 댓글 부탁드리겠습니다! 😊)
💖댓글과 공감은 큰 힘이 됩니다!💖