코딩일기

[DataScience] 가설함수, 손실함수, 경사하강법(feat. Linear Regression) 본문

Code/머신러닝(ML)

[DataScience] 가설함수, 손실함수, 경사하강법(feat. Linear Regression)

daje 2021. 2. 6. 19:33
728x90
반응형

 

안녕하십니까 다제입니다. 

 

오늘은 선형회귀의 중요한 키워드들을

공부해보고자 합니다. 

 

백그라운드 개념으로 필수적이다고

생각되는 가설, 손실함수 & 경사하강법에

대해서 배워보도록 하겠습니다. 

 

저는 경사하강법을 이해하기 위해

미분과 행렬을 배운다고 해도 과언이 아니라고 생각합니다. 

 


1. 경사하강법 

저희는 모델(함수)를 만들고

MSE or MAE라는 방법으로 성능을 평가합니다.

 

MSE or MAE의 결과 값이

크면 성능이 안좋고

작으면 성능이 좋다는 걸 알 수 있습니다. 

 

그렇다면 우리는 미분을 통해

특정 지점에서의 순간변화율이 0인 지점을 찾는다면 

그 부분이 이 모델에서 성능이 가장 좋은 지점일 것이다. 

미분이란?

 

즉, 우리의 모델과 라이브러리가

고차원의 DataFrame을 계속 미분해가면서

기울기가 가파르지 않는 방향으로

계속 나아가는 것입니다.

 

이렇게 순간변화율이 0인 지점(=모델의 성능이 좋은 지점)을

찾아가는 과정을 우리는 "경사하강법"이라고 합니다.

 

우리의 모델은 경사하강법을 하기 위해

미분 or 편미분의 수학적 개념을

사용합니다. 

출처 : https://librewiki.net/wiki/%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95

 


 

저는 이 글을 쓰면서 

여러개의 곡선이 있는 함수들의 경우

어떻게 성능이 최고인 지점을 찾을까?

하는 생각이 들었습니다. 

 

이러한 fake point들 때문에 

우리의 성능이 test set에서 좋은 효율을 

보이지 않는 것이 아닐까? 하는 생각을 해보았습니다. 

(혹시 아시는 분이 있다면 댓글 부탁드립니다. ) 

 

[2021.02.17 self comment]

위 고민을 하다가 앙상블에 대해서 배우게 되었습니다. 

앙상블은 분산-편향에 따라서 다른 모델을 적용하게 됩니다. 

 

분산이 높고, 편향이 낮은 경우,

Boosting 등의 모델을 이용하여 문제를 해결하고 

 

분산이 낮고, 편향이 높은경우,

Bagging 등의 모델을 이용하여 문제를 해결한다는 사실을 배우게 되었습니다.

 


2. 가설함수 

가설함수란('hypothesis function') ?

데이터에 가장 잘 맞는 선(최적선)을 찾으려고

시도해보는 모든 함수를 의미합니다. 

 

 

-. 일차방정식에서의 가설함수 공식

   * y = ax + b

   ※ 좀 있어보이게 쓰고 싶다! -> h(x) = ⍬0x +  ⍬1

 

-. 다항방정식에서의 가설함수 공식

-. 가설 함수 평가법

  * 평균 제곱 오차(MSE) MSE가 크면
     -> 오차가 큰 것

     -> 정확한 가설함수가 아니다 

     -> 가설함수가 데이터에 잘 안맞는다라는 결론 

 

 -. MSE로 평가하는 이유 : 오차를 부각시키기 위해 음수를 양수로 바꿔주기 위해서!! 

 

 


3. 손실함수 

손실 함수(Loss Function)  J(⍬)는

어떤 가설 함수를 평가하기 위한 함수 입니다. 

 

즉, 저희가 가설로 설계해 놓은 함수가 

과적 데이터와 얼마나 적합한지 적합하지 않다면

얼마나 오차가 있는지를 확인해주는 함수 입니다. 

 

왠지 MSE와 비슷하죠?

네 맞습니다. 

 

선형회귀 경우MSE가 손실함수의 아웃풋입니다.  

 

MSE의 원리는 각각의 데이터에서

가설함수까지의 오차를 제곱하고

모두 더한 후 갯수로 나누어주면 됩니다. 

(MAE는 오차에 절대값을 씌운 것이고 나머지는 MSE와 계산하는 방법이 똑같다)

 

 

-. 가설함수의 성능을 평가하는 손실함수

  * 손실 함수가 작으면 -> 데이터 손실이 작으므로 -> 가설함수가 데이터와 잘 맞는다. 

  * 손실 함수가 크면 -> 손실이 크므로 -> 가설함수가 데이터에 잘 안맞는다.

 


 

 

정리를 해보면

선형회귀는 데이터에 가장 잘 맞는 가설함수를 찾아야 하고

가장 잘 맞는 가설함수를 찾기 위해 손실함수를 가지고 평가를 진행합니다. 

 

평가한 값이 가장 작을 때

머신러닝 모델의 성능이 가장 좋은 것이죠

 

값이 가장 작을때는

미분한 값이 0인 지점인 것이고 

 

그 0인 지점을 찾기 위해 경사하강법을 시행합니다.

(기울기의 변화가 적은 지점으로 조금씩 조금씩 이동함) 

 

 

부디 잘 이해되셨으면 좋겠습니다. 

 

또한, fake point를 피할 수 있는 방법을

아시는 분이 있으시면 댓글 부탁드립니다. 

728x90
반응형
Comments