이전에는 가설함수, 손실함수, 경사 하강법에 대해서 이론을 설명해왔다.
그럼 이제 앞에서 설명해온 이론을 정리하고 실제 코딩으로 나타내어야 한다.
가설함수
일단 이전에 설명한 가설함수는 하나의 데이터에 대해서 간단하게 설명하였다.
h(x)= θ0+θ1x 가 가설함수이니까 수식으로 나타내면 다음과 같다.
실제로는 이렇게 x(1)부터 x(n)까지 여러개의 데이터가 존재 할 것이고, 배열의 형태 혹은 열거의 형식이 될것이다.
하지만 더 많은 데이터를 다루어야 하기에, 실제의 가설함수를 수식으로 나타내면 다음과 같다.
이렇게 여러개의 데이터가 가설함수에 들어갈것이고, 만약 더 많은 데이터가 있다면 θ(n)까지 존재해야 할 것이다.
손실함수
이전글에서 손실함수에 대해 설명하면서, 각 θ에 대해서 업데이트 하는 수식을 설명했다.
그리고 여기서 y에 대해서도 수식으로 표현하면 위에서 언급한 x와 같은 형태를 띄고 있다.
그리고 이걸 h(x)-y에 대입해서 나타내면 다음과 같다.
그리고 이걸 error이라고 부르면 계산하거나 수식을 나타내는데 훨씬 더 편할것이다.
경사 하강법
이전글에서도 언급했듯이, 경사 하강법은 θ를 계속 업데이트 해나가는 방식이다.
error는 모든 데이터에 대한 예측값과 실제 값의 차이를 저장하고 있는 값이니까 이걸 이용하면 조금 더 간단하게
수식을 표현 할 수 있다.
이전 업데이트 수식이 이렇게 되어있다면, hθ-y부분을 error로 바꾸어 나타낼 수 있다.
일단 θ0에 대해서는 이렇게 바꾸어 볼 수 있다. 시그마 부분은 모든 데이터의 평균을 구하라는 의미이니까,
error의 모든 원소에 대한 평균을 u(error)이라고 표현 할 수 있다.
그럼 θ0는 다음과 같다.
이제 다음에는 θ1 업데이트 수식인데 θ0보다 조금 더 복잡하다. 그 이유는 θ0 뒤에 x(i)를 한번 더 곱해야 하기 때문이다.
θ1에 대한 업데이트 수식은 위와 같이 변경 할 수 있다. 즉 θ0와 θ1에 대한 업데이트 수식을 정리하면 다음과 같다.
물론 지금은 θ1까지만의 설명을 한 것이고, 만약 데이터가 더 많다면 θ(n)까지 계속해서 추가 및 업데이트 수식이 변경 될
것이다. 하지만 출발 및 기본적인 수식은 여기서 추가 되는것이기에 이해를 하고 데이터가 추가 하는것이라면 수식이나
원리를 이해하는데 큰 도움이 될것이다.
가설 함수를 직접 코딩하면 다음과 같다.
여기서 조금 더 추가하면 손실함수도 작성이 가능하다.
그리고 여기서 경사 하강법을 이용하여 그래프를 그리면 다음과 같이 그릴 수 있다.
빨간색 그래프를 보면 계속해서 위치가 변하고, 또 각 해당 값들에 맞춰지는것을 볼 수 있다.
가설함수와 손실함수에서의 값은 너무 적은 값이랑 그래프가 제대로 그려지지 않아 임의로
값을 조금 더 추가해서 그래프를 그렸다. alpha와 beta는 임의로 정한것이니 신경쓰지 않아도 된다.
그리고 학습률은 계속해서 그래프를 그리다보면 더 적어야 되는지, 커야되는지 알게 될것이니 이것은 알아서 조절해야
한다. 또한 반복횟수도 마찬가지이다. 너무 많아도, 적어도 좋은것은 아니다. 데이터가 많으면 물론 정확성은 더 높아질것이다.
다음글에서는 이러한 이론과 코딩을 바탕으로 직접 모델을 생성하는것으로 마무리 지을것이다.
'Mahcine Learning' 카테고리의 다른 글
선형회귀(Linear Regression) 이론 2 - 손실함수(Loss Functiion) 2 (0) | 2023.05.30 |
---|---|
선형회귀(Linear Regression) 이론 2 - 손실함수(Loss Function) 1 (0) | 2023.05.27 |
선형 회귀(Linear Regression) 이론 1 (0) | 2023.05.25 |