본문 바로가기
Mahcine Learning

선형회귀(LinearRegression) 가설함수, 손실함수, 경사하강법 설명

by double-step 2023. 6. 5.
728x90
반응형
SMALL

이전에는 가설함수, 손실함수, 경사 하강법에 대해서 이론을 설명해왔다.

그럼 이제 앞에서 설명해온 이론을 정리하고 실제 코딩으로 나타내어야 한다.

 

가설함수

일단 이전에 설명한 가설함수는 하나의 데이터에 대해서 간단하게 설명하였다.

h(x)= θ0+θ1가 가설함수이니까 수식으로 나타내면 다음과 같다.

가설함수

실제로는 이렇게 x(1)부터 x(n)까지 여러개의 데이터가 존재 할 것이고, 배열의 형태 혹은 열거의 형식이 될것이다.

하지만 더 많은 데이터를 다루어야 하기에, 실제의 가설함수를 수식으로 나타내면 다음과 같다.

가설함수 실제

이렇게 여러개의 데이터가 가설함수에 들어갈것이고, 만약 더 많은 데이터가 있다면 θ(n)까지 존재해야 할 것이다.

 

손실함수

이전글에서 손실함수에 대해 설명하면서, 각 θ에 대해서 업데이트 하는 수식을 설명했다.

θ0 업데이트 수식
θ1 업데이트 수식

그리고 여기서 y에 대해서도 수식으로 표현하면 위에서 언급한 x와 같은 형태를 띄고 있다.

y 수식 표현

그리고 이걸 h(x)-y에 대입해서 나타내면 다음과 같다.

h(x)-y 수식

그리고 이걸 error이라고 부르면 계산하거나 수식을 나타내는데 훨씬 더 편할것이다.

error

 

경사 하강법

이전글에서도 언급했듯이, 경사 하강법은 θ를 계속 업데이트 해나가는 방식이다.

error는 모든 데이터에 대한 예측값과 실제 값의 차이를 저장하고 있는 값이니까 이걸 이용하면 조금 더 간단하게

수식을 표현 할 수 있다.

θ0 업데이트
θ1 업데이트 수식

이전 업데이트 수식이 이렇게 되어있다면, hθ-y부분을 error로 바꾸어 나타낼 수 있다.

일단 θ0에 대해서는 이렇게 바꾸어 볼 수 있다. 시그마 부분은 모든 데이터의 평균을 구하라는 의미이니까,

error의 모든 원소에 대한 평균을 u(error)이라고 표현 할 수 있다.

그럼 θ0는 다음과 같다.

θ0 업데이트 수식 정리

이제 다음에는 θ1 업데이트 수식인데 θ0보다 조금 더 복잡하다. 그 이유는 θ0 뒤에 x(i)를 한번 더 곱해야 하기 때문이다.

θ1 업데이트 수식

 θ1에 대한 업데이트 수식은 위와 같이 변경 할 수 있다. 즉  θ0와  θ1에 대한 업데이트 수식을 정리하면 다음과 같다.

물론 지금은  θ1까지만의 설명을 한 것이고, 만약 데이터가 더 많다면  θ(n)까지 계속해서 추가 및 업데이트 수식이 변경 될

것이다. 하지만 출발 및 기본적인 수식은 여기서 추가 되는것이기에 이해를 하고 데이터가 추가 하는것이라면 수식이나 

원리를 이해하는데 큰 도움이 될것이다.

 

가설 함수를 직접 코딩하면 다음과 같다.

가설함수 코딩

여기서 조금 더 추가하면 손실함수도 작성이 가능하다.

손실함수 코딩

그리고 여기서 경사 하강법을 이용하여 그래프를 그리면 다음과 같이 그릴 수 있다.

경사 하강법 코딩
경사 하강법 그래프

빨간색 그래프를 보면 계속해서 위치가 변하고, 또 각 해당 값들에 맞춰지는것을 볼 수 있다.

가설함수와 손실함수에서의 값은 너무 적은 값이랑 그래프가 제대로 그려지지 않아 임의로

값을 조금 더 추가해서 그래프를 그렸다. alpha와 beta는 임의로 정한것이니 신경쓰지 않아도 된다.

그리고 학습률은 계속해서 그래프를 그리다보면 더 적어야 되는지, 커야되는지 알게 될것이니 이것은 알아서 조절해야 

한다. 또한 반복횟수도 마찬가지이다. 너무 많아도, 적어도 좋은것은 아니다. 데이터가 많으면 물론 정확성은 더 높아질것이다. 

 

다음글에서는 이러한 이론과 코딩을 바탕으로 직접 모델을 생성하는것으로 마무리 지을것이다.

728x90
반응형
LIST