이제 데이터 공부 안하는 블로그

[파이썬 라이브러리를 활용한 머신러닝] 선형회귀(Linear Regression) 본문

머신러닝

[파이썬 라이브러리를 활용한 머신러닝] 선형회귀(Linear Regression)

공사노비 2021. 9. 17. 16:17

 

제가 '파이썬 라이브러리를 활용한 머신러닝' 읽고 정리한 내용입니다.

 

 

선형회귀(Linear Regression)

집 가격을 예측하는 머신러닝 알고리즘을 만든다고 가정해보자. 우리에게는 집의 크기와 가격정보가 있다. 이 정보를 가지고 모델을 학습시켜서 이후에 모델이 집 크기만 보고도 가격을 예측할 수 있게 만들려고 한다. 어떻게 이것을 할 수 있을까? 여러가지 방법이 있는데 그 중 가장 단순하고 대표적인 알고리즘으로는 선형회귀(Linear Regression) 가 있다. 선형회귀는 데이터에서 가장 잘 맞는 하나의 선을 찾아내는 것이다. 아래 그림에서 동그라미 점들은 데이터이고, 그 점들을 가장 잘 대변해주는 하나의 선을 찾아서 그리는 것이 선형회귀 모델의 목표인 것이다.

 

 

최적선을 찾아내기 위해 다양한 함수를 시도해볼 수 있을텐데 이렇게 다양한 시도를 해보면서 만든 함수 하나 하나를 가설함수(hypothesis funtion)라고 부른다.

 

선형회귀의 가설함수는 식으로 나타내면 y = ax + b  (혹은 hθ(x)=θ0​+θ1​x​)로 나타낼 수 있다. 결국 선형회귀의 목표는 계수 a랑 상수 b를 찾아내는 것이라고 볼 수 있다.

 

 

 

그런데 집의 가격을 정하는 요소는 집의 크기 말고도 많은 것들이 있을텐데, 그것들을 다 입력변수로 받는다면 아래와 같은 식으로 표현할 수 있을 것이다. 여기서 가장 적절한 θ 값을 찾아내는 것이 선형회귀의 목표다. 

 

 

평균 제곱 오차(Mean Squared Error)

그러면 어떻게 데이터에 최적화된 선을 그릴 수 있을까? 평균제곱오차(MSE)를 사용해볼 수 있다.

평균 제곱 오차는 가설함수와 데이터들 간의 오차를 모두 구해서 제곱한 후 더한값을 평균낸 것을 말한다. 오차가 클 수록 최적화된 선을 잘 그리지 못한 것이라고 볼 수 있다. 오차에 제곱을 하는 이유는 1. 오차값이 양수일 수도 있고, 음수일 수도 있는데 이러면 계산하기가 힘드니까 모든 오차를 양수로 통일하기 위해서이다. 그리고 2. 오차값을 부각시키기 위해서도 있다. 아래는 평균제곱오차를 표현한 수식이다.