인프런 - 강의/나도 만들어본다 AI 앱 (tensorflow+android)

4 - 정말 간단한 Linear regression 이론

개복치 개발자 2020. 3. 3. 12:12

머신러닝 강의를 듣나보면 linear regression, classification 이런 단어들이 나옵니다.

 

classification은 분류인 것 같은데 regression은 뭘까? 라고 의문이 듭니다.

 

저는 이 regression이라는 말을 들었을 때 이게 도대체 무슨소리인가 싶었는데 애를 찾아보면 위키백과에서

 

- 회귀

회귀 분석은 관찰된 연속형 변수들에 대해 두 변수 사이의 모형을 구한뒤 적합도를 측정해 내는 분석 방법이다.

 

- 선형 회귀

선형 회귀 종속 변수 y가 한개 이상의 독립 변수 x와의 선형 상관 관계를 모델링하는 회귀분석 

 

라고 나옵니다. 쉽게 말하면 그래프입니다. 실생활을 예로 들어보면

 

- 아들키 -> 아빠키

 

예를 들면 아들의 키가 큽니다. 그러면 아빠도 클 것 이다 라고 예상할 수 있습니다.

 

아빠키(y) 아들키(x)
180 190
173 186
165 176
160 168
157 164

 

얘를 그래프로 그리면

 

 

이렇게 점이 찍힙니다.

 

얘를 선을 그어보면

 

여기 라인을 보면 H(x) = Wx + b 와 같은 일차함수 형태로 나타낼 수 있습니다.

 

그런데 데이터가 많아지면서, 저런 라인을 아래와 같이 여러개를 그을 수 있겠죠?

 

 

그러면 어떤 라인을 쓰는 것이 가장 효율적인가? 라는 말이

어떤 라인을 쓰는 것이 머신러닝의 정확도가 높은가? 라는 말과 같다고 생각할 수 있습니다.

 

이 가설이 이 라인에서 얼마나 떨어져 있는가? 에 대한 값을 알아봅니다.

 

아까 봤던 저 위에 애들의 점을 확대해보겠습니다. 

 

 

여기 보시면 저 점들이, 라인이랑 조금조금씩 떨어져 있습니다.

 

그래서 얘들이 얼마나 떨어져있는지 주황색 선으로 나타내 봤습니다.

 

 

 

그래서 여기서 드는 생각이, 저 주황색 선을 다 더한 값이 가장 작은 선을 구하면, 최적의 머신러닝 모델을 만들 수 있지 않을까? 라고 생각했습니다.

 

그러면 저 선을 식으로 나타내서 처리해줘야 하는데, 식으로 표현해보면 H(x) - y 를 다 더하면 될 것 같은데, 이렇게 그대로 하면 음수가 나올 수도 있으니, 제곱을 해 줍니다.

 

만약에 얘가  N개라면 아래와 같이 식이 나눠지게 됩니다.

 

자 그러면 얘를 좀 더 수학적으로 나타내봅니다.

 

 

자, 그러면 위에 보이는애가 cost함수입니다.

 

그럼 얘를 최소화하면 될 것 같은데, 어떻게 최소화하지? 라는 의문이 드실 수 있습니다.

 

그런데 쟤를 보다보면 예전에 봤던 애와 비슷하게 생겼습니다. 

 

우리가 학교다닐 때 봤던 수학 공식과 비슷하게 생겼는데

 

이런 애를 그래프로 그리면 아래와 같이 생겼는데 

 

 

 

 

얘를 최소화하는 부분을 찾는 것 입니다.

 

그렇다면, 어떻게 해야할까... 하고 보니, 경사도가 가장 작은 구간을 찾으면 됩니다.

 

 

 

이 경사도가 가장 작은 부분을 찾는 방법을 경사하강법(gradient descent algorithm) 이라고 합니다.